2017-09-04 1 views
0

저는이 컬 스크립팅에서 상당히 새로운 것으로, 특정 사이트를 공격 할 때 값과 같은 토큰에서 텍스트를 붙여 넣을 방법을 찾고 있습니다. Curl - grep을 사용하여 가치를 인쇄하십시오.

현재 내가 가진 :

라는 파일에 아래의 값을 기록
echo $a_opensite | grep -E -o 'value=\".*==.*' | awk '{print $1}' > 
        /Users/MZComputer/Downloads/10Step/VIEWSTATE_file; 

:

VIEWSTATE_file****value="bdC7M0jCKxJNSfHjUVv+4MMt3/ysSLviYkIQnnpntK3qNCarg7H012UIllu+XBDepbWYWktNdf3EBgd3xd0...UVv"**** 

하지만 텍스트 value=" 내가 올바른 토큰을 얻기 위해 사용할 수 있어요 것입니다. 그러나 파일에 value="...."을 포함하지 않으려는 경우 따옴표 안에 텍스트를 포함하기 만하면됩니다. 따옴표는 제외됩니다.

어떤 아이디어를 얻을 수 있습니까?

echo $a_opensite | grep -E -o 'value=\".==.' | awk '{print $1}' | sed 's/value="\([^"]*\)"/\1/' > /Users/MZComputer/Downloads/10Step/VIEWSTATE_file; 

답변

1

다음 줄을 사용합니다. 예를 들어 :

$ echo 'foo value="something interesting" bar' | grep -Po '(?<=value=\").*?(?=\")' 
something interesting 

흥미로운 비트는 다음과 같습니다

  1. (?=\") -이 내다 표현이다. 지정된 정규 표현식이 올 경우이 문자열은 빈 문자열과 일치합니다 (이 경우 \"). 위의 예제에서는 제공된 입력의 끝에 " bar 바로 앞에있는 빈 문자열과 일치합니다.
  2. (?<=value=\") - 이것은 lookbehind 표현입니다. 지정된 정규 표현식이 앞에 오면 빈 문자열과 일치합니다 (이 경우 value=\"). 위 예제에서 something interesting 직전의 빈 문자열과 일치합니다.
  3. .*? 라인이 value="stuff" garbage="more stuff" 읽는 경우 그냥 stuff하지 stuff" garbage="more stuff 일치 거라고 말을하는 것입니다 비 탐욕 문자의 시퀀스를 일치합니다.
  4. -o 옵션과 결합

,이 value="과 다음 " 사이의 문자열을 분리합니다.

0

는 GNU의 GREP을 가정 할 때, 나는 그것의 -P 옵션 펄 스타일의 lookbehind/내다 표현식을 사용하십시오 :