一道学习中所遇到的ctf

步骤:

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

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

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

  1. 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!

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

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. 【C++】C++程序加载lib静态库

    使用Visual Studio 编写C++程序有几种配置lib的方法,以下是在代码中加载lib文件的方法: 在项目所在目录下创建文件夹lib,将lib文件此路径下,包括Debug和Release两种模 ...

  2. 罗德里格斯旋转公式(Rodrigues' rotation formula)推导

    本文综合了几个相关的维基百科,加了点自己的理解,从比较基础的向量投影和叉积讲起,推导出罗德里格斯旋转公式.公式比较繁杂,如有错误,欢迎评论区指出. 对于向量的三维旋转问题,给定旋转轴和旋转角度,用罗德 ...

  3. centos下利用phantomjs来完成网站页面快照截图

    最近研究了下phantomjs,感觉还是非常不错的. 首先到官网下载一个源码包 http://phantomjs.org/download.html 点击源码包下载如图: 然后在linux下将必要的一 ...

  4. Java TreeMap使用方法

    1.使用默认的TreeMap 构造函数,其中key值需要有比较规则. 2.使用默认的TreeMap 构造函数,Key中添加自定义类型,自定义类型必须继承Comparator. 3.使用比较器类来来实现 ...

  5. [译]课程 3: 更多关于 Jobs 和 JobsDetails

    译者注: 目录在这 [译]Quartz.NET 3.x 教程 译者注: 原文在这 Lesson 3: More About Jobs & JobDetails 正如你在 课程 2 中看到的, ...

  6. 使用github--stanfordnlp--glove训练自己的数据词向量

    1.准备语料 准备好自己的语料,保存为txt,每行一个句子或一段话,注意要分好词.将分好词的语料保存为×××.txt 2.准备源码 下载地址:https://github.com/stanfordnl ...

  7. codewars--js--Pete, the baker

    问题描述: Pete likes to bake some cakes. He has some recipes and ingredients. Unfortunately he is not go ...

  8. pikachu-远程代码、命令执行漏洞(RCE)

    一.RCE概述 1.1 什么是RCE? RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 1.2 远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要 ...

  9. pycharm(迅雷下载链接)

    pycharm2020迅雷下载链接: https://download.jetbrains.com/python/pycharm-professional-2019.3.3.exe?_ga=2.146 ...

  10. MFC/QT 学习笔记(二)——MFC入门

    MFC以C++形式封装了Windows API //实践 编写MFC需要的头文件#include <afxwin.h> 程序执行流程: 实例化应用程序对象(有且只有一个) 执行程序入口函数 ...