1. 程式人生 > 實用技巧 >NSCTF之MD5碰撞和php strcmp函式繞過

NSCTF之MD5碰撞和php strcmp函式繞過

1、開啟網頁如圖,F12發現code.txt:

2、需要php程式碼審計,提示需要get方式提交3個引數(v1、v2、v3)且v1和v2的值不同,但md5後的值相同(中間是&&與符號),為真時再利用strcmp函式判斷v3和$flag是否相同,為真輸出flag;

3、在問了幾個朋友後,得到一些提示,首先MD5碰撞有工具,可以生成,另外strcmp函式有繞過漏洞,這就簡單了

4、下載fastcoll工具建立一個文字檔案init.txt,隨便寫入1,使用命令fastcoll -p init.txt -o 1.txt 2.txt就可以在當前目錄生成不同內容但MD5相同的檔案:

5、用下面程式碼計算MD5並URLENCODE;

<?php 
function  readmyfile($path){
    $fh = fopen($path, "rb");
    $data = fread($fh, filesize($path));
    fclose($fh);
    return $data;
}
echo 'MD5:'. md5( (readmyfile("1.txt")));
echo "<br><br>";
echo  'URLENCODE '. urlencode(readmyfile("1.txt"));
echo
"<br><br>"; echo 'URLENCODE hash '.md5(urlencode (readmyfile("1.txt"))); echo "<br><br>"; echo 'MD5::'.md5( (readmyfile("2.txt"))); echo "<br><br>"; echo 'URLENCODE '. urlencode(readmyfile("2.txt")); echo "<br><br>"; echo 'URLENCODE hash '.md5( urlencode
(readmyfile("2.txt"))); echo "<br><br>"; ?>

6、strcmp函式的繞過是這樣的(參考:https://blog.csdn.net/dyw_666666/article/details/82349432),重點截圖如下:

7、開始burp的操作,引數值不要用雙引號,連線多個引數用&,拿到flag: