-
-
[原创]某个PWN题目(decoder)分析
-
发表于:
2017-4-27 19:19
5769
-
题目decoder见附件,部分反汇编后伪C代码如下:
通过观察反汇编代码发现有两个漏洞。
首先尝试栈溢出漏洞利用
思路,在对某个字符串进行11次base64加密,然后提交给漏洞程序decoder
相关代码如下:
进行解密时 最后一次在snprintf时 v8=10 拷贝的数据超出了s的缓冲空间,覆盖了栈里的数据
如图所示:
在程序返回的时候 ecx控制esp的值 esp控制返回地址,这里由于栈溢出导致了程序流程可以被控制
但是实际上snprintf在while循环里,在该函数溢出覆盖返回地址后,还要执行一次check函数
在check函数里 要执行一个strlen函数 ,这个函数的参数是个字符串地址 覆盖后要可读 否则报错
这里用0x8048d80覆盖 如上图所示。
本来以为到这里可以成功利用漏洞了,但是在函数开始就把esp压栈进行了保护,溢出后esp被覆盖,因为地址随机化,我们也不能有效地控制ESP来劫持程序流程,思考了很久 这个栈溢出漏洞暂时无法利用。
利用格式化字符串漏洞
因为存在格式化字符串漏洞,那么可以造成任意地址写,我们把后面的printf的got表地址覆盖就可以控制程序流程了。
我们构造格式化字符串,在进行snprintf的时候 内存数据布局如下:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课