强网杯2018 Web签到
Web签到
比赛链接:http://39.107.33.96:10000
比赛的时候大佬对这题如切菜一般,小白我只能空流泪,通过赛后看别人的wp,我知道了还有这种操作。
这个赛题分为3层
第一层 The Fisrt Easy Md5 Challenge
为MD5弱类型比较,这时候传入两个加密后开头为0e的不想等值就可以绕过了。
if($_POST['param1']!=$_POST['param2'] && md5($_POST['param1'])==md5($_POST['param2'])){ die("success!"); }
例:240610708、QNKCDZO、aabg7XSs、aabC9RqS
param1=240610708¶m2=QNKCDZO
第二层 The Second Easy Md5 Challenge
为MD5强类型比较,这时候传入两个数组,数组的值不相等,造成MD5加密时报错产生NULL=NULL的情况,绕过比较。
if($_POST['param1']!==$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])){ die("success!"); }
param1[]=1¶m2[]=a
第三层 Md5 Revenge Now!
比赛的时候就卡在这了,题目在比较两个值的时候,限制了只能时字符串类型的,所有两个都传数组是传不进来的。
没想到啊没想到,最后既然是会有两个md5加密之后值相同的东西,我搜了半天都没发现呀,是搜索引擎不行吗。。。
if((string)$_POST['param1']!==(string)$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])){ die("success!); }
相关信息参考链接:
https://www.mscs.dal.ca/~selinger/md5collision/
两个MD5值相同的数据块
the two blocks
d131dd02c5e6eec4693d9a0698aff95c 2fcab58712467eab4004583eb8fb7f89
55ad340609f4b30283e488832571415a 085125e8f7cdc99fd91dbdf280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e2b487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080a80d1e c69821bcb6a8839396f9652b6ff72a70
And
d131dd02c5e6eec4693d9a0698aff95c 2fcab50712467eab4004583eb8fb7f89
55ad340609f4b30283e4888325f1415a 085125e8f7cdc99fd91dbd7280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e23487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080280d1e c69821bcb6a8839396f965ab6ff72a70
produce an MD5 collision.
Each of these blocks has MD5 hash 79054025255fb1a26e4bc422aef54eb4.
接下来就好办了,把这两个提交上去就行了
l3m0n大佬的payload
curl -v http://39.107.33.96:10000/ -H "Cookie: PHPSESSID=8iflkrd5vocvllro75oekanat3" --data param1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2¶m2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2"
flag is QWB{s1gns1gns1gnaftermd5}