博客
关于我
2021-02-07
阅读量:290 次
发布时间:2019-03-01

本文共 1284 字,大约阅读时间需要 4 分钟。

分析题目源码

题目源码中包含了一个PHP应用,目的是通过分析源码找到隐藏的flag。首先,我们需要理解源码的工作流程,并找出其中的漏洞。

1. 初步分析

源码中包含一个filter函数,其作用是对$_SESSION中的数据进行过滤,替换掉一些特定的关键词。这个函数可以用来隐藏或篡改一些信息,可能会留下安全隐患。

2. 寻找关键点

源码中有一个show_image功能,当f=show_image时,会执行file_get_contents(base64_decode($userinfo['img']))。这意味着,如果我们能成功构造正确的$userinfo['img'],就能读取到flag.php的内容。

3. 利用反序列化漏洞

$_SESSION['img']的值是通过$_GET['img_path']参数进行处理的。如果没有img_path参数,它会设置为base64_encode('guest_img.png'),否则设置为sha1(base64_encode($_GET['img_path']))

为了构造正确的$_SESSION['img'],我们需要利用PHP的反序列化漏洞。具体来说,filter函数会将$_SESSION中的数据经过过滤处理,这可能会导致一些键的值被篡改或替换。我们需要找到一个方法,让经过过滤后的$_SESSION['img']能够被解析为我们想要的flag.php的base64编码。

4. 构造特定的序列化字符串

通过观察,我们发现filter函数会将所有包含在黑名单中的关键词替换为空。因此,如果我们构造一个特定的序列化字符串,其中包含我们想要的img键和值,经过过滤后,会保留我们构造的部分,而替换掉不需要的内容。

5. 最终构造

我们需要构造一个$_SESSION['phpflag']的键值对,其中img的值是flag.php的base64编码。这样,当f=show_image时,就能正确读取flag.php的内容。

实施步骤

  • 构造序列化字符串

    我们需要构造一个序列化字符串,使得经过filter函数处理后,能够保留我们想要的img值。例如:

    $_SESSION['phpflag'] = ';s:1:"1";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}
  • 发送构造的数据

    将上述数据发送到应用程序中,确保f=show_image。这样,$_SESSION['img']的值会被正确解析为flag.php的base64编码。

  • 读取flag.php内容

    f=show_image时,应用程序会执行file_get_contents(base64_decode($userinfo['img'])),从而读取到flag.php的内容。

  • 总结

    通过分析源码中的filter函数和show_image功能,我们发现了一个反序列化漏洞。利用这个漏洞,我们可以构造一个特定的序列化字符串,使得经过过滤处理后,能够正确解析出flag.php的base64编码,从而读取到隐藏的flag。

    转载地址:http://zelx.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    Nginx配置——不记录指定文件类型日志
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NHibernate学习[1]
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>