视频中明显把shellcode字符串中的00截断,与栈上/bin/sh字符串的00截断混淆了。
提问者:
ciphersaw 2021-12-5
@Roger 视频中明显把shellcode字符串中的00截断,与栈上/bin/sh字符串的00截断混淆了。
无论压入/bin/sh还是/bin///sh,00都存在于字符串末尾,而不是字符串中间,因此两种写法的字符串均能读出。视频中说若压入/bin/sh字符串,只能读取到/bin,这种说法是错误的。
此外,真正产生00截断问题的,不是栈上/bin/sh字符串的00截断,而是shellcode字符串中的00截断。
视频中push 0x68对应的二进制代码为6A 68,而push 0x68732F对应的二进制代码为68 2F 73 68 00。
综上可见,压入/bin///sh字符串的二进制代码为6A 68 68 2F 2F 2F 73 68 2F 62 69 6E,而压入/bin/sh的二进制代码为68 2F 73 68 00 68 2F 62 69 6E。
真正的截断问题,出现在压入/bin/sh的shellcode中出现了00字符,导致后续的shellcode执行失败。