您有一份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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏喵了个咪的博客空间

phalcon-入门篇6(控制器)

#phalcon-入门篇6(控制器)# ? 本教程基于phalcon2.0.9版本 ##前言## 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀...

32560
来自专栏岑玉海

hadoop 参数

看《Hadoop:权威指南》的时候收集了书上写的一些需要优化的参数,记录了一下子,给大家分享一下吧。 1.mapred.task.timeout ...

38840
来自专栏IT大咖说

饿了么资深Android工程师带你领略Kotlin协程的力量

内容来源:2018 年 6 月 28 日,饿了么资深Android工程师张涛在“droidcon上海2018安卓技术大会”进行《领略kotlin协程的力量》演讲...

65540
来自专栏技术小黑屋

一个Android代码JIT友好度检测工具

利用周末的时间,写了一个检测Android代码JIT友好度的工具,取个名字为DroidJitChecker。希望可以帮助大家快速发现有坏味道的代码,并且及时修正...

12140
来自专栏TSW

剑走偏锋!domain模块居然还能这样用!

不用担心domain会被废除,大胆的使用domain模块吧!

26230
来自专栏北京马哥教育

【翻译】Python async/await Tutorial

原文链接: http://stackabuse.com/python-async-await-tutorial/ 过去几年,异步编程方式被越来越多的程序员使用,...

33050
来自专栏玩转JavaEE

ElementUI中tree控件踩坑记

vhr部门管理模块更新啦!为了让小伙伴们快速理解部门管理模块实现思路,我想通过3篇短文来给大家介绍下大致的实现思路和核心代码。 项目地址:https://git...

51060
来自专栏java一日一条

40+个对初学者非常有用的PHP技巧(二)

考虑使用ob_gzhandler?不,别这样做。它没有任何意义。PHP应该是来写应用程序的。不要担心PHP中有关如何优化在服务器和浏览器之间传输的数据。

10210
来自专栏大前端_Web

nodejs学习一CommonJS和AMD

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

23520
来自专栏马洪彪

spss C# 二次开发 学习笔记(六)——Spss统计结果的输出

Spss的二次开发可以很简单,实例化一个对象,然后启用服务,接着提交命令,最后停止服务。 其中重点为提交命令,针对各种统计功能需求,以及被统计分析的数据内容等,...

35950

扫码关注云+社区

领取腾讯云代金券