一道学习中所遇到的ctf

步骤:

我们点击题目链接,然后在页面先点击”云平台后台管理中心“

然后url后面跟了参数page,题目提示了一个文件包含,我们试试index.php

看到了输出了ok,应该是进行了当前目录下的文件读取,也就造成了文件包含,我们在试试用file读取windows的固定文件

c:/windows/win.ini

但是现在我们并不知道路径以及当前目录下的flag文件的文件名,输入index.php不能打开文件内容,但是输出了ok,那么出题者思路应该 是让我们把index.php打开来审计。既然存在了文件包含,可以成功执行file伪协议,那么我们尝试一下php伪协议,有一个用法是读取php文件内容

payload是:?page=php://filter/read=convert.base64-encode/resource=xxx.php,将xxx.php换成index.php

成功执行了此协议,此php协议的用法是将index.php文件读取并以base64显示出来,直接拿去base64解码

解出来还有很多html代码,但是php的就这一段,首先要让请求头里面的x-forwarded-for的值为”127.0.0.1“

那么我们先用burp抓个包并发送到repeater,

发现并没有x-forwarded-for服务,那么我们加上”x-forwarded-for: 127.0.0.1“,如果成功则返回:

”Welcome My Admin ! Please include me in!“字样

发现成功回显,那么我们在看看下面的代码,先让if生效,将所需的get参数全部加上,然后看到了preg_replace()函数,就是php中匹配正则表达式的函数,函数里面的参数值分别由三个get参数传参。

而preg_replace()函数里面的第一个和第二个参数存在一个代码执行漏洞,第一个参数的值是一个正则表达式,只要这个值等于:/(.*)/e,那么第二个参数就可以进行代码执行,且第三个参数可以是任意值。

这就是preg_replace的"/e"漏洞

这三个参数可以 通过get请求的参数传参,因此我们对三个get请求参数的值改成这样:?pat=/(.*)/e&rep=phpinfo()&sub=ab

成功代码执行

现在我们读目录文件,直接用system()函数

这就知道了隐藏flag的文件的路径和文件名了,原来整个这么复杂的文件名,猜是肯定猜不到的

接下来直接利用此题的文件包含漏洞读取文件,可以用file协议加文件的整个路径,也可以page后面直接跟文件名读取,txt文件应该可以直接读出内容,因为刚刚试了page后面跟的文件是对当前目录下的文件读取。

成功读取出flag!

本篇贴子只为记录学习而写,总结的思路如果有问题请指明,谢谢各位大佬!

CTF伪协议+preg_replace()函数的代码执行的更多相关文章

  1. http://www.bugku.com:Bugku——PHP伪协议+魔幻函数+序列化的综合应用(http://120.24.86.145:8006/test1/)

      这一道题目,幸好俺有基础知识护体,不然还真干不掉.     首先,登录看题目,取消隐藏代码的注释.可知可输入三个参数txt.file和password并进行逻辑判断:应该让txt==‘welcom ...

  2. PHP 文件系统管理函数与 preg_replace() 函数过滤代码

    案例:在带行号的代码至文件 crop.js 中.用两种方法去掉代码前面的行号,带行号的代码片段: 1.$(function(){ 2. //初始化图片区域 3. var myimg = new Ima ...

  3. PHP代码执行函数总结

    PHP中可以执行代码的函数,常用于编写一句话木马,可能导致代码执行漏洞,这里对代码执行函数做一些归纳. 常见代码执行函数,如 eval().assert().preg_replace().create ...

  4. javascript 伪协议

    [javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...

  5. 【javascript 伪协议】小结

    [javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...

  6. CmsEasy 5.5 cut_image 代码执行漏洞

    3 CmsEasy 5.5 cut_image 代码执行漏洞 3.1 摘要 3.1.1 漏洞介绍 CmsEasy是一款基于PHP+MySQL架构的网站内容管理系统,可面向大中型站点提供重量级网站建设解 ...

  7. preg_replace函数/e 模式下的代码执行+一道例题

    目录 例一 例二 补充 看一道ctf题-----[BJDCTF2020]ZJCTF,不过如此 参考链接 例一 源码: <?php preg_replace('/(.*)/ei', 'strtol ...

  8. XCTF-ics-05(文件包含+preg_replace函数/e修正符下的代码执行漏洞)

    记一道preg_replace函数/e模式下的代码执行漏洞利用的题. 只有设备维护中心页面可以进入,页面没有什么可点击的,查看源代码,发现这里有个参数. 拼接到url,页面显示index,拼接/etc ...

  9. [BJDCTF2020]ZJCTF,不过如此 php伪协议, preg_replace() 函数/e模式

    转自https://www.cnblogs.com/gaonuoqi/p/12499623.html 题目给了源码 <?php error_reporting(0); $text = $_GET ...

随机推荐

  1. Linux 内存分析工具——free命令

    在Linux系统经常被用作服务器系统.当服务器内存吃紧的时候,free命令是我们最常使用的内存分析工具. free使用介绍 free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及 ...

  2. Elemetary OS deepin-wine 版 微信 和 企业微信 输入框字体显示异常解决

    Elemetary OS deepin-wine 版 微信 和 企业微信 输入框字体显示异常解决 最近体验了Elementary OS 这个系统, 话说我之前都是用的Manjora 的各个桌面版, 突 ...

  3. P3387缩点(tarjan+拓扑排序+线性dp)

    题目描述 给定一个 n个点 m 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 输入 ...

  4. Oracle11G DG 搭建及管理

    一.准备工作 环境准备 主数据库Oracle Database安装 备服务器Oracle Database software 安装 二.正式配置 三.基本管理 -------------------- ...

  5. Linux中Hadoop的安装与配置

    一.准备 1,配通网络 ping www.baidu.com 之前安装虚拟机时配过 2,关闭防火墙 systemctl stop firewalld systemctl disable firewal ...

  6. Qt 条件编译 arm windows linux 判断 跨平台

    如果代码里面有些判断需要不同的参数做判断: 办法:在pro文件里面做定义 方法1:直接定义一个宏:用的时候可以直接判断,这样做不好的地方是编译前需要重新切换一下宏 1)定义宏 DEFINES += _ ...

  7. k8s系列---基于canal的网络策略

    文章拷自:http://blog.itpub.net/28916011/viewspace-2215383/ 加上自己遇到的问题简单记录 安装文档:https://docs.projectcalico ...

  8. Windows-server-2008-R2安装Oracle-11g-R2-dataguard

    一.安装环境 1.服务器环境:Windows server 2008 R2 x64 Standard 两台 CPU:8核 内存:8G 硬盘空间:1060G 2.软件:oracle 11g R2 二.安 ...

  9. HttpMessageNotReadableException

    HttpMessageNotReadableException 情况描述: spring boot web项目,尝试使用热部署工具. Controller只写了用来测试异常的方法, 异常处理器去捕获异 ...

  10. 搞定 ElasticSearch系列一 下载安装

    一.安装jdk 二.安装ElasticSearch 1.ElasticSearch下载地址: 2: 配置ElasticSearch 3:启动ElasticSearch 4: 安装ElasticSear ...