首页
社区
课程
招聘
视频中明显把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执行失败。

收藏
1条回答
Roger 2023-5-23

刚看了一遍,这节课确实没有区分这两个概念,没有表达清楚,感谢反馈

回复
零基础入门pwn
  参与学习     1763 人
  提问次数     35 个
《零基础入门pwn》,短时间内踏入漏洞利用的大门,快速成为一名合格的pwn题选手
我的问答 领取收益
0
我的提问
0
我的回答
0
学习收益