zoukankan      html  css  js  c++  java
  • PHP代码审计(Session反序列化 + Create_function漏洞)

    1.某团队内部题目

    首先先审计一下,会接收content和name参数,分别对应文件内容、文件名,存储在/tmp文件夹下
    此外每次访问会对服务器存储的session和访问者的session进行对比
    当session存在就获得访问flag的权限

    百度一下,一般的php session存储在/tmp文件夹下,且有三种存储方式,这里是最常见的php存储引擎(php<5.5.4)

    session命名规则:

    sess_sessionid(PHPSESSID)

    其中文件内容经过序列化:

    键名 | 序列化后的结果
    例如:name | s:6:"spoock"

    构造我们自己的session,但当传参content时会拼接它默认的字符串,会被当成键名,因此直接用null的序列化表示来分隔就OK(|N)

    因此最终payload如下:

    2.某内部题2

    首先我们要POST一个key值,其次传参act和arg,但是act会有一个匹配,但是并不严格,只是对首尾有匹配

    需要注意的:
    extract()函数漏洞: 这里以POST方法获得变量会导入当前符号表中,如果存在则覆盖

    看见$act($arg,''),可以联想到create_function('$name','echo 123')

    函数原型:create_function(string $args, string $code)

    在PHP高版本中这个函数被废弃了

    这个函数类似于这个结构:
    function name($name){
        echo $name;
    }

    因此我们能够传参闭合,payload如下:

    3.题3

    没啥过滤,管道符也没过滤干净

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    idea快捷键
    cas的缺点
    mybatis plus 实现逻辑删除
    mybatis plus的条件查询
    POI写非常大的数据量时
    POI中HSSF和XSSF
    JMM是什么
    Android面试收集录10 LruCache原理解析
    Android面试收集录9 IntentService详解
    Android面试收集录8 HandlerThread详解
  • 原文地址:https://www.cnblogs.com/echoDetected/p/14530433.html
Copyright © 2011-2022 走看看