黑客榜中榜第一期:
第一关:
查看页面的源代码 看到确定按钮对应着一个函数PassConfirm 在Console中交互输入PassConfirm既可以看到函数体 把x==”go “引号里的内容复制过去,就是密码
<script language ="Javascript" >
function PassConfirm () {
var x=document.password.pass.value
if (x=="go " ) {
alert("恭喜您,答对了,进入第二关!" )
window.open("2sdfadf.htm" ,"_self" ) }
else {
alert("别灰心,再试一次!" )
window.open("error.asp" ,"_self" ) }
}
</SCRIPT >
第二关:
发现鼠标右键被禁用 输入javascript:alert(document.οncοntextmenu=”)到浏览器按回车 然后再图片上右键另存为桌面 注意不要直接拖到桌面上,那样会是一个gif文件 用notepad++打开003.jpg文件,发现密码信息。注意是or3.htm不是or3.html 看到这么一句话:”下一关or3.htm”,有部分乱码 下一关的网址是:http://www.cn-hack.cn/qs/or3.htm
第三关 http URL编码
根据密码提示:%68%74%74%70%3A%2F%2F%77%77%77%2E%63%6E%2D%68%61%63%6B%2E%63%6E%2F%71%73%2F%34%64%66%73%61%2E%68%74%6D 这是html URL编码,可以在线找到解码工具,解码结果:http://www.cn-hack.cn/qs/4dfsa.htm 网络标准RFC 1738做了硬性规定:
"...Only alphanumerics [0-9a-zA-Z], the special characters " $-_. +!*'()," [not including the quotes - ed] , and reserved characters used for their reserved purposes may be used unencoded within a URL. "
" 只有字母和数字[0 -9 a-zA-Z] 、一些特殊符号"$-_.+!*' (),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。"
unescape(‘%68%74%74%70%3A%2F%2F%77%77%77%2E%63%6E%2D%68%61%63%6B%2E%63%6E%2F%71%73%2F%34%64%66%73%61%2E%68%74%6D’) escape 是编码,还有 encodeURI() decodeURI() encodeURIComponent() decodeURIComponent()
第四关:
第五关
通用密码的两个字母,通用密码XX’ or ‘1’ = ‘1试一下:or 顺利通关
黑客榜中榜第二期: 这期不适合非Windows用户
vml代码分析,推荐使用IE浏览器。VML是The Vector Markup Language(矢量可标记语言)的缩写。 查看网页源代码,复制所有代码到本地文件a.html,用notepad++打开文件,Ctrl + H 替换所有 white 为 red,保存文件,然后使用IETester工具打开IE6浏览器,将a.html打开,显示如下结果:
查看源代码,要输入p的值,根据JS代码,显示的p值为空,输入空是错误的答案。我们继续使用IE6浏览器 (其他的测试没成功), 在URL中输入:javascript:alert(p); 将p的值打出来,显示如下 p的值为 left ,url中输入left进入下一关
Ajax技术,查看源代码,更上题类似 此时再使用上关方法javascript:alert(p); 不好使了。源代码中我们看到如下信息:
<script >
openUrlXmlHttpRequstReplace(u+".txt" ,document.getElementById("loginl" ));
</script >
本关需要有SUN的JRE环境 下载三个.class文件到本地,使用DJ Java Decompiler工具打开,找到关键代码 这是Unicode编码,在线找个Unicode传中文工具,将s字符串复制过去,得到
密码是:k\000 j\0000 \0002 \0001 \0003 \0002 \0000 \000 a\000 p\000 p\000l \000 e\000 t\000 \000. \000 \000 h\000 \000 t\000 \000 m\000 \000l
ipython && str = u’…’ & print str
黑客榜中榜第三期:
第一关
e70dfb1dea416cec
第二关
第三关
aHR0cDovL3d3dy5jbi1oYWNrLmNuL2dhbWUvMi83NTEwZC5odG1s
第四关
-..-
... -
--..
--.
.-
-..-/... -/--../--./.-
第五关 这个没弄好
第六关 这个还没解决
<div style="background-image:url(javascript:eval(String.fromCharCode(97,108,101,114,116,40,39,31572,26696,23601,22312,20195,30721,20013,21734,39,41,59)))" >
<div style="background-image:url(javascript:eval(String.fromCharCode(104,116,116,112,58,47,47,119,119,119,46,99,110,45,104,97,99,107,46,99,110,47,103,97,109,101,47,50,47,119,97,110,103,109,97,50,46,104,116,109,108)))" >
第七关 还没解决
第七关地址 地址在代码中 由于是采用的部分网马代码 被杀 所以简化了一下, 主要的SHELL 部分都已经删除了 就留下地址部分了 很简单了, 如果你看不到代码 嘿嘿 就自己思考下咯···
<SCRIPT language="javascript" >
var shce113213d2llcodde = unescape("
" %u446d %u7269 %u6365 %u6f74 %u7972 %u0041 %u6957 %u456e " +
" %u6578 %u0063 %u7845 %u7469 %u6854 %u6572 %u6461 %u4c00 " +
" %u616f %u4c64 %u6269 %u6172 %u7972 %u0041 %u7275 %u6d6c " +
" %u6e6f %u5500 %u4c52 %u6f44 %u6e77 %u6f6c %u6461 %u6f54 " +
" %u6946 %u656c %u0041 %u7468 %u7074 %u6E63 %u682D %u6361 %" +
"%u2E6B %u6E63 %u672F %u6D61 %u2F65 %u2F32 %u3633 %u2E38 %u7468 %u6C6D %u0000 " );
</script>
去掉中间标点符号,所有代码连起来后为:%u446d%u7269%u6365%u6f74%u7972%u0041%u6957%u456e%u6578%u0063%u7845%u7469%u6854%u6572%u6461%u4c00%u616f%u4c64%u6269%u6172%u7972%u0041%u7275%u6d6c%u6e6f%u5500%u4c52%u6f44%u6e77%u6f6c%u6461%u6f54%u6946%u656c%u0041%u7468%u7074%u6E63%u682D%u6361%%u2E6B%u6E63%u672F%u6D61%u2F65%u2F32%u3633%u2E38%u7468%u6C6D%u0000 使用如下代码进行解密:
<script language=javascript>
string="%u446d %u7269 %u6365 %u6f74 %u7972 %u0041 %u6957 %u456e %u6578 %u0063 %u7845 %u7469 %u6854 %u6572 %u6461 %u4c00 %u616f %u4c64 %u6269 %u6172 %u7972 %u0041 %u7275 %u6d6c %u6e6f %u5500 %u4c52 %u6f44 %u6e77 %u6f6c %u6461 %u6f54 %u6946 %u656c %u0041 %u7468 %u7074 %u6E63 %u682D %u6361 %% u2E6B%u6E63 %u672F %u6D61 %u2F65 %u2F32 %u3633 %u2E38 %u7468 %u6C6D %u0000 " ; //string 中的值就是上述代码
ustr=(string);
var code;
var high,low=0 ;
for (var i=0 ;i<ustr.length ;i++)
{
code=ustr.charCodeAt(i);
low=code%6 ;
high=(code-low)/256 ;
document.write (String.fromCharCode(low)+String.fromCharCode(high));
}
</script>