栈溢出时发现了00截断,应该怎么办?

IoT设备上出现的真实内存漏洞大多都是对字符串操作不当所引发的,于是就必然会出现对于空字符的截断,进而导致我们的利用变得异常艰难。不过即使如此,黑客也可以使用各种花了呼哨的手段来完成利用。以下整理:由于字符串操作引发的栈溢出时,可以考虑的利用方法。

没有canray! 00截断本身能否绕过 劫持的返回地址属性 备选地址 地址已知条件 执行类型 精准地址利用方法 精准地址利用例子 模糊地址利用方法
不能
(栈上最后的payload数据以00结尾,中间没有00)
返回地址有00 ELF本体程序段 程序没开PIE、泄露 gadget rop(仅一次) 栈迁移 PSV-2020-0211-Netgear-R8300-UPnP栈溢出漏洞分析:https://www.anquanke.com/post/id/217606
可控参数寄存器+system 西湖论剑babyboa:https://xuanxuanblingbling.github.io/iot/2020/11/17/iot/
cisco rv110w 第二个解法:https://github.com/firmianay/IoT-vulhub/tree/master/Cisco/CVE-2020-3331
ELF本体数据段 程序没开PIE、泄露 shellcode(NX关) ret2shellcode  
堆段 堆随机化没开、泄露 shellcode(NX关) ret2shellcode totolink栈溢出 堆喷【n*(滑板+shellcode)】+ret2shellcode
返回地址无00 lib库程序段 库随机化没开、泄露 gadget rop多次 cisco rv110w 第一个解法:https://xuanxuanblingbling.github.io/iot/2020/10/26/rv110w/
cisco rv130w rop:    https://xuanxuanblingbling.github.io/ctf/pwn/2021/01/09/rop/
D-Link DIR-645路由器栈溢出漏洞分析:https://bbs.pediy.com/thread-259274.htm
DIR815缓冲区溢出漏洞再分析:https://www.anquanke.com/post/id/206626#h2-14
lib库数据段 库随机化没开、泄露 shellcode(NX关) ret2shellcode  
栈段 栈随机化没开、泄露 shellcode(NX关) ret2shellcode hws2021入营:PPPPPPC:https://xuanxuanblingbling.github.io/ctf/pwn/2021/02/01/hws/ 栈喷(疯狂溢出【n*(滑板+shellcode)】)+ret2shellcode

(截断性质函数可以被绕过,输入退化为read,栈上最后的payload数据中间有00)
返回地址无限制 所有已知地址 看目标情况 gadget shellcode均可 gadget shellcode均可 hitctf2020 suprecgi:https://xuanxuanblingbling.github.io/ctf/pwn/2020/12/09/hitctfpwn/
cisco rv110w 第三个解法:maybe
defcon 2021:armpwn:url编码绕过00