最近就遇到了这样的怪题目,本地劫持指针到execve()的int 80系统调用的时候,本地会卡住,远程却可以,我的建立的shellcode是这样的:
|
|
之后调试的时候发现,int调用的时候envp参数有点奇怪,本来应该是0,现在却是The_Pursuit_of_happiness
这个时候才想起来我envp没有清空,也就是少了一条 xor edx,edx指令,之后加上去后本地就能打通。
|
|
综上所述pwn本地打不通远程打不通的问题原因之一是由于环境变量指针不一样,远程的环境变量指针可能恰好符合这个程序,而本地的不符合,所以要清0。 所以要按照envp=0调用。
execve(path='/bin///sh', argv=['sh'], envp=0)

说些什么吧!