2.15
eval执行

用蚁剑连接,找flag。
这个连接密码就是被REQUEST的cmd。

文件包含

用get传:file=shell.txt
然后就能用蚁剑连接,密码ctfhub。
翻找得到flag。
php://input

这个题首先会过滤GET到的file,要求file的前6个字符必须是php://
之后有一个include(file),如果file是php代码的话,能够被执行。
所以用get传file=php://input,来通过substr;
并且用post传<?php system('ls')?>;,在include的时候能被执行。

找flag。
cat打开flag文件,获得flag。

2.20
读取源代码

使用php://filter,直接访问?file=php://filter/resource=/flag

3.7
远程包含

直接用php://input 的方法做就可以了。

然后就是翻找flag啦。


3.8
命令注入

格式:127.0.0.1 & 要使用的命令
(使用& 而不是 && : &不管前一句是否成功都会运行后一句

然后注意这个php不能直接用cat,要用base64转码。

再转回来,获得flag。

过滤cat
和上题解法一样。
过滤空格
先看一下,可以看到flag文件。

在shell中可以用${IFS}代替空格。
获得flag。



过滤目录分隔符
这里可以用 ; 来实现多个命令的依次使用。

然后再base64打开flag文件就行。

3.9
过滤运算符
用 ; 代替 & 就行。


base64解码,获得flag。

综合过滤练习

也就是 | & ; 空格 cat flag ctfhub 都被过滤了。
&和;可以用%0a代替,空格就是${IFS},flag有点头晕 直到我看到这样一篇wp:
CTFHub题解-技能树-Web-RCE【过滤目录分隔符、过滤运算符、综合过滤练习】(二)
%09* 补全 绝了!妙蛙种子吃了妙脆角妙到家了!
所以这样构造url:

cat被过滤?直接换成base64就行。
http://challenge-acb93a2af8e1dc46.sandbox.ctfhub.com:10080/?ip=127.0.0.1%0Acd%09*is_here%0abase64${IFS}%09*_22868659918422.php

解码,得flag。
完工咯!