专栏首页漏斗社区您有一份CTF代码审计文件等待查收

您有一份CTF代码审计文件等待查收

0x01 背景

上周总结了一些文件包含与伪协议结合的利用方法,本周就找一道例题进行演练。题目源自国外某挑战平台,平台上还有许多其他有趣的challenges题目,小伙伴有兴趣也可以上去好好玩耍一番。 题目地址:http://level3.tasteless.eu/index.php?file= 站点地址:http://chall.tasteless.eu/

0x02 解题过程

首先访问题目站点:

http://level3.tasteless.eu/index.php?file= 发现给出了题目的源码,所以本题便是要通过代码审计获取flag.

源码信息:

源码中展示的信息还是很直接的:

1.高亮读取 index.php的源码。

2.在提示信息中告知要读取PHP.ini ,里面有敏感信息。

3.包含了anti_rfi.php,并提示不允许进行远程文件包含。

4.使用require_one包含了GET请求的file参数。

根据上面的代码情况可以知道最重要的是第4点,所以可以使用如下思路进行解题。

1.读取PHP.ini和anti_rfi.php,获取足够的信息。

2.绕过anti_rfi.php并远程包含一句话。

3.使用PHP伪协议直接执行代码。

分析后大致有如上的思路,第2点是需要开启allow_url_fopen,allow_url_include,第3点需要开启allow_url_include就可以了。 读取php.ini http://level3.tasteless.eu/php.ini

从php.ini中得到了allow_url_include是on的状态,所以可以使用PHP伪协议执行代码,可以使用php://input的协议,成功执行了代码。

此时需要获取站点的目录信息,由于allow_url_fopen是为off的状态所以无法使用远程文件包含执行命令了,也就无法直接用菜刀去连接并寻找flag,但是已经知道网站的根目录/var/www/chall/level3

此时本想可以使用命令执行的函数执行命令获取目录信息,但是这里似乎做了限制,无法执行系统命令,所以这里需要介绍PHP的scandir()函数会将当先目录下的目录结构以数组的方式保存,请求http://level3.tasteless.eu/index.php?file=php://input [POST DATA:]<?php print_r(scandir('/var/www/chall/level3'))?>得到flag文件的名称。

访问th3_th3_fl4g得到flag的值。

0x03 小小总结

想必上周总结的伪协议与本周文件包含结合的利用方法小伙伴已经GET到了,解题过程大致有如下3步骤:

1.分析站点给出的源代码。

2.判断allow_url_fopen,allow_url_include的开启状态,来推测可以使用的伪协议。

3.使用相应的伪协议执行代码获取flag。

当无法判断allow_url_fopen,allow_url_include的开启状态时,可逐一尝试如下的请求判断哪些能够执行,如果有上传功能那么可能是考phar或zip等压缩流的知识点。 PHP 读文件和代码执行的方式:

1.?file=data:text/plain,<?php phpinfo()?>

2.?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

3.?file=php://input [POST DATA:]<?phpphpinfo()?>

4.?file=php://filter/read=convert.base64-encode/resource=xxx.php

0x04 扩展小知识

虽然本题allow_url_fopen是off的状态,所以是无法使用远程文件包含的,如果是ON的话就需要使用文件包含读取anti_rfi.php文件,查看文件中的源码了。 如使用http://level3.tasteless.eu/index.php?file=php://input [POST DATA] <?php highlight_file('anti_rfi.php')?>读取anti_rfi.php文件的源码信息。

从源码中可以看到使用了正则匹配http://, data 匹配到了,返回hacker detected,但是并没有匹配ftp://所以使用ftp://也是一个思路。

本文分享自微信公众号 - 漏斗社区(newdooneSec),作者:Thinking

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 除了小蜗牛,我蛙还带来了YUNUCMSv1.0.6

    ? 任意文件删除漏洞 0x00 相关环境 源码信息:YUNUCMSv1.0.6 问题文件: \YUNUCMSv1.0.6\statics\ueditor\p...

    漏斗社区
  • 代码审计|禅道7.3SQL注入复现

    上周的zentaopms漏洞复现你们觉得还OK吗? 斗哥想要的是一个肯定。 如果你们觉得意犹未尽, 本期将进入, 代码审计的小练习。 Zentaopms v7....

    漏斗社区
  • 代码审计| 这是一款适合练手的漏洞

    0x00 背景 本周,斗哥分析了下zzcms8.2的源码,发现蛮多问题的,觉得这个源码适合萌新们练手或入坑PHP的代码审计。今天决定发出一些发现的问题,当然这个...

    漏斗社区
  • php 后门隐藏技巧

    辛辛苦苦拿下的 shell,几天没看,管理员给删了。这篇文章是我个人小小的总结,很多方面都建立在自己理解上思考,如果你有更好的思路,各位表哥们也可以分享。

    信安之路
  • 如何将wordpress的the_title()进行大小写处理

      有时我们在做wordpress网站时需要将标题的大写字母改成小写字母或小写字母转为大写字母方便调用,那么要如何改造呢?我们知道Wordpress the_t...

    ytkah
  • PHP 必备居家命令

    7、php -l 最有用常用的命令,修改文件定位错误的时候,检测运行正常,结果准备了很多步骤,结果发现语法错误。

    yunfeiyun
  • Nginx+php更改了fastcgi_pass后面的地址php不能正常请求

    1.1.1 通过yum安装Nginx和php,更改了Nginx里面fastcgi_pass后的地址php不能正常请求 1.1.1.1 问题还原: Nginx...

    张琳兮
  • Centos7.3 部署 LAMP 架构动静分离

    一、LAMP动静分离 当需要搭建一个高效的web架构时,采用动静分离无疑是最好的选择,这篇博文将写下来LAMP的动静分离部署方式。

    小手冰凉
  • PHP-实战新闻模块

    2、在inc下创建conn.php文件,用来连接数据库,代码就是上面连接数据库的代码

    cwl_java
  • yum安装新版php7.0

    这两天又装了一下虚拟机,又要编译lnmp,还要弄各种拓展,很麻烦,能不能直接yum安装呢?答案是可以的!

    逐梦的青春

扫码关注云+社区

领取腾讯云代金券