nemo의 이야기

워 게임(OverTheWire) narnia0 본문

Information security/System security

워 게임(OverTheWire) narnia0

nemojjong 2017. 9. 3. 17:06

다양한 문제를 분석하기 위해 narnia 문제를 풀어보자


우선 narnia0 문제에 c파일을 확인하면 



val에 41414141에 값이 들어가 있다 이를 deadbeef로 바꿔서 sh를 따는 문제이다.


val을 직접 바꾸는 코드가 없으므로 buf를 오버플로우를 해서 val 메모리에 접근해서 값을 바꿔야된다.


우선 gdb를 이용해서 분석해보자



메모리를 확인하면 buf에 b값을 넣고 20byte떨어진 위치에 41414141이 있는 걸 확인할 수 있다.


그러면 buf에 dumy값 20byte와 deadbeef를 쓰면 sh을 딸 수 있을 것이다.


argv를 사용하지 않아 문자를 넣기 위해 파이프라인을 사용하자


(python -c 'print "A"*20 +"\xef\xbe\xad\xde"';cat) | ./narnia0


프로그램 실행과 동시에 sanf부분에 dumy(20byte) + deadbeef를 넣는다. 



sh을 딴 것을 확인할 수 있다.


이제 #> cat /etc/narnia_pass/narnia1 를 확인하면 패스워드를 알 수 있을 것이다. 


'Information security > System security' 카테고리의 다른 글

워 게임(OverTheWirte) narnia2  (0) 2017.09.09
워 게임(OverTheWire) narnia1  (0) 2017.09.03
쉘 코드  (0) 2017.09.03
워게임(overthewire) leviathan5  (0) 2017.08.25
워게임(overthewire) leviathan4  (0) 2017.08.24
Comments