zoukankan      html  css  js  c++  java
  • 第四届上海大学生信息安全比赛------web2

    这道题目是一道代码审计题

    源码:

    题目思路是:变量覆盖,反序列化漏洞

    看到源码里面有parse_str()函数,这个函数如果没有带array()这个参数,将会导致变量被重新赋值

     

    first  http://192.168.133.167:88/web2/index.php?first=doller

    var  http://192.168.133.167:88/web2/index.php?first=doller&a=var=give

    bbb  http://192.168.133.167:88/web2/index.php?first=doller&a=var=give%26bbb=me 

    这里用%26不能用&是因为bbb这些参数都要算是a的值

    如果用&那么bbb就不算是a的值,就会当作是一个新的变量,那么$_GET[‘a’]就获 取不到bbb的值,也就不能重新赋值了

    ccc

    http://192.168.133.167:88/web2/index.php?first=doller&a=var=give%26bbb=me%26ccc=flag

     

    下面post进去一个值,然后将这个值反序列化,这里就是反序列化漏洞的利用了

    class

     

    反序列化漏洞就是对魔术方法的利用,这里有__wake() function ,一旦进行反序列化,那么就会执行这个函数,但是这个函数是可以绕过的,只要传进去的反序列,属性的数目比真正的数目多,那么就会绕过这个__wake() ,但是漏洞应该是受php版本限制的,我windows下面的php php7.0.7的,可以成功绕过,直接执行__destruct() 。但是我的linux下面的phpphp7.0.32的,这个函数就不能绕过了。不知道比赛的环境是怎样的,还是按正常流程来

    魔术方法的执行顺序这里不说,前面已经写过相关的笔记

     

    class 的流程

    传去的 私有变量 args 要求是一个array() ,然后对传进来的值进行waf处理

    对很多字符都进行了过滤 ,不输入这些字符就好,不影响

    下面还对flag进行了过滤,但是只要重写flag就可以了,

     

    执行完之后,程序结束之前,会自动执行__destruct() function

    这里有一个call_user_func_array(array($this, $this->method), $this->args),可以执行任意函数,但是上面判断是method这个参数要等于echo ,代码也重写了echo这个函数

    call_user_func_array(array($this, $this->method), $this->args),这个函数要求$this->args是一个数组

     

    参数$host的值就是args的值,如果$host的值是ls ,那么就会直接输出echo ls ,因为它这里将ls当成一个字符串了,那么可以用 ` ` 括起来(这两个是esc下面那个东东),就是

    Echo `ls` ,那么就会先执行ls,然后再执行echo

    下面构造payload

     

    注意变量是private,还是public

    Private的变量,序列化之后是看不到的,所以要经过urldecode 才能看到

     

     

    输入发送过去就会将当前的目录的文件列出来

     

    如果要查看一个文件的内容就要 cat 1.php

    但是空格被过滤了,这里就要用到$IFS,

    $IFSLinux下面的一个环境变量,它的意思可以是空格,换行,tab

     

    可以将源码读出来了

     

    结束了,为什么要那样子构建payload,在前面的笔记文章里面有详细的说,这里不详细说了

    我自己搭建了一个docker,名称是nienie/ubuntu16_php7_apache2:3.0

    里面有包含了web1 web2 web3的环境,不是比赛的环境,可能有些小问题,请自行修改。

  • 相关阅读:
    vue基础知识
    git的创建使用
    使用express搭建服务器框架
    日常训练
    今日收获
    今日收获
    今日收获
    今日收获
    今日收获
    今日收获
  • 原文地址:https://www.cnblogs.com/nienie/p/9921366.html
Copyright © 2011-2022 走看看