1、md5 collision,传送参数,函数如下:1
2
3
4
5
6
7
8
9
10
11
12
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "nctf{*****************}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
这个题目如果知道MD5碰撞的概念,同时知道了在PHP中的MD5中的0e的比较,这道题目就十分的简单。
如果md的值是以0e开头的,那么就与其他的0e开头的Md5值是相等的。
例子如下,其他符合/0[eE]\d{30}/的MD5值:
原码 | md5 |
---|---|
QNKCDZO | 0e830400451993494058024219903391 |
s878926199a | 0e545993274517709034328855841020 |
s155964671a | 0e342768416822451524974117254469 |
s1502113478a | 0e861580163291561247404381396064 |
s214587387a | 0e848240448830537924465865611904 |
s878926199a | 0e545993274517709034328855841020 |
s1091221200a | 0e940624217856561557816327384675 |
s1885207154a | 0e509367213418206700842008763514 |
s1836677006a | 0e481036490867661113260034900752 |
s1184209335a | 0e072485820392773389523109082030 |
s1665632922a | 0e731198061491163073197128363787 |
s532378020a | 0e220463095855511507588041205815 |
240610708 | 0e462097431906509019562988736854 |
2、层层递进
查看源代码,最下面发现有子网站,直到最后找到404.html,发现注释里面存在flag
3、JS
AAencode
代码报错,未定义的字符,修改一下,在控制台里面运行一下即可,关于控制台指南
4、单身二十年
使用Burpsuite抓包,发history里面藏着一个search_key.php,查看response,出现flag
5、Are you from google?
修改referer为 https://www.google.com
提供一个http头部字段详解
6、php decode1
2
3
4
5
6
7
8
9
function CLsI($ZzvSWE) {
$ZzvSWE = gzinflate(base64_decode($ZzvSWE));
for ($i = 0; $i < strlen($ZzvSWE); $i++) {
$ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);
}
return $ZzvSWE;
}
eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA=="));
eval函数详解
上述代码最后一行eval改为echo放入本地运行即可