0.Introduce
푼지 좀 시간이 지났으나 이제야 올립니다. rop를 공부하고 있을 때 풀었는데 리버스 커넥션을 처음 해보았고 send로 got를 leak해서 푸는게 정말 신기했던 문제입니다. 이문제를 풀때는 엄청 힘들게 풀었던것 같습니다.
1. binary
2. Vulnerability
취약점은 꽤 빨리 찾을 수 있다.
return 에서 1025가 넘어가게 받을때도 있기때문에 버퍼오버플로우 취약점이 발생한다.
3. Exploit
스택은 사용하지 못하기때문에 got overwrite를 이용해 풀려고 한다.
1) Leak
- send_got를 send_plt를 이용해 전송했다.
- send의 주소와 system 주소의 차이를 구해서 system주소를 구한다.
2) exploit
- leak한 system주소를 send_got에 덮어준다.
- 리버스 커넥션을 하기위해서 'nc -lvp 5555 -e /bin/sh'를 bss영역에 써준다.
- send_plt + "AAAA" + bss_add로 포트 5555를 열어준다.
- 다른 쉘을 열어서 nc ip 5555로 쉘을 획득한다.
# Notes
buf크기가 랜덤이기 때문에 계속 파이썬 코드를 실행해주는 쉘 스크립트를짜서 돌려주고 nc ip 5555로 접속을 시도하는게 더 빠르게 쉘을 얻을 수 있다.
#!/bin/sh
CMD="python filename"
while [ 1 ]; do
sh -c "$CMD"
done
https://github.com/LYoungJoo/CTF-Write-Up/blob/master/2013_HDconpwn%20Write%20Up/luckyzzang.py
'해킹 > Write Up' 카테고리의 다른 글
Plaid CTF 2014 ezhp Write Up (0) | 2017.01.29 |
---|---|
Codegate 2014 angry_doraemon (0) | 2017.01.28 |
3DS CTF 2016 not-the-same-200 Write Up (0) | 2017.01.27 |
3DS CTF 2016 get-started-100 Write Up (0) | 2017.01.27 |
Exploit Exercises Protostar Stack~Net Write Up (0) | 2017.01.27 |