前言
作为一无所知的小白,我仅仅是将此作为摸鱼时的一种解谜游戏看待,因此不会事先去恶补过多的知识,遇到盲点也会果断放弃,上网查攻略,毕竟乐趣作为重要。
每一关的解法并不唯一,可以用抓包工具,也可以只用python,我的想法是能写多少写多少方法。题目什么的我也懒得复制粘贴了,毕竟没有意义。
攻防平台
闯关
第一关
讲道理,看到题目就想到查看源代码。直接F12,答案写在注释里。
jflsjklejflkdsjfklds
第二关
密文再加密一次又变回明文,既然全是小写字母,就很容易想到与13位后的对应字母替换。查询可知这种加密算法叫做Rot13。
23ksdjfkfds
第三关
大致看一下密文,发现最后一位是特殊字符“=”,搜索一下与等号有关的加密算法,查到base64算法。在线解密,最终可以得到key。
jkljdkl232jkljkdl2389
第四关
既然题目都说了MD5,何不一试?
bighp
第五关
小白没什么思路,搜索关键字无果,于是看攻略。修改请求头中的Accept-Language参数。
这意思就是根据语言判断是否是外国人呗……
方法一:
直接修改浏览器的语言,把中文删去。
方法二:
用python的request库伪造请求头的Accept-Language参数,然后访问网址,并打印响应内容。
import requests
url = "http://lab1.xseclab.com/base1_0ef337f3afbe42d5619d7a36c19c20ab/index.php"
headers = {'Accept-Language': 'q=0.5,en-US;q=0.3,en;q=0.2'}#伪造请求头参数
r = requests.get(url,headers=headers)# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)
(TU687jksf6&
第六关
搜索引擎搜索关键字,发现似乎与“User-Agent”这个属性有关。F12到Network观察请求头,找到该属性,后面参数可以明显看出和浏览器相关,或许修改此处即可。
方法一(以Chrome为准):
F12打开开发者工具,点击右上方三个点,点击More Tools
->Network conditions
,直接修改User-Agent的值。
方法二:
用python的request库伪造请求头的User-Agent参数,然后访问网址,并打印响应内容。
import requests
url = "http://lab1.xseclab.com/base6_6082c908819e105c378eb93b6631c4d3/index.php"
headers = {'User-Agent':'HAHA'}
r = requests.get(url,headers=headers)
# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)
meiyouHAHAliulanqi
第七关
没什么想法,看攻略说是藏在响应头里。
方法一:
F12到开发者工具查看Network里的响应头,就看到答案了。
方法二:
用python的request库申请资源,打印响应头。
import requests
url = "http://lab1.xseclab.com/base7_eb68bd2f0d762faf70c89799b3c1cc52/index.php"
r = requests.get(url)
# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.headers)
kjh%#$#%FDjjj
第八关
将鼠标放在超链接“到这里找key_”上时,发现左下角显示链接与点击链接后的网址不同,可知发生了重定向。
搜索浏览器如何阻止重定向,方法无效。
搜索python的request库访问如何阻止重定向,找到解决方法,只需再get函数中添加属性allow_redirects=False
即可。注意申请的链接是超链接显示的链接。
import requests
url = "http://lab1.xseclab.com/base8_0abd63aa54bef0464289d6a42465f354/search_key.php"
r = requests.get(url,allow_redirects=False)
# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)
可以得到一个网址./key_is_here_now_.php
ohHTTP302dd
第九关
搜索关键字,发现登录信息与cookie有关,并且发现测试网址使用了一个名为“Login”的cookie。
F12到Network查看请求头,发现参数Cookie:Login=0
,于是尝试用python的request库伪造请求头的Cookie参数,使Login=1,然后访问网址,并打印响应内容,得到答案。
import requests
url = "http://lab1.xseclab.com/base9_ab629d778e3a29540dfd60f2e548a5eb/index.php"
headers = {'Cookie':'Login=1'}
r = requests.get(url,headers=headers)
#r = requests.post(url,data={'v':'111111'})
# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)
yescookieedit7823789KJ
第十关
发现只能输入3位数字,而999依旧显示太小。
F12查看源代码,发现标签属性中限制了输入长度。
方法一
直接F12在开发者工具里修改源代码,使之能够输入一个极大的数,直接得出答案。
方法二
用python提交不受标签限制
import requests
url = "http://lab1.xseclab.com/base10_0b4e4866096913ac9c3a2272dde27215/index.php"
r = requests.post(url,data={'v':'111111'})
# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)
768HKyu678567&*&K
第十一关
题目崩了,答案就直接放在源代码注释里了。
^&*(UIHKJjkadshf
第十二关
没有思路,上网查攻略,发现与robots协议有关,虽然不知道是怎么想到的……
robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。
既然如此,就直接访问./robots.txt,看到Disallow: /9fb97531fe95594603aff7e794ab2f5f/
。
于是访问该网址,得到提示说此页面不是登陆页面,继续搜索。
一般来说登录页面就是在网址后面加/login.php
,尝试,成功看到答案。
UIJ%%IOOqweqwsdf
结语
至此,基础十二关便结束了。
虽然总是在上网查攻略,但依旧乐趣不减,毕竟都是我没接触过的东西。
感觉学到了不少东西,作为娱乐方式,还是很赚的。
以后可能补上抓包工具的解法。
有兴趣可以逛一逛我的个人博客