Onepunch
这个题的想法必须得称妙了,需要对以往简单的认知进行一定的颠覆。
特殊性在于程序的代码段(0x401000)具有写权限
1.通过修改程序代码段控制程序流程
程序中只能对任意一个字节改写一次,似乎没有任何利用空间,但是程序的跳转方式有点特殊,在函数内部大量使用了jz short loc_400756
进行跳转。
所以可以通过修改一个字节的操作,改写0x400767处的jnz命令的目标到输入之前,从而实现多次的改写。
2.开启NX保护的情况下能够使用shellcode拿到shell
一般情况下开启NX保护也就锁死了shellcode的道路,但是这个程序的特殊性仍在于能够改写程序的代码段,而NX保护是禁止了堆栈等数据段的执行权限,代码段仍然可执行,所以可以将shellcode布置到代码段,之后再改写jnz命令跳转过去即可执行。
generated by haroopad
作者:辣鸡小谱尼
出处:http://www.cnblogs.com/ZHijack/
如有转载,荣幸之至!请随手标明出处;