亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

由php中字符offset特征造成的繞過漏洞詳解

2024-05-04 23:58:36
字體:
來源:轉載
供稿:網友

phpcms/33578.html">php中的字符offset特性

php中的字符串存在一個非常有趣的特性,php中的字符串也可以像數組一樣進行取值。

$test = "hello world";echo $test[0];

最后的結果就是h。

但是上述的這種特性有時會有意想不到的效果,看下面這段代碼

$mystr = "hello world";echo $mystr["pass"];

上述的代碼的輸出結果是h.這是為什么呢?其實很簡單,和很多其他的語言一樣,字符串在php中也像數組一樣可以使用下標取值。$mystr["pass"]中pass會被進行隱性類型轉換為0,這樣$mystr[0]的輸出結果就是首字母h.
同樣地,如果嘗試如下的代碼:

$mystr = "hello world";echo $mystr["1pass"];

輸出結果就是e.因為1pass會被隱性類型轉換為1,$mystr[1]的輸出結果就是第二個字母e.

字符特性造成的漏洞

下面這段代碼是在在phpspy2006中用于判斷登錄時所使用的代碼。

$admin['check'] = "1";$admin['pass'] = "angel";......if($admin['check'] == "1") {....}

這樣的驗證邏輯如果利用上述的特性就很容易地就可以被繞過。$admin沒有被初始定義為數組類型,那么當我們用字符串提交時phpsyp.php?admin=1abc時,php會取字符串1xxx的第一位,成功繞過if的條件判斷。

上面那段代碼是一個代碼片段,接下來的這段代碼是一段完整的邏輯代碼,來自于php4fun中第5題,比較有意思。

<?php# GOAL: overwrite password for admin (id=1)#  Try to login as admin# $yourInfo=array( //this is your user data in the db# 'id' => 8,# 'name' => 'jimbo18714',# 'pass' => 'MAYBECHANGED',# 'level' => 1# );require 'db.inc.php';function mres($str){ return mysql_real_escape_string($str);}$userInfo = @unserialize($_GET['userInfo']);$query = 'SELECT * FROM users WHERE id = /'' . mres($userInfo['id']) . '/' AND pass = /'' . mres($userInfo['pass']) . '/';';$result = mysql_query($query);if (!$result || mysql_num_rows($result) < 1) { die('Invalid password!');}$row = mysql_fetch_assoc($result);foreach ($row as $key => $value) { $userInfo[$key] = $value;}$oldPass = @$_GET['oldPass'];$newPass = @$_GET['newPass'];if ($oldPass == $userInfo['pass']) { $userInfo['pass'] = $newPass; $query = 'UPDATE users SET pass = /'' . mres($newPass) . '/' WHERE id = /'' . mres($userInfo['id']) . '/';'; mysql_query($query); echo 'Password Changed.';} else { echo 'Invalid old password entered.';}

這道題目網上也僅僅只是給了一個最終的答案,其中的原理都沒有說或者沒有說得很詳細。其實原理就是上面講到的php的字符特性。

題目要求很簡單就是修改admin的密碼,admin的id為1。我們需要思考以下幾個問題:

  • 如何在更新的時候將id修改為1
  • $userInfo['pass'] = $newPass;這行代碼有什么作用,為什么會在if判斷語句中存在這種的代碼

想通了這兩個問題,那么最終的解決方法也有了。將id為8的用戶的密碼修改為8,然后傳入一個userInfo的字符串‘8',突破查詢防護,最后利用$userInfo['pass'] = $newPass將id修改為1。

最終的payload就是;

第一次提交, index.php?userInfo=a:2:{s:2:"id";i:8;s:4:"pass";s:12:"MAYBECHANGED";}&oldPass=MAYBECHANGED&newPass=8,目的是將id為8的用戶的密碼修改為8

第二次提交,index.php?userInfo=s:1:"8";&oldPass=8&newPass=1,這樣序列化$userInfo得到的就是字符串‘8',即$userInfo = ‘8' ,這樣數據庫查詢驗證就可以通過。之后的if驗證也可以通過,通過這行代碼$userInfo['pass'] = $newPass;,由于$newpass的值為1,那么上述代碼變為了$userInfo['pass'] = 1; ,$userInfo由于一個字符串類型,最后得到的是$userInfo='1' ,最后就可以更新id為1的用戶的密碼了。

修復方式

這種漏洞的修復方式也很簡單,事先定義好數據類型同時在使用時最好檢查一下所使用的數據類型是否和預期的一致。否則就會出現上述的繞過的問題。同時要控制好輸入,對輸入的數據要進行檢查不要隨意地使用。

參考

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。

 

注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品18videosex性欧美| 国产69精品久久久| 国产亚洲精品久久久久动| 欧美日韩中文字幕在线视频| 欧美亚洲激情在线| 欧美日韩国产综合视频在线观看中文| 欧美精品一二区| 日韩欧美中文在线| 欧洲亚洲免费视频| 国产这里只有精品| 不用播放器成人网| 91精品中文在线| 成人黄色在线免费| 成人深夜直播免费观看| 欧美日韩电影在线观看| 久久伊人精品一区二区三区| 国产精品丝袜一区二区三区| 国产亚洲成av人片在线观看桃| 中文字幕av一区| 91精品久久久久久久久久久| 2018中文字幕一区二区三区| 韩国精品美女www爽爽爽视频| 中文字幕久久久av一区| 欧美成人全部免费| 97视频在线观看成人| 欧美另类在线观看| 日韩美女激情视频| 亚洲欧美日韩另类| 亚洲国产精品久久久久| 国产一区二区香蕉| 97在线日本国产| 91国产美女视频| 亚洲精美色品网站| 欧美日韩国产一中文字不卡| 国产成人综合一区二区三区| 日韩动漫免费观看电视剧高清| 在线观看国产精品日韩av| 国产精品第3页| 38少妇精品导航| 91精品中国老女人| www.精品av.com| 精品国产乱码久久久久久虫虫漫画| 伊人伊人伊人久久| 国产成人精品午夜| 日韩欧美在线播放| 精品美女国产在线| 久久精品视频在线播放| 精品亚洲一区二区三区在线播放| 国内外成人免费激情在线视频网站| 亚洲欧洲一区二区三区久久| 久久精品在线播放| 亚洲国产91色在线| 97视频在线播放| 国产精品无av码在线观看| 亚洲精品电影久久久| 国产不卡视频在线| 久久久精品网站| 国产精品伦子伦免费视频| 亚洲精品动漫久久久久| 欧美怡春院一区二区三区| 亚洲影影院av| 国产日韩欧美视频在线| 精品国产美女在线| 国内精品小视频| 国产精品九九九| 精品视频偷偷看在线观看| 亚洲精品成人免费| 91久久精品国产91久久性色| 在线观看日韩欧美| 欧美在线xxx| 久久久免费av| 欧美一区二区三区艳史| 亚洲女人天堂色在线7777| 国产精品久久久久久久一区探花| 狠狠色香婷婷久久亚洲精品| 欧美在线性视频| 亚洲区一区二区| 国产一区二区视频在线观看| 欧美精品手机在线| 最新国产精品亚洲| 日本不卡高字幕在线2019| 国产精品久久一区| 91久久在线观看| 久久久久中文字幕| 欧美高清视频免费观看| 奇米4444一区二区三区| 精品视频—区二区三区免费| 中文字幕亚洲一区二区三区五十路| 精品免费在线视频| 狠狠色香婷婷久久亚洲精品| 亚洲成人xxx| 日韩av网站在线| 国产日本欧美在线观看| 国产成人高潮免费观看精品| 久久影视电视剧免费网站清宫辞电视| 久色乳综合思思在线视频| 国产va免费精品高清在线观看| 一区二区三区久久精品| 88国产精品欧美一区二区三区| 欧美精品日韩www.p站| 懂色av中文一区二区三区天美| 亚洲欧美制服第一页| 国产中文字幕亚洲| 午夜免费在线观看精品视频| 欧美在线播放视频| 国产日韩欧美成人| 国产精品入口尤物| 亚洲人成网7777777国产| 欧美成人精品在线视频| 夜夜躁日日躁狠狠久久88av| 国产精品久久久久久久久久东京| 亚洲欧美国产高清va在线播| 精品人伦一区二区三区蜜桃网站| 亚洲欧美日韩区| 91久久精品国产91久久性色| 精品国产乱码久久久久久虫虫漫画| 亚洲一区亚洲二区亚洲三区| 欧美激情第三页| 欧洲日本亚洲国产区| 日韩视频在线观看免费| 欧美色道久久88综合亚洲精品| 2019av中文字幕| 亚洲女人初尝黑人巨大| 少妇精69xxtheporn| 欧美日韩成人黄色| 亚洲人成亚洲人成在线观看| 成人亲热视频网站| 欧美大成色www永久网站婷| 欧美另类69精品久久久久9999| 美乳少妇欧美精品| 日韩欧美中文免费| 亚洲精品国产精品国自产观看浪潮| 日本高清不卡的在线| 亚洲视频欧洲视频| 清纯唯美亚洲综合| 在线视频日本亚洲性| 91精品久久久久久久久中文字幕| 欧美激情日韩图片| 欧美疯狂xxxx大交乱88av| 国产精品免费久久久久影院| 美女扒开尿口让男人操亚洲视频网站| 久久精品久久久久久国产 免费| 中文字幕日韩欧美| 久久免费高清视频| 亚洲va欧美va国产综合剧情| 久久久久久午夜| 欧美精品一区在线播放| 最新的欧美黄色| 成人网址在线观看| 成人黄色av网站| 久久精品国产一区二区电影| 日韩高清电影好看的电视剧电影| 91精品国产综合久久香蕉的用户体验| 高清一区二区三区四区五区| 91伊人影院在线播放| 中文字幕亚洲欧美日韩在线不卡| 98精品国产自产在线观看| 国产成人拍精品视频午夜网站| 精品久久久999| 欧美电影在线播放| 国产一区二区三区中文| 色视频www在线播放国产成人| 欧美成在线视频| 8x海外华人永久免费日韩内陆视频|