概述

个人感觉麻烦的点在于环境的搭建(又回到最初一瓶农夫山泉搁那配一天环境的日子,一个点没注意就出问题,甚至桌上的农夫山泉都换成了怡宝),本文着重记录下自己踩得坑,对于漏洞的详细分析可以看看参考文章.然后关于IOT通信还涉及到http协议和cgi,我也以我的理解简单介绍下

还介绍了纯rop链和shellcode两种漏洞利用方法,提到shellcode来getshell时出现的一些问题

阅读全文 »

概述

介绍了MIPS架构下的寄存器,指令集,函数调用约定即相关架构知识,最后辅以一个简单的程序进行探究

阅读全文 »

概述

因为高版本libc的利用离不开io file,故前来学习

从源码入手,分析和IO file有关的结构体和函数,并总结常用的利用方法

阅读全文 »

概述

libc2.26以后unlink新增了对size域的检测(检查size和后一个堆块的prev_size是否匹配)

libc2.27以后加入了对fastbin的检查,检查chunk的大小和fastbin是否匹配

要求:fastbin的size域或fd域可控

作用:构造overlapping chunk

阅读全文 »

概述

作用:在程序没有free函数的情况下将一个chunk放到unsorted bin中

要求:能够控制top chunk的size域

阅读全文 »

概述

针对small bin的堆利用

作用:分配任意地址的chunk

要求:堆溢出修改chunk的bk域

阅读全文 »

适用范围

2.23~2.29

2.29的libc中增加了top chunk的size域合法性检验

1
2
3
// 申请的大小如果超过系统内存,报错
if (__glibc_unlikely(size > av->system_mem))
malloc_printerr("malloc(): corrupted top size");

作用:得到任意地址的chunk

要求:

  1. 控制top chunk的size域
  2. 自由控制分配堆的大小
阅读全文 »

如何去除

对于一个程序,我们可以通过strip来去除其符号表,表现如下:

0

去除前

5

去除后

4

如何恢复

IDA flair

通过加载相应的签名文件来恢复符号表

操作方法

在ida中用快捷键shift+f5进入签名界面,右键apply new signature选择要加载的签名文件即可,通过ctrl+z撤销上一步操作

ida9.0自带的签名较少可以从sig-database中获取

ida finger插件

Finger是阿里云·云安全技术实验室推出的一款二进制函数符号识别引擎,可以识别二进制程序中的库函数与常见的第三方函数,快速定位恶意代码,提高样本分析效率

操作方法

pip install finger_sdk安装finger_sdk库

注意安装Finger的python的版本要与IDAPython的版本一致

然后从finger这个项目中下载finger_plugin.py,由于原项目年久失修,可以根据这个issue方法进行patch

finger_plugin.py复制到IDA插件目录IDAx.x\plugins

重启ida,即可在顶栏看见finger

3

总结

我现在用的是这两个,另外还有iscan可以自动检测静态二进制程序使用的libc版本,可以自行google下

恢复效果

恢复前

2

恢复后

1

概述

vmpwm即模拟虚拟机实现的程序,主要考察对程序的逆向能力

特征是模拟的栈结构,伪机器码,还有pc寄存器和sp寄存器

分析的重点就聚焦于找出栈和上述寄存器是如何进行实现的

阅读全文 »