0
点赞
收藏
分享

微信扫一扫

CTF-PWN-buuctf-others_shellcode-系统int80调用的使用方法

王传学 2022-04-24 阅读 53
安全

CTF-PWN

内容

附件:https://pan.baidu.com/s/1twNiCnqBL17_WuQr1NdGBQ?pwd=g9by 提取码:g9by

答案:flag{d07d7b41-1672-4338-a72c-43e12c26c587}

总体思路

详细步骤

  • 查看文件信息

    • image-20220423192850813
  • int getShell()
    {
      int result; // eax
      char v1[9]; // [esp-Ch] [ebp-Ch] BYREF
    
      strcpy(v1, "/bin//sh");
      result = 11;
      __asm { int     80h; LINUX - sys_execve }
      return result;
    }
    
  • image-20220423193030314

  • 题目通过将/bin/sh写入了ebx,随后调用int80(sys_execve)系统调用

    • [CTF pwn]傻傻分不清的execve、int80、syscall、system及shellcode
  • 故此题可以直接获得了shell,直接执行。

参考文档

  • 常用工具
    • pwntools逆向python库
      • 工具的基本使用方法,注意安装要使用pip install pwntools
      • 官方文档
      • 官方使用教程
    • Kali
      • checksec:检查样本的基本信息也可以是通过设置 pwntool.context.log_level = 'debug’得到
      • ROPgadget:检查文件中可以利用的gadgetrop-chain
        • 注意在python3版本中,生成的chain需要在所有的字符串前面加上b表示十六进制值,否则会出现str不能合并bytes的报错
      • gdb:程序动态调试工具,也可以直接使用ida的远程调试功能
  • 教程
    • 2019 北航 CTF Pwn入门培训课程(一)
      • 基础的rop使用方法
    • 2019 北航 CTF Pwn入门培训课程(二)
      • 为什么main的返回地址被替换为system_addr后 a=system_ret ;b=p aram_1
        • ret2libc使用pil节区中的system/bin/sh
        • 如果没有的话就看其他函数的地址以查到libc版本,以及其各值的地址
      • 如果是静态编译则使用int80调用rop链
        • ROPgadget
          • 通过ROPgadget --binary rop --ropchain获取可以直接使用的rop链
          • 通过ROPgadget --binary rop --only "pop|ret"获取可以存值的地方
    • 2019 北航 CTF Pwn入门培训课程(三)
      • 待解析
    • 2019 北航 CTF Pwn入门培训课程(四)
      • 待解析
  • 常见知识点
    • [CTF pwn]傻傻分不清的execve、int80、syscall、system及shellcode
    • C 运算符重载
举报

相关推荐

0 条评论