原理:代码中的url编码,解码,看懂是什么意思
那就直接看看先
看到的是这个
<body>
<div style="display:none;"></div>
<form action="index.php" method="post">
看看源代码?<br>
<br>
<script>
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));
</script>
<input type="input" name="flag" id="flag">
<input type="submit" name="submit" value="Submit">
</form>
</body>
看到脚本标签里的代码
eval括号中如果是一段字符串,那么这个函数会将这段字符串当成javascript代码运行
如果是一个表达式,则会执行表达式。
unescape()和escape()这两个函数相对应,一个是解码,一个是编码
unescape()用来解码,
escape()用来编码。
这就知道了p1,p2是可以解出来的东西
我用Hbuilder编译了一下,挺简单的
运行
原来还是一串代码。。。
弄得好看点
function checkSubmit()
{
var a=document.getElementById("password");
//设置一个变量a访问ID为“password”的元素
if("undefined"!=typeof a)
//如果a的类型不是undefined,执行
{
if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
//如果a的值等于这个字符串,执行
return!0;
alert("Error");
a.focus();
//这只是一个重定光标的函数
return!1
}
}
document.getElementById("levelQuest").onsubmit=checkSubmit;
//这句代码是说在点击表单名为leveQuest提交时,执行的是checkSubmit这个方法
分析完后大概知道,里面有用的东西应该就是67d709b2b54aa2aa648cf6e87a7114f1这个了
然后提交一下。
这里为什么会想到提交这串字符呢,
a=document.getElementById(“password”);
跟这串代码有关系,因为我们提交的东西就是给这个a的,从if判断语句里就可以看到,我们提交那个字符串,if语句返回值就为真,基本就执行完毕了。