ciscn_2019_es_7

这是我第一次见到srop的用法的题目,于是在此记录方便以后的复习

拿到程序例行检查

ciscn_2019_es_7

 

 ciscn_2019_es_7

 

 将程序放入ida中

ciscn_2019_es_7

 

 可以看到栈的大小是0x10,却可以显示出0x30的内容,所以我们可以通过这个溢出泄露出/bin/sh在栈的偏移值

关于srop的解析,我在这里贴一个ctfwiki的解析

SROP - CTF Wiki (ctf-wiki.org)

所以当我们使用sigreturn,需要让不同的寄存器对应不同的值,然后将返回地址覆盖为sigfrme的地址就能获取到系统的shell

首先我们需要获取/bin/sh在栈中的偏移

 

ciscn_2019_es_7

 

 ciscn_2019_es_7

 

 

通过计算可以计算出偏移为296

于是我们让sigfrme的各个寄存器的条件满足各个的条件,然后在ret覆盖为sigfrme的地址

 

ciscn_2019_es_7

 

 

sigfrme = sigreturnFrame()是pwntools的功能

完整exp如下

 

ciscn_2019_es_7

 

 成功获得flag

结束!!

ciscn_2019_es_7

 

上一篇:[BUUCTF] ciscn_2019_ne_3


下一篇:BUUCTF-ciscn_2019_n_1