5.5k 5 分钟

# PWN-only # 技术栈: 堆风水 修改 stdout,puts 泄露 libc free_hook 进行 orw 关闭程序的 ASLR # 题目环境:glibc-2.31-0ubuntu9.2 保护全部打开了,而且加了晒想,不允许 execve 执行,所以最后只能是进行 orw。 # 题目概览 程序的功能很简单,一个没有输出的菜单题,跟之前的某个题目很像。没有 edit 功能。 # increase unsigned __int64 initial(){ int size; // [rsp+4h] [rbp-Ch] unsigned __int64 v2;...
3.9k 4 分钟

# IOT 复现的第一个程序 这个程序其实是为了测试我所配置的环境,那就简单的学一下。因为自己也是刚刚才学习 IOT,不知道固件应该怎么开始分析,而且这个漏洞,网上没有更多的介绍是如何挖掘的,只有流传出来的 poc 环境的搭建我这里使用的 firmware-analysis-plus 一键搭建的 # POC import requests headers = { "Authorization": "Digest username=dslf-config, realm=HuaweiHomeGateway,...
3.2k 3 分钟

# IOT 的环境搭建 目前已有的学习参考文档时 2016 年的《家用路由器 0day 漏洞挖掘技术》》,但是由于时间很久了,各种软件的迭代升级导致书中很多工具的配置不好用。 本文复现华为路由器,原文链接 固件链接,提取码 0000 主链接 参考链接 # binwalk git clone https://github.com/devttys0/binwalk.git sudo apt-get install qemu qemu-system qemu-user-static binfmt-support //提供一些支持,很重要工具可以使用 apt-get...
4.5k 4 分钟

# 思路 在申请 memery 的时候存在整数溢出,程序虽然会检测到,但是允许我们进行一次的整数溢出申请,这样实际的 memery 的 count 很大,但是 chunk 的大小远小于这个值,造成了堆块的越界读写。 当我们申请一个很大的堆块,会在 libc 附近分配,配合越界写,我们就可以修改 tls_dtor_list, 以及 secret 的值。 chunk 的释放冲 i 性能申请没有对其进行清空,所以,我们申请出一个 largebin 范围的 chunk,然后释放,这样再次将其申请出来的时候,在 memery [1] 会存有一个指针,就可以知道 libc 的及地址了。将这个数据存在这个...
22k 20 分钟

# glibc 2.35 ubuntu3 下的利用手法。 原本我们以为 2.35 的时代不会来的这么快,但是最近 DS360ctf,以及强网杯几道题目的出现让 glibc 的 pwn 生存条件急剧下降。 首先我们谈谈为什么很多师傅都人为 2.35 的堆 pwn 是一个寒冬: # 现状: 之所以这样讲,一部分原因在于由于高版本的 glibc 的安全特性,封锁掉了很多的后门,特别是几个重要的 hook...
3.9k 4 分钟

# TASK: ​ 编写 IDA 脚本,不依赖版本号的条件下,利用二进制特征,在 openssl 的 libssl.so 中检查 CVE-2015-0207 和 CVE-2014-3507 是否被修补 要求:idc 和 python 两个版本都写一下,这个就是把 libssl.so 拖进 ida,然后运行你的脚本,然后弹窗或者输出有没有那两个 cve 存在 参考链接:https://www.hex-rays.com/products/ida/support/idadoc/162.shtml 按字母顺序排列的 IDC 函数列表 不依赖版本号,就是使用 ida 通用的函数, #...
2k 2 分钟

# CISCN_2022 planecoode 这个题目算是一个 llvm 的题目,对于我们输入的 code 进行解析操作,但是逆向的工程量很大,设计了很多 if,else 的模块,对应众多的操作。而且并不是说常规 vm 那种可以解析出常见汇编指令格式的操作码。而且使用了很多数据的转换操作,比如 BYTE1~BYTE5,HIBYTE,LOBYTE 等等,这些东西是我们必须回的东西。 然后经过我长时间的解析,大概猜出来了流程,我们指定最开始的 xy, 这是边界限制,申请出来 8*x*y 字节的空间,然后对应的 (x,y) 的位置是一个 code,code 为 8 字节 64...
4.4k 4 分钟

# CISCN_2022 popcalc 一道 vm 的题目。一开始出题人就搞活,之前也遇到过几次,这次也是稍微学到了。 __int64 __fastcall main(int a1, char **a2, char **a3){ unsigned int v3; // eax int i; // [rsp+Ch] [rbp-64h] int v6; // [rsp+10h] [rbp-60h] void **dest; // [rsp+18h] [rbp-58h] char src[56]; // [rsp+20h] [rbp-50h] BYREF unsigned...
4.1k 4 分钟

# ciscn2022_syscall 程序的漏洞点在于 free 后不会清空 size 数组对应的数据,而且在同一个该位置再次申请一个 chunk 的时候, else if ( choice == 17 ) // malloc { idx = (syscall)(38929LL, sub_E1B, 0LL, 0LL); if ( idx < 0 ) goto LABEL_32; if ( idx > 4 ) goto LABEL_32; if ( (syscall)(38929LL, getheap_ptr, idx, 0LL) ) goto...
17k 16 分钟

# vmlearning 笔记 首先清楚什么是 vm,虚拟机器,一种实现不同架构的程序的解释性的软件程序。virtual machine 关于 vmpass 这种解释性的程序,工作原理是根据不同的 cou 架构,不同的程序会生成不同的机器语言代码,指令代码。这个中间文件称作 IR,一般有两种形式 ——bitcode, 二进制机器码,以及.ll 文件,后者是为了方便我们阅读的,可读性较高。 vmpass 程序,对于我们提供的想要模拟运行的代码,我们需要提供类似于指令代码程序的文件,.ll 或者 bc 文件,而文件是被 assmebly...