shellcode 中 null byte 的成因和避免方式总结
创始人
2024-01-26 16:06:54
0

背景

shellcode 中要避免 null byte(\x00)这个是个通用的概念(windows,linux 都是一样),因为栈溢出的数据作为字符串写入到栈上,\x00 会作为字符串终止符,毁掉整个 shellcode。

这就是为什么无论什么类型的栈溢出,无论用到什么技巧,在开发过程中都要千方百计避免 null byte 的出现。当然,还有应用自身的坏字符检测,这个我们以后再讨论,自己写 shellcode 的好处就是能够规避已知的坏字符。在某些特殊情况下,还能节省很多的栈空间(如果栈空间并不大的话,这就是好消息)。

今天我们讨论下 null byte 的成因,以及几个自己写 shellcode 的时候避免 null byte 的小技巧。

Null Byte 成因

开发的过程中,产生 Null Byte 的原因基本上有三个。

写入寄存器的值过小

例如我们需要寻找一个栈上的地址作为 Win32 API 的返回值写入地址,这个地址我们选择在 esp-0x260 的位置上。如果直接在作为减数的寄存器中写入 0x260,就会产生 null byte。

mov eax, esp
mov ecx, x260
sub eax, ecx

在这里插入图片描述

指令本身产生的 Null Byte

例如 mov eax, [eax] 指令,就会产生 null byte。

在这里插入图片描述

说完了两个最基本的成因,我们分享一下避免 null byte 的小技巧。

call 和 jmp 指令产生的 Null Byte

这个部分有机会写到自定义 shellcode 话再深入说。由于汇编也是从上到下执行的,这就涉及到代码逻辑的调整以及 call 指令的地址性质,得花点篇幅好好说。

避免 Null Byte(前两个成因)

解决小数产生的 Null Byte

方法1

针对第一种成因,我们可以选择使用负数的方式来解决。
拿上面的例子来说,我们可以取 0x260 的负数值,得到

fffffda0

在这里插入图片描述

然后使用加法而不是减法,得到相同的结果。

在这里插入图片描述

所有的数值过小的成因,都可以用这种方法解决。

方法2

或者,也可以使用 neg 指令,更加方便。

; 先将 0x260 的负数值写入 ecx,然后取负
mov ecx, 0xfffffda0
neg ecx

可以看到 opcode 里面没有 null byte。

在这里插入图片描述

同时运行起来,寄存器中也是我们想要的值。

在这里插入图片描述

在这里插入图片描述

解决指令本身产生的 Null Byte

针对第二种成因,很简单了,就是换个寄存器 😄

在这里插入图片描述

总结

第一种避免 null byte 的方式其实很简单,开发过程中注意就行,有小数都换成大数加负数或者负数取负即可。

第二种避免 null byte 的方式得结合实际情况,看当时哪个寄存器可用。可以看到除了特定的 mov eax, [eax] 会产生 null byte 外,使用其他寄存器都是安全的。

在这里插入图片描述

call 和 jmp 指令产生的 Null Byte,得从头开始讲了。不随便挖坑,还有坑没填完 😄

KEEP CALM AND HACK AWAY!

相关内容

热门资讯

万创中国官网电脑版 万创中国官... 《万创中国电脑版》是中国超有价值的万众创新公共服务软件,《万创中国电脑版》真实快速有效的解决创新、创...
大学生创业故事 大学生创业故事... 想要创业的大学生经常会质疑自己的选择是否正确?会在想是不是自己真的适合创业?下面由小编与大家分享三个...
史玉柱创史玉柱创业史业历程 史... 篇一史玉柱,1962年出生在安徽北部的怀远县城。1980年,史玉柱以全县总分第一的成绩考入浙江大学数...
史玉柱创业故事 史玉柱关于创业... 创业前,很多困难你都不会把它认为是困难,当它突然成为你的困难时,很多人会承受不了压力,就放弃了,这样...
史玉柱自述创业历程:从“首负”... 百度搜索扫一扫,分享到微信史玉柱自述创业历程:从首负东山再起的商业巨人从27岁4000元起家到全国排...
汽车美容店投资创业方案 汽车美... 刘丽娜ZT汽车美容店面管理培训总结汽车美容店老板投资失败的原因总结很多汽车美容店老板失败的原因,对将...
北京中关村创业投资引导基金 北... 北京中关村创业投资发展有限公司(以下简称“中关村创投”)是中关村管委会及中关村发展集团下属的创业投资...
8种小本创业的项目 8种小本创... 小本做点什么好?大部分80后创业者,都是草根起家,没有多少资金,能够承担的风险也不是很大。这样,就要...
适合农村创业的项目 适合农村创... 新农村的建设给予了百姓更多的创业优势,为农村人提供了有利的环境,也更是农村人对待自主创业的意识逐渐的...
适合农村的创业项目有哪些? 适... 有:儿童玩具店、小型杂货店、伞店、杂粮栽培。1、儿童玩具店开一家儿童玩具店,价格不高,零售价在0.5...