CTF-代码审计(1)——parse_str()变量覆盖

题目连接:http://222.18.158.226:7000/iscc.php

考点:parse_str()变量覆盖

代码:

PHP知识点:

1.parse_url()

参照网址:https://www.php.net/manual/zh/function.parse-url.php

2.$_SERVER[]

参考网址:https://php.net/manual/zh/reserved.variables.server.php

3.parse_str()

参考网址:http://www.w3school.com.cn/php/func_string_parse_str.asp

4hash()

参考网址:https://www.php.net/manual/zh/function.hash.php

漏洞:

parse_str() 变量覆盖漏洞

parse_str()函数往往被用于解析url得query_string,但是当参数值背用户所控制时,很可能导致变量覆盖。类似得有mb_parse_str(),想了解更多可以去网上查查资料

flag:

这里实则就是需要我们提交action=autu key要经过sha256加密过后与hashed_key相等,但是这里我想要去解密这个hased_ke却无果。

这道题考得就是变量覆盖,自己交一个自己知道结果得编码后hashed_key去覆盖最开始那个变量,实则最后就是自己与自己比较。

这里构造?action=auth&key=abc&hashed_key=ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad即可 ,提交则拿到flag

原文地址:https://www.cnblogs.com/tlbjiayou/p/10967152.html

时间: 2024-07-29 23:19:08

CTF-代码审计(1)——parse_str()变量覆盖的相关文章

7. 由一道ctf学习变量覆盖漏洞

0×00 背景 近期在研究学习变量覆盖漏洞的问题,于是就把之前学习的和近期看到的CTF题目中有关变量覆盖的题目结合下进一步研究. 通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞.经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等. 本篇收集了几个CTF中的题目作为例子,对$$,extract(),parse_str()的问题进行总结. 0×

php代码审计之变量覆盖

变量覆盖一般由这四个函数引起 <?php $b=3; $a = array('b' => '1' ); extract($a,EXTR_OVERWRITE); print_r($b); //extract 有三种形式可能导致变量覆盖,第一种是第二个参数为EXTR_OVERWRITE,他表示如果有冲突,覆盖原有的变量.第二种情况是只传入第一个参数,默认为EXTR_OVERWRITE模式,第三种是第二个参数为EXTR_IF_EXISTS,他表示在当前符号表中已有同名变量时,覆盖它们的值,其他的都不

【代码审计】变量覆盖漏洞详解

一.漏洞介绍 变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击 二.漏洞函数 变量覆盖漏洞大多数由函数使用不当导致,经常引发变量覆盖漏洞的函数有:extract(),parse_str()和import_request_variables() 1.extract() 目前最常见的就是这个函数,使用频率最高,导致的漏洞也最多  extract(array,extract_rules,prefix)  参数 描述 array 必需.规定要

关于METINFO5.3漏洞引发的变量覆盖漏洞

一.$$引起的变量覆盖漏洞, 1.Include 调用了flag.php文件(调用文件还可以有require_once()或者require());2.$_200,$_403 定义两个参数,以及参数值.3.判断访问页面的方法是否为post方法和有没有参数flag.4.再接着两个foreach函数遍历数组函数,然后再将获取到的数组键名作为变量,数组中的键值作为变量的值.5.还有一个if判断语句,判断用post方法传输的数据是不是和$flag的值相同,如果相同,输出flag.6.最后输出$_200的

ctf代码审计:

1.变量覆盖: ①:针对extract函数的变量覆盖漏洞: 1 <?php 2 @error_reporting(E_ALL^E_NOTICE); 3 require('config.php'); 4 5 if($_GET['show_source'] === '1') { 6 highlight_file(__FILE__); 7 exit; 8 } 9 10 $user = null; 11 12 // connect to database 13 14 if(!empty($_POST['

变量覆盖漏洞学习及在webshell中的运用

一.发生条件: 函数使用不当($$.extract().parse_str().import_request_variables()等) 开启全局变量 二.基础了解: 1.$$定义 $$代表可变变量,就是说,一个变量的变量名可以动态的设置和使用. 举个简单例子: 变量a被定义成了字符串hello 而变量$a被定于成了字符串world! 但同时$a本身也是个变量 $$a就可以代表两个含义$($a)和$(hello) 两个变量 此时输出的结果如图: 2.extract()定义 extract()可以

初探审计-extract变量覆盖

目录 Ox1 源码 Ox2 函数注解 01 extract()-详 02 file_get_contents()-略 03 trim()-略 Ox3 payload Ox4 我的理解与分析 01 一句话概括 02 错误类型归纳 Ox5 fix方案 Ox6 Ref Ox1 源码 <?php $flag='xxx'; extract($_GET); if(isset($shiyan)) { $content=trim(file_get_contents($flag)); if($shiyan==$c

bugku 变量覆盖

bugku 变量覆盖 代码审计,注重变量 变量覆盖一般使用置空的方式让他们的值相等 解题 白话代码: 一个名叫flag的变量等于'xxx' 将通过GET传过来的数组转为一个名为数组名,值为数组值的变量(如果新的变量和已有变量重名,会将已有变量替换) 如果存在一个名叫shiyan的字符串 将flag变量的值赋给名为content变量 如果变量shiyan和变量content的值相同, 就输出flag的值 否则就输出Oh,no 因为extract()会把符号表中已存在的变量名的值替换掉,所以制造Pa

dedecms SESSION变量覆盖导致SQL注入漏洞修补方案

dedecms的/plus/advancedsearch.php中,直接从$_SESSION[$sqlhash]获取值作为$query带入SQL查询,这个漏洞的利用前提是session.auto_start = 1即开始了自动SESSION会话. 危害: 1.黑客可以通过此漏洞来重定义数据库连接. 2.通过此漏洞进行各种越权操作构造漏洞直接写入webshell后门. 云盾团队在dedemcs的变量注册入口进行了通用统一防御,禁止SESSION变量的传入,修复方法如下: 用文本编辑器打开/mnt/