ipwn
[LOB(Lord Of Buffer overflow)] cobolt -> goblin 본문
이번 단계는 cobolt 단계이다.
접속 후 바로 bash2를 실행한 뒤 파일들을 살펴보겠다.
이제 바로바로 복사본을 만들기로 하자ㅋㅋ 기본적으로는 goblin파일과 goblin.c코드가 존재한다.
코드를 바로 읽어보겠다.
gremlin단계 때의 코드와 똑같다.
바뀐점은 argv로 공략하는 문제가 아닌, gets함수로 입력을 받아서 해결하는 문제이다.
해결 방식은 이전과 완전 똑같지만 payload를 넘겨주는 형식을 다르게 해주면 되는 문제이다.
stdin 형태로 입력을 받을 때는 (python -c 'print "~~~~~"';cat)|./filename의 형태로 payload를 넘겨준다.
일단 똑같이 segmentation fault를 일으켜서 core dump를 확인해보겠다.
똑같이 20byte의 dummy를 넣어주고 return address를 BBBB로 덮어주고 nop*200 + shellcode로 실행시켰다.
왜인지 core dump가 생겼다는 문장을 띄워주지 않았지만 성공적으로 core dump가 생긴 것을 확인할 수 있다.
메모리를 살펴보겠다.
nop의 위치를 찾았다. 이제 payload는 dummy*20 + 0xbffffb20(임의의 nop위치) + \x90*200 + shellcode가 될 것이다.
한 번 코드를 작성해 copy file에 payload를 넘겨보겠다.
성공적으로 shell을 가져왔다. 이제 goblin file에 payload를 넘겨주어서 권한이 상승된 shell을 가져와보겠다.
성공적으로 payload가 먹혔다. 권한이 상승된 shell이 가져와졌고, goblin으로 향하는 password는 hackers proof이다.
'Write up > LOB' 카테고리의 다른 글
[LOB(Lord Of Buffer overflow)] wolfman -> darkelf (0) | 2018.01.16 |
---|---|
[LOB(Lord Of Buffer overflow)] orc -> wolfman (0) | 2018.01.16 |
[LOB(Lord Of Buffer overflow)] goblin -> orc (0) | 2018.01.14 |
[LOB(Lord Of Buffer overflow)] gremlin -> cobolt (0) | 2018.01.14 |
[LOB(Lord Of Buffer overflow)] gate -> gremlin (0) | 2018.01.13 |