[SWPUCTF 2022 新生賽]奇妙的MD5 WP
[SWPUCTF 2022 新生賽]奇妙的MD5 WP
一上來頁面讓我們寫一個奇妙的字符串,可能會有點蒙,查看 F12 源碼也找不到什么有用的信息,我們這時去抓包一下這個網(wǎng)址,會發(fā)現(xiàn):
hint:select * from 'admin' where password=md5($pass,true)
hint 是出題者留的幫助信息,select * from 'admin' 是從名為 admin 的表中選取所有字符,where password=md5($pass,true) 只返回滿足 password=md5($pass,true) 條件的記錄,如果 where 后面條件為 true,則會返回所有管理員信息。
其實這個 hint 在 F12 中,也可以在 network 模塊中找到,network 面板會顯示原始的 HTTP 通信,包括完整頭部信息,在這里我們找到 sta4t.php 文件,里面就會有我們的 hint 了。

有了 hint, 我們根據(jù) password=md5($pass,true) 來尋找合適的字符串,true 代表會將轉化為 \(16\) 字節(jié)的原始二進制數(shù)據(jù),如果我們用數(shù)據(jù)開頭為 or 的字符串,最終會被識別為 password='' or '剩余部分', 剩余部分代表 true,而 '' 代表 false, false or true = true, 所以最終 password = true, 我們要找一個 MD5 哈希 \(16\) 字節(jié)的開頭為 or 的字符串,搜尋得知萬能字符串 ffifdyop, 它構建了一個永真的條件。
輸入后,進入下一頁,我們按 F12 看一下源代碼,就會看到:

要讓 wqh 和 dsy 不相等,但是 md5($x)===md5($y), 根據(jù)繞過的知識,讓 wqh 和 dsy 都傳入數(shù)組,這樣都會返回 Null, 而 Null === Null, 這樣就繞過了,最后得到 flag。


浙公網(wǎng)安備 33010602011771號