PWN题[强网先锋]orw超详细讲解(多解法)

知识点

构造一段shellcode的作用就是为了在缓冲区溢出时将shellcode的地址覆盖正常的返回地址。

\x00 截断符 shellcode里出现\x00就会从其截断,所以构造shellcode的时候要避免\x00

x64函数调用规则
x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h、g。
保存完参数之后再把函数后面一条指令的地址入栈保存。

解题流程

查看文件类型:
在这里插入图片描述
查看保护机制:
在这里插入图片描述
因为不是FULL RELRO所以就考虑改got表为shellcode地址

IDA64位打开
Main查看伪码:
在这里插入图片描述
查看子程序
在这里插入图片描述
seccomp_init(0LL);
seccomp_rule_add(v1, 2147418112LL, 2LL, 0LL);
做pwn,用seccomp做沙箱保护很常见。有时候seccomp后面会跟一个结构体
seccomp是一类内核里的安全机制,正常情况下,程序可以使用所有的syscall,这是不安全的,比如劫持程序流后通过execve的syscall来getshell.通过seccomp我们可以在程序里禁用掉某些syscall,这样就算劫持了程序流也只能调用部分的syscall了。
seccomp(全称securecomputing mode)是linuxkernel从2.6.23版本开始所支持的一类安全机制。
在Linux系统里,大量的系统调用(systemcall)直接暴露给用户态程序。但是,并不是所有的系统调用都被

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值