亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中變量覆蓋漏洞的案例分析

發布時間:2021-03-19 10:35:52 來源:億速云 閱讀:174 作者:小新 欄目:開發技術

這篇文章主要介紹了PHP中變量覆蓋漏洞的案例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1.extract()變量覆蓋

1.extract()

extract() 函數從數組中將變量導入到當前的符號表。

該函數使用數組鍵名作為變量名,使用數組鍵值作為變量值。針對數組中的每個元素,將在當前符號表中創建對應的一個變量。

該函數返回成功設置的變量數目。

extract(array,extract_rules,prefix)

參考引用:https://www.runoob.com/php/func-array-extract.html

eg:

<?php
extract($_GET); 

echo $name.'<br>';
echo $age.'<br>';
echo $phone.'<br>';

//GET傳參:?name=xiaohua&age=22&phone=112323123

//結果:
// xiaohua
// 22
// 112323123
?>

2.CTF中extract()導致的變量覆蓋

<?php
$flag='flag.php';
extract($_GET); 
if(isset($ceshi))
{
 $content=trim(file_get_contents($flag));
if($ceshi==$content)
{
 echo'flag{xxxxxxx}';
}
else
{
 echo'Oh.no';
}
}
?>

我們大致分析是要求我們GET傳參進去值會經過extract()函數下來會有兩個if 第一個if判斷 ceshi這個變量是否存在 存在則繼續執行if里面的

使用file_get_contents()讀取flag變量里面的文件傳遞給content變量 之后再進行判斷傳進來ceshi變量的值等不等于$content如果等于則打印出flag!

這里我們構造因為通過extract()函數我們傳進的值會變成一個變量 例如我們GET傳入 ceshi=1 則會存在$ceshi=1 所以我們構造GET傳參pyaload:

GET傳參payload:$ceshi=&$flag= 

這樣再程序中會有兩個為空的變量而$flag=空 則覆蓋了上面的$flag中的值 這樣進行判斷 都是空的所以為真則得到flag

3.漏洞修復

不要使用。。。。
參考 官方文檔 修改extract_rules 里面的值為EXTR_SKIP eg:

extract($_GET,EXTR_SKIP);

2.PHP動態變量覆蓋

1.動態變量覆蓋

PHP動態變量是指一個變量名的變量名可以動態的設置和使用,一個變量獲取另一個變量的值作為這個變量的變量名。

<?php
$bar= "a";
$Foo="Bar";
$World="Foo";
$Hello="world";
$a="Hello";

echo $a; //hello
echo $$a; //world
echo $$$a; //foo
echo $$$$$a; //Bar
echo $$$$$$a; //a
echo $$$$$$$a; //hello
echo $$$$$$$$a; //world

?>

CTF中的動態變量覆蓋

https://www.cnblogs.com/xhds/p/12586928.html CTF中的動態變量覆蓋

3.漏洞修復

避免使用這個

3.parse_str()變量覆蓋

1.parse_str()

parse_str() 函數把查詢字符串解析到變量中。

注釋:如果未設置 array 參數,由該函數設置的變量將覆蓋已存在的同名變量。

注釋:php.ini 文件中的 magic_quotes_gpc 設置影響該函數的輸出。如果已啟用,那么在 parse_str() 解析之前,變量會被 addslashes() 轉換。

parse_str(string,array)

參考引用:https://www.runoob.com/php/func-string-parse-str.html

eg:

<?php
parse_str("name=xiaohua&age=22");
echo $name."<br>";
echo $age;
?>
//xiaohua
//22

2.CTF中parse_str()導致的變量覆蓋

<?php
error_reporting(0);
$flag="flag{xiaohua-2020}";
if (empty($_GET['id'])) {
 show_source(__FILE__);
 die();
} else {
 $a = "www.xiaohua.com";
 $id = $_GET['id'];
 @parse_str($id); //
 if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO')) {
  echo $flag;
 } else {
  exit("no no");
 }
}
?>

分析代碼 判斷GET傳入的id值是否為空為空的話輸出源碼終止程序,否則的話則接收id值 經過parse_str() 然后呢if判斷 $a[0] 的值要不等于QNKCDZO

但$a[0]的md5值要等于QNKCDZO這里可以采用Hash比較缺陷來解決這一步 下來就是傳入變量覆蓋$a[0]的值 因為有parse_str所以我們可以構造payload:

payload:http://127.0.0.1/test.php?id=a[0]=s878926199a 

3.漏洞修復

為了防止變量覆蓋,盡量使用指定輸出變量方式

4.import_request_variables()變量覆蓋

1.import_request_variables()

(PHP 4 >= 4.1.0, PHP 5 < 5.4.0)

import_request_variables—將 GET/POST/Cookie 變量導入到全局作用域中

將 GET/POST/Cookie 變量導入到全局作用域中。如果你禁止了register_globals,但又想用到一些全局變量,那么此函數就很有用。

import_request_variables ( string $types [, string $prefix ] ) : bool

參考引用:https://www.php.net/manual/zh/function.import-request-variables.php

2.CTF中import_request_variables()導致的變量覆蓋

<?php
$num=0;
//include 'flag.php';
import_request_variables('gp'); //導入get和post中變量

if($num=="xiaohua"){
 echo 'flag{ xiaohua-2020-3-28}';
 // echo $flag.php;
}else{
 echo "NO!";
}
?> 

//payload:http://127.0.0.1/test.php?num=xiaohua
//flag{ xiaohua-2020-3-28}

3.漏洞修復

盡量不要使用....

5.PHP全局變量覆蓋

1.register_globals

當register_globals全局變量設置開啟時,傳遞過來的值會被直接注冊為全局變量而使用,這會造成全局變量覆蓋

在PHP5.3之前 默認開啟 PHP5.3默認關閉 PHP5.6及5.7已經被移除

2.CTF中全局變量覆蓋

測試環境:php5.2.17

<?php
if ($num){
 echo "flag{xiaohua-2020-3-28}";
}
?> 
//payload:http://127.0.0.1/test.php?num=1
//flag{xiaohua-2020-3-28}

3.漏洞修復

關閉register_globals=off 或者使用5.6以上版本。。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“PHP中變量覆蓋漏洞的案例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

南靖县| 政和县| 张北县| 休宁县| 临沭县| 集贤县| 海林市| 尼木县| 类乌齐县| 武胜县| 上饶县| 河津市| 镇平县| 清苑县| 南昌县| 阿拉尔市| 古田县| 永德县| 甘泉县| 磐安县| 随州市| 钟祥市| 汝阳县| 洛阳市| 德清县| 连城县| 石台县| 文成县| 竹北市| 南部县| 乐陵市| 朝阳县| 香河县| 临高县| 浏阳市| 盐山县| 浦北县| 溧阳市| 广西| 云梦县| 工布江达县|