0%

SROP可以在gadgets很少的时候的栈利用里使用,近期学习linux后,明白了程序进行系统调用时,状态会从用户态切换到内核态。而切换的实质是将用户态的寄存器保存。而返回的时候,再重新恢复用户态的寄存器。系统调用signreturn,是内核态恢复到用户态;它的具体操作是**[从用户的栈中弹出寄存器的值]{.mark}**。因此,如果栈能被我们控制,然后我们能够构造signreturn的系统调用,那么就能完成利用。我们的目的就是可以借助signreturn来控制全部的寄存器。

例题ciscn_2019_s_3

首先,检查一下程序的保护机制

阅读全文 »

前言

厌倦了x86/x64 平台下的二进制漏洞利用,来看看mips/arm平台下的pwn是如何达到利用的。众所周知,mips/arm架构cpu主要用于嵌入式设备,比如路由器这些。当我们在x86/x64平台练习到一定境界后,再去探索一个新的平台下的漏洞利用,我们可以借鉴以前的方法,总之,思想都是一样的。只不过是指令的样子不同而已。

MIPS架构的pwn

阅读全文 »

Prctl是linux的一个函数,可以对进程、线程做一些设置,prctl内部通过虚表来调用对应的功能,如果我们劫持prctl的虚表,使它指向其他对我们有帮助的内核函数,比如call_usermodehelper函数,该函数执行一个用户传入的二进制文件,且以root权限执行,由此可以利用起来提权。

我们分析一下prctl源码,在linux/kernel/sys.c里,我们看到这

阅读全文 »