当前位置:首页|资讯

【pwn5 2024长城杯 consumption】

作者:K3yB0ard发布时间:2024-09-21

首先看一下程序保护

checksec

32位程序,got表可写,无pie。考虑写got表

main

main函数看一下,是经典的菜单题,值得注意的一点是本题目交互需要使用cjson格式。

add

add函数最多申请7个堆块其中参数a3解引用值作为地址存储scanf存储堆块size,heap和length全局数组分别用于存储堆块指针和size大小。

漏洞出现在此处,main中读入json的时候有栈溢出,可以覆盖v13,而v13后续作为参数传入add,则v13的值将会被当作地址,在add时通过scanf读入size,进而导致了任意地址写漏洞,结合程序没有pie保护,直接任意地址写修改heap指针即可实现任意地址读写。

漏洞
delete

delete函数正常清零,没UAF。

show

用于实现任意地址读。

edit

edit函数只能编辑前8字节

本题目攻击思路为,首先任意地址写,在heap中写入free的got表地址,以便用show泄露libc,再次利用任意地址写,覆写free的got表内容为system地址,free内容为/bin/sh的堆块即可getshell。

值得注意的是,笔者在尝试写入system地址时,发现json处理不可见字符可能会有问题,经测试发现一次写入三字节是ok的,最后分两次写入system地址即可。

完整exp如下:

脚本执行结果

exp result

    By  Del0n1x

Keyboard


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1