php审计-->回调与反向正则匹配代码执行-可控参数$a导致命令执行

news/2024/8/26 18:27:09 标签: php审计

这里说一点,代码执行和命令执行,都需要php.ini关闭safe_mode的情况下。。
如果不能获取环境变量,当然也可以通过com组件或全局变量,但我们只对这种类型

 $cmd = $_GET['cmd']

代码执行,这里有两个传小马常用的危险函数
eval() 和 assert()
首先来找代码层面的phpinfo();然后通过?cmd=system(ipconfig)看是否能调用系统函数。
注意eval写法: eval("$a=$a");
assert写法: assert("$a=$a"); 网页提交phpinfo不能漏分号; ,eval函数是接受字符串的。

在这里插入图片描述
在这里插入图片描述

然后接着来看第二种代码执行,,,回调函数

目的是通过回调函数,调用出phpinfo()这样一个页面,导致代码执行

有两种,第一种,自定义的callback函数里封装着eval函数,

function callback(){
//   $a = $_GET['cmd'];
       eval($a);          //callback函数里封装着eval这样的危险函数,我们通过调用变量a来调用危险函数。
		//给cmd变量传入phpinfo  ?cmd=phpinfo();  实际上传到封装函数里eval参数执行。
}
call_user_func('callback',$a);

最经典的通过给参数?cmd赋值phpinfo();,eval($a)调用执行,变量a这里可控。。
在这里插入图片描述
第二种,,先给变量赋值phpinfo(),变量我们不可控,但传入的assert函数没做过滤,给变量a传入一个assert函数,导致代码执行

$b="phpinfo()";
call_user_func($_GET['a'],$b);

在这里插入图片描述

接着看第三种代码执行,,正则匹配,实际站点验证,phpinfo()不能直接访问,站点做了限制, 这里通过正则匹配到phpinfo();导致代码执行。

既然是做基础,这里抱着扎实的目的,正则匹配的7种类型
普通型,,正则匹配用/xxxx/包围起来,里面是数字or字母

$pattern = '/abc/';
$str = 'abcdefghhj';
preg_match_all($pattern,$str,$res);
var_dump($res);

匹配1次,看到匹配到str的字符了
在这里插入图片描述
第二种 特殊符号 ,[符号前要用\反斜杠转义;

$pattern = '/\[php]\/'; 
$str = '[php]1111122233';

和自定义原子的差别,下面这个匹配 $pattern :

  1. pphp 2.hphp 3.pphp
$pattern = '/\[php\]php/';
$str = '[php]1111122233';

第三种,通用符号 d : 0-9 D:a-z A-Z

$pattern = '/\d{4}(-)\d{2}\\1\d{2}/';
$str = '2021-08-08';
preg_match_all($pattern,$str,$res);
var_dump($res);

这里的d{4} 表示四位数字,(-)表示- ,后面的\1 表示第一个(-),匹配到了$str,匹配到一次
在这里插入图片描述
还有几个常见的符号,,- * + 一般开发都连用 (*?.)

$pattern=/^abc/;  原子必须以abc开头
$pattern=/abc$/ ;	原子必须以abc结尾
$pattern=/^abc$/;   只匹配abc

然后看preg_replace函数
preg_replace函数第一个参数 ($pattern) 开启/e ,存在代码执行

echo $cmd = $_GET['cmd'];
$str = '<php>phpinfo()</php>';

preg_replace("/<php>(.*?)$cmd","\\1",$str);  

看这段代码,, p a t t e r n 存 在 pattern存在 patterncmd,这里是可控的,现在如何通过正则匹配到 s t r ? 很 明 显 , , str? 很明显,, str?cmd只要匹配到"</php" 后面的字符就可
先?cmd=/e ,看到已经匹配到这一部分正则了
在这里插入图片描述
特殊符号/前要转义在这里插入图片描述
第二种情况

 preg_replace("/php/e",$_GET['cmd'],'php');

第二个参数可控,,这里只要匹配到后面的字符php就行
在这里插入图片描述
第三种

$str = $_GET['cmd']
preg_replace("/\[php\](.*?)\[\/php\]/e",replacement:"\\1",$str);

第三个参数可控
在这里插入图片描述

================

代码执行效果完全和php有关,命令执行效果和php本身没有关系

常用的命令执行函数: system() passthru() 函数 ``执行
exec函数 shell_exec函数

$a = $_GET['a'];
echo "<pre>";
passthru($a);

在这里插入图片描述

//$cmd = $_GET['cmd'];
//            //echo "<pre>";
//system($cmd); system执行函数

这里注意exec函数执行查询只能返回一行,
这里用exec函数写入11.txt

?cmd=echo >> 11.txt
在这里插入图片描述通过`` 命令执行
在这里插入图片描述
很多站点对可控的参数做了Escapeshellcmd处理
对特殊符号做了过滤,但常见的net user ipconfig还可执行,
在这里插入图片描述

在这里插入图片描述

如果开发只对可控做了Escapeshellcmd和escapeshellcmd()函数处理,草草了事,那么可尝试多个参数的注入,这里水平不够,请参考这篇文

https://paper.seebug.org/164/


http://www.niftyadmin.cn/n/929226.html

相关文章

Build tool

什么是构建工具 构建工具能够帮助你创建一个可重复的、可靠的、携带的且不需要手动干预的构建。构建工具是一个可编程的工具&#xff0c;它能够让你以可执行和有序的任务来表达自动化需求。假设你想要编译源代码&#xff0c;将生成的class文件拷贝到某个目录&#xff0c;然后将…

php审计--任意文件上传配合目录文件包含getshell

在黑盒中 源码 数据库配置文件都是很不好找的&#xff0c;&#xff0c;但源码审计不同 所有的漏洞&#xff0c;成因都是相同的&#xff0c;但我们自以最基础的作为代表&#xff0c; 这里文件上传这个点可以配合文件包含一块利用&#xff0c;当某个站对数据处理不严时&#xff…

wpf 右下角弹出窗

wpf 右下角弹出窗 原文:wpf 右下角弹出窗自己写的wpf 弹出框&#xff0c;欢迎拍砖&#xff0c;动画都写在了后台代码&#xff0c;前台代码不太重要&#xff0c;用了一下iconfont&#xff0c;具体样式我就不贴出来了&#xff0c;本次主要是后台代码的动画 需要有父级窗口才可以使…

第八次作业(课堂实战)- 项目UML设计(团队)

1. 团队信息 队名&#xff1a;小白吃队成员&#xff1a; 后敬甲 031602409卢泽明 031602328蔡文斌 031602301葛亮 031602617刘浩 031602423黄泽 031602317黄婧茹 031602315组长&#xff1a;后敬甲2.团队分工 WBS Alpha版本 任务槽 登陆注册界面完成自选窗口的识别结算功能实现学…

php审计--灰盒角度来复现经典反序列化

站在巨人的肩膀上做反序列化复现&#xff0c;&#xff0c; 这里已经找了fwrite()函数和read()函数&#xff0c;file_get_contents($file);都不能代替fopen()函数做复现&#xff0c;&#xff0c;本人水平有限&#xff0c;希望读者不要介意&#xff0c; 我们从灰盒的角度做学习…

App Store评论优化,让你的APP评论上涨

App Store评论优化怎么做 App Store评论优化&#xff0c;让你的APP评论上涨 关于「ASO评论优化」&#xff0c;主要分为三块。换评论&#xff0c;买评论&#xff0c;引导用户写评论。 可能有些刚接触ASO的朋友会问&#xff0c;为什么要给APP做评论呢?ASO优化师的工作不是主要做…

使用 fetch 封装网络请求,返回promise 对象

1.fetch 的概念和用法 fetch 提供了对 Request 和 Response &#xff08;以及其他与网络请求有关的&#xff09;对象的通用定义。使之今后可以被使用到更多地应用场景中&#xff1a;无论是service workers、Cache API、又或者是其他处理请求和响应的方式&#xff0c;甚至是任何…

php审计--通过php伪协议配合文件包含写入shell

有群友问过这样一个问题&#xff0c;&#xff0c; http:xxx/123.jpg 传上这样的图片马能不能连到shell&#xff1f; 这有几种情况&#xff0c;&#xff0c;&#xff0c;php解析吧jpg解析成php&#xff0c;iis吧jpg解析成php都可以 我们这里通过php伪协议存在文件包含的页面做个…