标题issctf 中最简单的一个web题(耗费了我一个小时。。。。)
题目涉及知识点:
1.php 中的几个函数(等会列举)
2.php parse_str引起的变量覆盖漏洞
一、
我们要了解的php函数即方法
$_SERVER[‘REQUEST_URI’]
parse_url
parse_str
二、
由parse_str引起的变量覆盖漏洞
parse_str() 函数用于把查询字符串解析到变量中,如果没有array 参数,则由该函数设置的变量将覆盖已存在的同名变量。
ok
三、
接下来打开题目
<?php error_reporting(0); include("flag.php"); $hashed_key = 'ddbafb4eb89e218701472d3f6c087fdf7119dfdd560f9d1fcbe7482b0feea05a'; $parsed = parse_url($_SERVER['REQUEST_URI']); if(isset($parsed["query"])){ $query = $parsed["query"]; $parsed_query = parse_str($query); if($parsed_query!=NULL){ $action = $parsed_query['action']; } if($action==="auth"){ $key = $_GET["key"]; $hashed_input = hash('sha256', $key); if($hashed_input!==$hashed_key){ die("
![](cxk.jpg)
"); } echo $flag; } }else{ show_source(__FILE__); }?>
我们只需构造一个get传入
是action=auth
且将
hashed_key变量进行覆盖,传入你想传入的经过sha256后的值
最后传入key即可
样本
?action=auth&hashed_key=xxxxxxx&key=xxx