介绍
starctf2019的一道题,出题人想出的有点挑战,奈何代码出现了失误,很容易就被绕过了。
分析程序
程序很简单,读入shellcode,做检查,check过了就执行shellcode。
这个检查规定了你的shellcode必须为指定的字符,但是检查到’\x00’就停止检查,所以很容易被绕过。
1 | unsigned int __fastcall check(char *a1) |
利用方式
我们需要产生一个’\x00’来绕过检查,很容易想到的就是push 0,或者pop 0。而push 0正好是’j\x00’,而’j’在允许的table表中,所以在shellcode前面加上push 0即可。
脚本
1 | #!/usr/bin/env python2 |