i春秋 Misc Web 爆破-1 wp

2021.1.10

网安菜鸡今天来划水了!

CTF题目属于萌新入门级,写下WP仅供自己总结练习,大佬请自行绕路,另外如果有师傅愿意有每日轻松一笑环结,还望不吝赐教。【狗头】

在这里插入图片描述
题目提示:
flag就在某六位变量中。

点开链接,是一段PHP源码:
在这里插入图片描述
首先第一行 include “flag.php” 表示包含一个flag.php的文件。
第二行$ a = @$ _REQUEST[‘hello’];命名一个变量a,让他接收超全局变量$ _REQUEST[‘hello’] 。这里有一个知识点,就是什么是超全局变量?

超全局变量:

超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量。
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。超全局变量包括:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
本题涉及了两个超全局变量,分别是$GLOBALS和$_REQUEST。

$GLOBALS

$GLOBALS — 引用全局作用域中可用的全部变量。一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
具体使用方法:来自PHP Document
在这里插入图片描述

$_REQUEST

$_REQUEST — HTTP Request 变量。默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。

第三行,是用正则表达式过滤,如果传入的参数不符合格式要求,则die(‘error’);

@写在变量前面,是忽略错误提示的意思。@用于抑制警告输出,通常用在PHP数据库连接数据库或接收网络传参。

正则表达式

PHP中文网

在这里插入图片描述
正则表达式在匹配字符串时,遵循以下2个基本原则:

1.最左原则:正则表达式总是从目标字符串的最左侧开始,依次匹配,直到匹配到符合表达式要求的部分,或直到匹配目标字符串的结束。
2.最长原则:对于匹配到的目标字符串,正则表达式总是会匹配到符合正则表达式要求的最长的部分;即贪婪模式。

在这里插入图片描述
在这里插入图片描述
正则表达式是一块非常重要的内容,稍后要多加练习以熟练运用。
本题目中传入$REQUEST就会ERROR,因为\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9]’。

接下来是eval(“var_dump($$a);”);
代表执行var_dump这个函数:
var_dump() 函数用于输出变量的相关信息。
在这里插入图片描述
var_dump() 等价于 print_r。
最后一行show_source(__FILE__);代表能把PHP代码打印到网页上,同样能实现这个功能的还有highlight_file()。

解题过程:把全局变量GLOBALS通过hello赋值给$a,就变成了$GLOBALS,然后打印全局变量,就能找到flag:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45253216/article/details/112424973