CTF-PWN
内容:
附件:https://pan.baidu.com/s/1twNiCnqBL17_WuQr1NdGBQ?pwd=g9by 提取码:g9by
答案:flag{d07d7b41-1672-4338-a72c-43e12c26c587}
总体思路
详细步骤
-  查看文件信息 
-  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; }
-   
-  题目通过将 /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:检查文件中可以利用的gadget或rop-chain- 注意在python3版本中,生成的chain需要在所有的字符串前面加上b表示十六进制值,否则会出现str不能合并bytes的报错
 
- 注意在
- gdb:程序动态调试工具,也可以直接使用ida的远程调试功能
 
 
- pwntools逆向python库 
    
- 教程 
  - 2019 北航 CTF Pwn入门培训课程(一) 
    - 基础的rop使用方法
 
- 2019 北航 CTF Pwn入门培训课程(二) 
    - 为什么main的返回地址被替换为system_addr后 a=system_ret ;b=p aram_1- ret2libc使用pil节区中的system和/bin/sh
- 如果没有的话就看其他函数的地址以查到libc版本,以及其各值的地址
 
- ret2libc使用pil节区中的
- 如果是静态编译则使用int80调用rop链 
      - ROPgadget 
        - 通过ROPgadget --binary rop --ropchain获取可以直接使用的rop链
- 通过ROPgadget --binary rop --only "pop|ret"获取可以存值的地方
 
- 通过
 
- ROPgadget 
        
 
- 为什么main的返回地址被替换为
- 2019 北航 CTF Pwn入门培训课程(三) 
    - 待解析
 
- 2019 北航 CTF Pwn入门培训课程(四) 
    - 待解析
 
 
- 2019 北航 CTF Pwn入门培训课程(一) 
    
- 常见知识点 
  - [CTF pwn]傻傻分不清的execve、int80、syscall、system及shellcode
- C 运算符重载
 










