pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

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

這篇文章主要給大家介紹了關于由php中字符offset特征造成的繞過漏洞的相關資料,文中不僅詳細介紹了該漏洞的形成,更重要的是介紹了修復方式,對大家具有一定的參考學習價值,需

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

總結

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

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇php打開本地exe程序,js打開本地exe應用程序,并傳遞相關參數方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP類的反射來實現依賴注入過程以及相關知識點分享,對此有興趣的朋友跟著小編學習下吧。
php遍歷一個文件夾內的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過遞歸方式實現達到清空一個目錄的效果。本文給大家分享實例代碼,需要的朋友參考
主站蜘蛛池模板: 集菌仪_智能集菌仪_全封闭集菌仪_无菌检查集菌仪厂家-那艾 | 丝印油墨_水性油墨_环保油墨油漆厂家_37国际化工 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 广东青藤环境科技有限公司-水质检测 | 电子巡更系统-巡检管理系统-智能巡检【金万码】 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 台湾HIWIN上银直线模组|导轨滑块|TBI滚珠丝杆丝杠-深圳汉工 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 余姚生活网_余姚论坛_余姚市综合门户网站 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 山东信蓝建设有限公司官网 | 搬运设备、起重设备、吊装设备—『龙海起重成套设备』 | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 温室大棚建设|水肥一体化|物联网系统 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 北京乾茂兴业科技发展有限公司| 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 浙江清风侠环保设备有限公司| 真空上料机(一种真空输送机)-百科 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 查分易-成绩发送平台官网| 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 |