type
status
date
slug
summary
tags
category
icon
password
这个比赛我打的是社会组,pwn题一共来说应该是3道,一道heap,一道内核,一道arm,这里主要就heap写一下,其他题不会。
这道题,我这里写成两种,一道就是社会组的题,没有libc,要进行泄露,也可以直接选择爆破,另一道是其他组的,给了libc,加了一个沙箱。
没有libc
这里如果遇到这类题,是可以通过文件,知道其大版本的,不过小版本还是要泄露。
可以使用如下命令进行
结果如下
像这里就可以通过
Ubuntu 8.4.0-3ubuntu2 判断出这个程序用的是glibc2.31的程序不过具体的小版本不清楚。这道题逻辑的话比较简单,有个uaf漏洞,不过申请的chunk大小在0x100以内,free和edit只能修改前5个chunk。
这道题的话是可以修改got表的东西,于是就可以直接修改这里。
流程比较简单,申请3个chunk,free使其进入
tcachebins中,修改其中指向下一个chunk的fd指针为,got表free函数的地址。申请出来,修改free函数的地址为system函数的地址,向chunk中写入/bin/sh ,直接free那个chunk,这里我选择直接修改,然后直接爆破。这里先给一个爆破的脚本,
这个脚本,本地能打通,但远程不知能不能。理论上可以。
这里再给一个泄露的脚本,原理基本一样,修改
free函数为程序中的write函数,然后泄露其他函数的got表地址,判断libc的小版本。加沙箱
基本一样,加了个沙箱,这里我选择直接泄露
environ 函数里的栈地址,向栈上写入ROP,或者提权,执行shellcode,- 作者:wgiegie
- 链接:https://tangly1024.com/article/1da3ecc9-5160-80da-9321-d250db7bcdfd
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。