提问者:tboom 2020-4-2
老师您好,我想问一下
push
0x68
0x732f2f2f
0x6e69622f
为什么不能用
0x68732f
代替?这样读出来应该是/bin/sh,并没有在中间添加00也不需要添加/。我这样尝试的时候发现结果有$符号,但是运用ls并没有结果而是直接退出了。请问为什么这样不可以呢?
这个问题问的好,在很多漏洞利用场景中, shellcode 的内容将会受到限制,例如你不能输入 \x00 这个字符,编辑框不能输入 \x0d \x0a这样的字符,0x68732f2f2f6e69622f表示的ASCII是 hs///nib/ ,而x68732f6e69622f表示的是hs/nib/,表面上看只是两个反斜杠的区别,但这里需要保证binsh要以00结尾,因此需要在汇编中写入代码手动将其调整为 0,所以要用第一种
这个问题挺重要的,给你更新了一节课,你可以看一下,https://www.kanxue.com/book-57-955.htm