您的位置:首页 > 其它

十一假期做西电的信安比赛(渗透关)

2012-10-02 23:02 357 查看
由于对jsunpackn的研究陷入了困境,正好在群上看到了西电有个信安比赛,所以就来做一下,换换心情。

主页是这里https://csc.xdsec.org/,分为渗透,内核,破解,漏洞挖掘

其中渗透关比较简单,就先做一下

第一关:

注释里面有这些,应该是ascii转码一下得到 Key:f1rsTPa5skey

<!--<p>以娱乐的心情比赛,从Basic开始...\4B\65\79\3A\66\31\72\73\54\50\61\35\73\6B\65\79</p>-->


第二关:

key在cookie之中,同样ascii,转码后得decode(ZzBOZXhUZG8wcm==),这应该是Base64,再次解码得g0NexTdo0r

decode%28ZzBOZXhUZG8wcm%3D%3D%29


第三关:

修改网站语言为English Key:neWor1ds7

第四关:

修改cookie Key:we4kVer1fic4ti0n

第五关:

有个这个,把字典文件下载下来,试一试发现密码是private,得到Key:BruTeCr4cKeR

<!--<a href="passlist.zip">字典文件,怎么又让你看到了?- -!</a>-->


第六关:

这个提示,因为conn.inc是可以直接下载的,而conn.asp不行,地址是 config/conn.inc

<!--tips:conn.inc-->
下载完成之后得到数据库路径,不过其中包含#,#在url解析中会被当做定位符中断掉,换成%23就行了,

下载到数据库后得到 key:Dat4ba4ed0wnlo4d3r

第七关:

开始得到这一串数字,根据特征是utf-7的加密方式,

+ADwAcwBjAHIAaQBwAHQAPgB3AGkAbgBkAG8AdwAuAGwAbwBjAGEAdABpAG8AbgAuAGgAcgBlAGYAPQAiAHUAdABmAC0ANwAuAHAAaABwACIAPAAvAHMAYwByAGkAcAB0AD4-


使用linux下的iconv转码得到,访问该页面,却显示dont have permission

<script>window.location.href="utf-7.php"</script>
根据提示,吧referer: http://xdsec.org/加到http头里面就可以了,这里可以用两个工具Fiddler ,burp,个人以为nc也可以,不过没有测试。
<!--Tip:Ref:http://xdsec.org/-->


第八关:

直接给了一段SAM,让你破解,第一段应该是LM(lan Manager)的加密采用了DES加密方法,第二个是NT使用的加密,使用MD4加密

因为历史遗留问题,可能是兼容性之类的,两种密文都被保留了,LM加密算法比较弱,我们可以从他入手。

不过破解LM只能够获得前六位密码,而且不能区分大小写,这就导致了5位密码比7位密码还要强壮。

h4cker:1004:C4FB857DAAF137F088BE239044A684C5:4708EEA5CCA17F195EE8EACA40153F5B:::


本地工具的话有SAMinside,在线破解的话在这个网站http://www.objectif-securite.ch/en/index.php

吧LM和NT密文都粘贴进去就可得到

第九关:

是一个后台入口,输入没有经过任何验证,并且给了SQL语句的提示

<!-- Bypass It.SELECT * FROM xxx WHERE xxx='user' AND xxx='pass';-->
注意两点,password会先被MD5加密然后再放入SQL语句,所以在password域中写任何东西都是没有意义的

所以可以在username域,把后面的东西注释掉

这要构造输入就可以bypass,进入后台,要注意--后面需要跟空格,这是mysql的注释语法

admin'--
进入后得到key:Byp4s5LoG1n

第十关:

进入后台之后有一个注入,有一个文件上传,看来这就是最后两关了

先来看注入关,有一个输入框,但是get方式传参,在url中尝试注入,注入点特征如下

有错误回显,会虑过一些关键字,但是对大小写没有过滤,数据库为goal,表名为users,两个关键字段为username,password

直接使用union all语句爆出MD5密码,这里有一点,对于字符型的注入点可以用,注释--注释掉最后一个单引号

http://test.xdsec.org/goal/vulnerabilities/sqli/?id=1'%20Union%20all%20Select%20user,password%20From%20users%20--%20&Submit=Submit#

md5解密后是n1md4

这里再说一下,union和union all的区别是,union all部会去掉重复,union注入的特点是,把你想要的结果集,加在正常的结果集后面,

所以只对检索数据库并输出的一些注入点有效。

第十一关:

是一个上传文件的绕过,比较诡异,做法是抓包,然后修改包的上传文件文件名,再传一次,就可以了。

估计机制是这样,它使用了PHP上传文件的MIME文件类型来做过滤,而MIME文件类型的判断是在本地完成的,

所以通过改包可以绕过。

最后的Key:Up1o@Dth3fi1E

因为这次要用到修改http包的工具,和一些诡异注入点的注入工具,决定自己用python写一下,感觉相比之前java写得,简洁了不少

不过身为脚本语言,很多大小写,语法相对于java要容易出错的多,把一个提交http包的Demo发一下,注入也大同小异

import httplib

file = open("test.txt")
headers = {} 
for line in file:
   line=line.replace("\n","")
   print line
   name=line[:line.find(":")] 
   value=line[line.find(":")+1:]
   headers[name]=value
#print headers.keys()
#print headers.values()
conn = httplib.HTTPConnection("test.xdsec.org", 80)
conn.request('POST','/goal/vulnerabilities/upload',None,headers)
'''conn.request('GET', '/goal/vulnerabilities/upload', headers = {"Host": "test.xdsec.org",  
                                    "User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",  
                                    "Accept": "text/plain",
                                    "Cookie": "security=low; PHPSESSID=15200f29316fee5fe9260e1e540b4763"})  
'''
#conn.request('GET','/')
res = conn.getresponse()  
print res.status,res.reason
#print r1.read()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: