Bugku-web4

0x00 2018年10月7日23:02:57

0x01 标准部分

首先来看下题目。
Bugku-web4
然后在firefox里打开这个链接。
Bugku-web4
题目提示说看源码,那就看一下源码。
firefox浏览器,F12
Bugku-web4
这里看到javascript有一些编码。
这些编码一看就知道有猫腻。
好吧,这些编码一看就知道是16进制的,之前见过,但是没有记录。
如果遇到编码可以参考我的这篇博客。
https://blog.csdn.net/qq_36869808/article/details/82962654
我们对这些编码进行解码。
首先是对p1进行解码。
Bugku-web4
这里可以看到,结果并不完整。
对p2也进行解码。
Bugku-web4
这里发现也不是完整的。
看到第四行猜测
Bugku-web4
是不是要把他们加起来。
加起来一起解码,发现一串奇怪的字符。
Bugku-web4
输入这个奇怪的字符。
Bugku-web4
成功拿到flag。

flag

KEY{J22JK-HS11}
如果是做题的话,这里就已经结束了。
本着学习的目的。我们来看一下详细内容。

0x02 加餐

首先来说一下那个javascript代码。

var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';
var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';
eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));

var 是javascript设置变量的一种方法。
贴一个链接:http://www.w3school.com.cn/js/js_variables.asp
Bugku-web4

我们来看一下解密之后的源码,看看这是一个什么东西。
再看这个之前,我们看看unescape这个方法是什么。
这里贴一个链接:http://www.w3school.com.cn/jsref/jsref_unescape.asp
unescape就是一个解码的方法。
然后我们来看一下这个解码之后的javascript代码。

function checkSubmit()
{
	var a=document.getElementById("password");
	if("undefined"!=typeof a){
		if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
	   		 return!0;  
		alert("Error");
  		a.focus();
    	return!1
    }
}document.getElementById("levelQuest").onsubmit=checkSubmit;

function是javascript的方法
document.getElementById 就是获取名为password的控件。
但是在全文中并没有这样的东西。所以猜测可能是后台所为。我乱说的哈。
最后看了别人的wp。发现原来这个是要修改一下id的。
但是直接输入了67d709b2b54aa2aa648cf6e87a7114f1直接就拿到了flag。