먼저 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 |