NSSCTF EasyP

开启环境:

NSSCTF EasyP_第1张图片

 这一题我们通过分析需要知道一些知识:

1.$_SERVER[‘PHP_SELF’] :正在执行脚本的文件名

例子:127.0.0.1/pikachu/index.php 显示:/pikachu/index.php

2.S​ERVER[′REQUESTU​RI′]:与 _SERVER[‘PHP_SELF’]的区别是会加上参数

例子:127.0.0.1/pikachu/index.php?file=1.php 显示:/pikachu/index.php?1.php

3.basename():返回路径中的文件名部分

例子:127.0.0.1/pikachu/index.php?file=1.php 显示:1.php

127.0.0.1/pikachu/index.php?file=flag.php/1.php 显示:1.php

利用的点:如果传入的参数中出现了非ascii字符则会把它给丢弃。

4.正则绕过–show_source:

[ (空格) +   . 这四个都可以被处理为_

5.highlight_file有读取文件的作用

知道这些知识后,分析代码:可以输出flag但if ($guess === $secret)这个secret)这个secret根本找不到,应该是迷惑人的

开头有:include 'utils.php'

大胆的读它

绕过:preg_match('/utils\.php\/*$/i', $_SERVER['PHP_SELF'])

/index.php/utils.php/%a0

NSSCTF EasyP_第2张图片

页面显示成正常,成功绕过

再绕过:isset($_GET['show_source']))

利用: [ (空格) +   .

/index.php/utils.php/%a0?show+source=1

NSSCTF EasyP_第3张图片

flag!

你可能感兴趣的:(php)