首页
社区
课程
招聘
关于代码代替的问题

提问者:
tboom 2020-4-2

 

老师您好,我想问一下

1
2
3
push  0x68
push  0x732f2f2f
push  0x6e69622f

为什么不能用

1
2
push  0x68732f
push  0x6e69622f

代替?这样读出来应该是/bin/sh,并没有在中间添加00也不需要添加/。我这样尝试的时候发现结果有$符号,但是运用ls并没有结果而是直接退出了。请问为什么这样不可以呢?

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

这个问题问的好,在很多漏洞利用场景中, shellcode 的内容将会受到限制,例如你不能输入 \x00 这个字符,编辑框不能输入 \x0d \x0a这样的字符,0x68732f2f2f6e69622f表示的ASCII是 hs///nib/ ,而x68732f6e69622f表示的是hs/nib/,表面上看只是两个反斜杠的区别,但这里需要保证binsh要以00结尾,因此需要在汇编中写入代码手动将其调整为 0,所以要用第一种

回复 已采纳
Roger 2023-5-23

这个问题挺重要的,给你更新了一节课,你可以看一下,https://www.kanxue.com/book-57-955.htm

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