grep
base64로 인코딩된 문자열이 포함된 모든 파일을 찾아서 인쇄하기 위해 명령 대체를 사용하려고 합니다.
먼저 문자열을 base64로 인코딩한 다음 grep을 사용하면 파일을 찾을 수 있습니다.
$ echo "FLAG" | base64
RkxBRwo=
$ grep -nr "Rkx"
test.txt:1:RkxBR3tUaGl6STVUaDNGbDRnfQo=
그러나 명령 대체를 사용하면 어떤 출력도 얻지 못합니다.
$ grep -nr `echo "FLAG" | base64`
답변1
Steeldriver가 답변을 댓글로 게시했으므로 답변으로 게시하겠습니다.
echo "FLAG" | base64
출력 RkxBRwo=
, 그래서 당신의
grep -nr `echo "FLAG" | grep -nr `echo "FLAG" grep -nr `echo "FLAG" base64`명령이 실행되고 있습니다
grep -nr RkxBRwo=그러나 표시된 내용에 따르면 파일 에는 ;가
test.txt
포함되어 있지 않습니다 (뒤에 다른 문자가 표시됨).RkxBRwo=
RkxBR
파일에서 base64 인코딩의 처음 5자를 검색하려면 FLAG
다음을 수행하십시오.
grep -nr `echo "FLAG" | grep -nr `echo "FLAG" | grep -nr `echo "FLAG" 64비트|cut-c1-5`
답변2
주문하다
grep -nr `echo "FLAG" | base64`
현재 디렉터리의 모든 파일에 대한 재귀 검색 명령에 의해 반환된 패턴을 나타냅니다 echo "FLAG" | base64
.
대신에, 나는 당신이 원한다고 믿습니다
echo "FLAG" | base64 | grep -n 'Rkx'
또는 어떤 이유로 명령 대체가 필요한 경우:
grep -n 'Rkx' <<< $(echo "FLAG" | base64)
$()
명령 대체에는 백틱 대신 표현식이 사용됩니다.그렇기 때문에.