日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

PHP字符串offset取值特性

發布時間:2025/3/15 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP字符串offset取值特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  在PHP的代碼基礎上,PHP字符串offset取值特性,可以拿來利用,給PHP應用程序帶來安全風險。

  在PHP中,可以像操作數組一樣操作字符串,字符串中的字符可以用類似數組結構中的方括號包含對應的數字索引的形式來進行查找和修改,例如 $test[0]。當然 字符串中字符的排列也是從零開始的。如果需要操作的字符多余一個的話,就考慮使用函數 substr()和 substr_replace()吧。

代碼示例一:

<?php $test = "Hello World"; echo $test[0]; //輸出H echo "<br/>"; echo $test[1]; //輸出e ?>

  Tips:$test[0]?方括號中的數字超出范圍將會產生空白。 非整數類型被轉換成整數,非法類型會產生一個 E_NOTICE級別錯誤, 負數在寫入時會產生一個E_NOTICE,但讀取的是空字符串。

代碼示例二:

<?php $test = "Hello World"; echo $test[0]; //輸出H echo "<br/>"; echo $test['id']; //輸出H ?>

  可以看出,$test[0]等價于$test['id']

  代碼片段可以看出,對于$test['id']這種形式的字符串,在offset取值時鍵值會被轉換為整形,也就是等同于$test[0]這種形式。

漏洞場景:

  在某平臺曾經遇到某道代碼審計的題目,大致還原代碼如下:

示例代碼:

<?php ini_set("display_errors", "On"); error_reporting(0); foreach (array('_COOKIE','_POST','_GET') as $_request) {foreach ($$_request as $_key=>$_value) {$$_key= $_value;} } //$userinfo=333333 $userinfo["username"] = $username; //==> $userinfo[0]=a 賦值以后 $userinfo=a33333 $userinfo["password"] = $password; //==> $userinfo[0]=1 賦值以后 $userinfo=133333 $_SESSION["userinfo"] = $userinfo;var_dump($_SESSION); echo "<br/>"; $userinfo=$_SESSION["userinfo"]; //輸出 array(1) { ["userinfo"]=> string(6) "133333" } if($userinfo["id"] == 1) {echo "flag{xxx}";die(); } ?>

漏洞分析:

  只有當$userinfo["id"] == 1時,才能得到flag,$userinfo由$_SESSION["userinfo"]賦值而來,$_SESSION["userinfo"]又由$userinfo賦值,只要通過變量覆蓋將$userinfo覆蓋為值1xxxx即可,具體參數流程詳見示例代碼。原題還有其他條件,只能覆蓋$_SESSION來解題。上面自己還原的代碼還可以用變量覆蓋直接解題。

<?php
//?userinfo[id]=1 ini_set(
"display_errors", "On"); error_reporting(0); foreach (array('_COOKIE','_POST','_GET') as $_request) {foreach ($$_request as $_key=>$_value) {$$_key= $_value;} }var_dump($_GET); //array(1) { ["userinfo"]=> array(1) { ["id"]=> string(1) "1" } } echo "<br/>";if($userinfo["id"] == 1) {echo "flag{xxx}";die(); } ?>

?

參考文檔:

https://github.com/80vul/webzine/blob/master/webzine_0x06/PSTZine_0x06_0x03.txt

總結

以上是生活随笔為你收集整理的PHP字符串offset取值特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。