BugKuCTF WEB 变量1
生活随笔
收集整理的這篇文章主要介紹了
BugKuCTF WEB 变量1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://123.206.87.240:8004/index1.php
題解:
<?php error_reporting(0); include "flag1.php"; highlight_file(__file__); if(isset($_GET['args'])){$args = $_GET['args'];if(!preg_match("/^\w+$/",$args)){die("args error!");}eval("var_dump($$args);"); } ?>原理:
綜上
error_reporting(0);// 關閉php錯誤顯示 include?"flag1.php";// 引入flag1.php文件代碼 highlight_file(__file__); if(isset($_GET['args'])){// 通過get方式傳遞 args變量才能執行if里面的代碼$args?=?$_GET['args'];if(!preg_match("/^\w+$/",$args)){// 這個正則表達式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小寫字母和0到9以及下劃線組成die("args?error!");}eval("var_dump($$args);");// 這邊告訴我們這題是代碼審計的題目 } ?>超全局變量:在全部作用域中始終可用的內置變量。
提示說flag在變量里面,經分析只要運行?eval("var_dump($$args);");,falg很有可能就會出來
$$args====>我們可以猜想$args很有可能是一個數組,應該想到的就是超全局變量$GLOBALS
他是用存儲全局變量的,全局變量的值在這個超級全局變量里面是一個鍵值,先當于hashmap的鍵值對
全局變量可以通過變量名在$GLOBALS找到相對應的值。
?
eval()這個函數的作用是字符串里面的php代碼按正常的php代碼被執行
通過構造一個GET參數,直接傳GET一個全局變量即可
http://123.206.87.240:8004/index1.php?args=GLOBALS總結
以上是生活随笔為你收集整理的BugKuCTF WEB 变量1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BugKuCTF WEB 本地包含
- 下一篇: BugKuCTF WEB web5