蒸米ROP学习笔记

蒸米ROP教程:

https://zhuanlan.zhihu.com/p/23537552?utm_source=wechat_session&utm_medium=social&utm_oi=1436035788312633344

1.一般先找溢出点:含有read等有输入不限长度参数到返回值的大小为填充大小。

2.构造shellcode:execve('/bin/sh')。

3.填上shellcode+padding+ret。

其中

1.ret2lib bypass DEP:通过write@plt把write()在内存的地址打印出来(即got.write)。

2.或用 read@plt把‘bin/sh’写进.bss,由于read有三个参数,所以需要构造gadget:pop pop pop ret来平衡栈。

3.ret相当于pop rip ,64位前六个参数先存取于rdi/rsi/rdx/rcx/r8/r9,为了调用system('bin/sh‘)需用gadget将rdi值指向bin/sh,其中gadget可用以下两种方式:

 

posted @ 2021-12-08 22:57  梁静茹  阅读(100)  评论(0)    收藏  举报