CTF伪协议+preg_replace()函数的代码执行
一道学习中所遇到的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()函数的代码执行的更多相关文章
- http://www.bugku.com:Bugku——PHP伪协议+魔幻函数+序列化的综合应用(http://120.24.86.145:8006/test1/)
这一道题目,幸好俺有基础知识护体,不然还真干不掉. 首先,登录看题目,取消隐藏代码的注释.可知可输入三个参数txt.file和password并进行逻辑判断:应该让txt==‘welcom ...
- PHP 文件系统管理函数与 preg_replace() 函数过滤代码
案例:在带行号的代码至文件 crop.js 中.用两种方法去掉代码前面的行号,带行号的代码片段: 1.$(function(){ 2. //初始化图片区域 3. var myimg = new Ima ...
- PHP代码执行函数总结
PHP中可以执行代码的函数,常用于编写一句话木马,可能导致代码执行漏洞,这里对代码执行函数做一些归纳. 常见代码执行函数,如 eval().assert().preg_replace().create ...
- javascript 伪协议
[javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...
- 【javascript 伪协议】小结
[javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...
- CmsEasy 5.5 cut_image 代码执行漏洞
3 CmsEasy 5.5 cut_image 代码执行漏洞 3.1 摘要 3.1.1 漏洞介绍 CmsEasy是一款基于PHP+MySQL架构的网站内容管理系统,可面向大中型站点提供重量级网站建设解 ...
- preg_replace函数/e 模式下的代码执行+一道例题
目录 例一 例二 补充 看一道ctf题-----[BJDCTF2020]ZJCTF,不过如此 参考链接 例一 源码: <?php preg_replace('/(.*)/ei', 'strtol ...
- XCTF-ics-05(文件包含+preg_replace函数/e修正符下的代码执行漏洞)
记一道preg_replace函数/e模式下的代码执行漏洞利用的题. 只有设备维护中心页面可以进入,页面没有什么可点击的,查看源代码,发现这里有个参数. 拼接到url,页面显示index,拼接/etc ...
- [BJDCTF2020]ZJCTF,不过如此 php伪协议, preg_replace() 函数/e模式
转自https://www.cnblogs.com/gaonuoqi/p/12499623.html 题目给了源码 <?php error_reporting(0); $text = $_GET ...
随机推荐
- Android View的绘制机制前世今生---前世
就像上个文章说的,触摸事件的传递机制是从外层到内层的过程. 我们想来看看这个页面里面的层级关系: 以下我们就用what-how-why三部曲的方式来分析View的绘制过程. 由于篇幅很大,所以分几篇来 ...
- Software Testing Concepts
Software Testing Concepts
- [Effective Java 读书笔记] 第6章 枚举和注解
第三十条 用enum代替int 总得来说,使用enum有几点好处 1.编译时的类型安全, 2.可以保证就是自己定义的值,不会有月结风险, 3.每个枚举类型有自己的命名空间 4.枚举可以添加任意的方法和 ...
- 使用chrome控制台调试js代码
1.打开控制台(空白页签即可) 2.将控制台在独立页打开(点击控制台右上角的三个点图标,然后点击如下图中的图标) 3.创建脚本编辑页面 4.页面区域说明 5.花键+回车之行代码 6.常用命令介绍 6. ...
- 《自拍教程17》Python调用命令
他山之石 何为他山之石,就是借助外界工具,来实现自己想要的功能. 命令行界面软件, 即各种命令,我们也叫命令行工具, 此类工具也是测试人员或者开发人员常用的工具的一种. 测试人员可以借助这类工具,快速 ...
- XAMPP与ISS在80端口冲突问题
1.在control界面上通过apach行的config,选择httpd.conf,将其中的listen和ServerName localhost:后面的80改为8080. 2.打开control最右 ...
- Samba搭建Linux和Windows文件共享服务
一.Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享 ...
- 2.【Spring Cloud Alibaba】实现负载均衡-Ribbon
负载均衡的两种方式 如何实现负载均衡 目前已经实现让A总能找到B,如何实现负载均衡 负载均衡的两种方式 服务器端负载均衡 客户端负载均衡 使用Ribbo实现负载均衡 Ribbon是什么 ==Netfl ...
- Python 实现转堆排序算法原理及时间复杂度(多图解释)
原创文章出自公众号:「码农富哥」,欢迎转载和关注,如转载请注明出处! 堆基本概念 堆排序是一个很重要的排序算法,它是高效率的排序算法,复杂度是O(nlogn),堆排序不仅是面试进场考的重点,而且在很多 ...
- css常用样式font控制字体的多种变换
CSS 字体属性定义文本的字体系列.大小.加粗.风格(如斜体)和变形(如小型大写字母)font-family控制字体,由于各个电脑系统安装的字体不尽相同,但是基本装有黑体.宋体与微软雅黑这三款字体,通 ...
