Profile

머리정리하는곳

c2w2m2

[Level1] gate -> gremlin

먼저 gremlin.c 코드를 봅시다!


이렇게 되어있습니다. 

RTL 기법을 이용하여 공격 할것이고 계획을 짜보자면

buffer(256 byte) + sfp(4 byte) + system주소 + dummy(4 byte) + Shellcode주소

식으로 공격을 하면 될거 같습니다.


먼저 system 함수 주소를 알아봅시다


디버깅을 위해 gremlin 복사 파일을 하나 만들고 이를 gdb로 엽니다,



그 후 인자없이 실행 시키면 if 문 안으로 들어가 printf 를 실행시키고 종료가 됩니다.  그러므로 20번째줄 printf에 브레이크포인트를 걸고 시스템 내부의 system 함수 주소를 보면 됩니당.


system 함수 주소는 0x40058ae0 입니다. 어딘가에 적어두고 시스템 내에있는 shellcode 주소를 찾아보면



이런식으로 코딩을 한 후 gcc로 컴파일 후 실행시키면



시스템 내에있는 shellcode주소는 0x400fbff9입니다. 이제 공격을 해보면


../gremlin `python -c 'print "A"*256 + "ABCD" + "\xe0\x8a\x05\x40" + "ABCD"+"\xf9\xbf\x0f\x40"'`

              [buffer]               [sfp]                    [system]                           [dummy]               [shellcode]




클리어!

'Pwnable > LOB' 카테고리의 다른 글

[Level5] orc -> wolfman  (0) 2017.05.17
[Level4] goblin -> orc  (0) 2017.05.17
클리어!  (0) 2017.05.17
[Level3]cobolt -> goblin  (2) 2017.05.02
[Level2]gremlin -> cobolt  (0) 2017.05.02