쉘코드 리눅스명령어로 잘라내서 환경변수에 넣기 질문
글쓴이: qkrwncks593 / 작성시간: 화, 2013/01/08 - 8:43오후
#include <stdio.h> #include <string.h> #include <stdlib.h> "₩xcd₩x80" "₩x31₩xc0" "₩x50₩x68₩x2f₩x2f₩x73₩x68" "₩x68₩x2f₩x62₩x69₩x6e" "₩x89₩xe3" "₩x50" "₩x53" "₩x89₩xe1" "₩x89₩xc2" "₩xb0₩x0b" "₩xcd₩x80" "₩x31₩xdb" "₩xb0₩x01" "₩xcd₩x80"; int main( ....) { .. .. .. }
위에 있는 쉘코드를 리눅스명령어로 잘라내서 파일로 저장할때
$ head exploit.c | grep "^\"" // 1
$ head exploit.c | grep "^\"" | cut -d\" -f2 //2
$ for i in$(head exploit.c | grep "^\"" | cut -d\" -f2) //3
> do
> echo -en $1
> done > shellcode.bin
이렇게 한다는데 여기서 첫번째줄에서 | grep "^\"" 은 무슨역할이죠?
쉘코드에서는 "\xf0 이런형식으로 써있는데 어떻게 ^#" 을 포함하죠?
또 cut 에서 cut -d\" -f2 는 무슨뜻이죠? 이해가 안가네요 ... cut 이라는명령어가 잘라내는건 알겠는데 .. 위 소스코드랑 다른거같기도하고..
마지막으로 번거롭지만
$ for i in$(head exploit.c | grep "^\"" | cut -d\" -f2) //3
> do
> echo -en $1
> done > shellcode.bin
가 무엇이죠??
Forums:
grep명령에 대해 조사해 보시고, ^은 찾는
grep명령에 대해 조사해 보시고,
^은 찾는 문자열의 처음을 의미
\"은 "문자를 의미하는데, "이 제어문자이므로, 이스케이프(escape)처리
따라서, "^\""은 ==> 각 라인의 첫번째 문자(^)가 " 인 줄을 모두 찾아 출력하라! 가 됩니다.
댓글 달기