平台地址

http://hackinglab.cn/

脚本关

1:key又又找不到了

小明这次哭了,key又找不到了!!! key啊,你究竟藏到了哪里,为什么我看到的页面上都没有啊!!!!!!

  • 过关攻略:

点击通关地址,出现下图界面

点击下,无KEY

发现界面好像有个跳转,所以burpsuite抓包

果然,location跳转。Key出现

2:快速口算

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

  • 过关攻略:
    点击通关地址:出现下图

就是让我们在两秒内计算出来,再次访问的时候数字会变化

口算可以算出来么?显然不可能。那就上脚本吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import re

try:
import requests
except ImportError:
raise SystemExit('\n[!] requests模块导入错误,请执行pip install requests安装!')
print '\n网络信息安全攻防学习平台脚本关第2题\n'

s = requests.Session()

url = 'http://1.hacklist.sinaapp.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'

r = s.get(url)

res = unicode(r.content, ‘utf-8’).encode(‘gbk’)

num = re.findall(re.compile(r'<br/>\s+(.*?)=’), res)[0]
print '当前获取到需要口算的表达式及计算结果为:\n\n%s=%d\n' % (num, eval(num))

r = s.post(url, data={'v': eval(num)})
print re.findall(re.compile(r'<body>(.*?)</body>'), r.content)[0]

3:这个题目是空的

分值: 100

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

  • 过关攻略:
    空是什么?空格?%00?null?/**/ 等等。。逐个测试

4:怎么就是不弹出key呢?

分值: 150

提交说明:提交前14个字符即可过关

  • 过关攻略:

通关地址

点击后跟字一样。没弹窗。我们看下源代码

看到了么。原来是三个return false 在作怪

直接复制下源代码。本地新建1.html,粘贴进去,然后把三个return false删除即可

5:逗比验证码第一期

分值: 100

逗比的验证码,有没有难道不一样吗?

  • 过关攻略:
    点击通关地址如图

抓包,pwd标记。intruder模块爆破即可

这题主要是因为验证码验证后没有立即失效。也就是还可以用

6:逗比验证码第二期

分值: 150

验证便失效的验证码

  • 过关攻略:
    还是爆破。图就不发了,基本一样的原理。把验证码删除,然后继续爆破

7:逗比验证码第三期(SESSION)

分值: 150

尼玛,验证码怎么可以这样逗比。。验证码做成这样,你家里人知道吗?

  • 过关攻略:

方法同第六关。

8:微笑一下就能过关了

分值: 150

尼玛,碰到这样的题我能笑得出来嘛…

  • 过关攻略:

这题我是没看懂,百度了个答案,如下

出现了各种绕过。
1.必须有^^参数
2.参数中不能有. %
3.键名中不能有
(与1矛盾)
4.^_^必须是文件
5.文件不再本地存在
这题学到了新知识,data协议
data://text/plain;charset:unicode,(●’◡’●)
就可构造出文本
对于3绕过的方法是在URL中_和.等价所以参数为^.^
得出flag
hkjasfhsa*&IUHKUH

9:逗比的手机

验证码分值: 150

你的手机号码是13388886666,验证码将会以弹窗的形式给出

  • 过关攻略:

点击通关地址如图

我们直接66尾号号码获取手机验证,然后用67尾号的手机号码登陆即可

这题考的是一种逻辑漏洞的关系

10:基情燃烧的岁月

分值: 150

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

  • 过关攻略:

点击通关地址如图

三位验证码。直接抓包爆破

成功爆破。返回内容:

你伤心的发现他/她正在跟你的前男/女友勾搭…..于是下决心看看前任除了跟你的(男/女)闺蜜勾搭,是不是还跟别的勾搭..

前任的手机号码是:13399999999

获得前任号码

换个前任号码继续爆破。没爆破出来。卡住了。想了些其他思路,都没成功

看下答案。别人都是爆破前任号码得到的key,你们试试。

11:验证码识别

分值: 350

Tips:验证码依然是3位数

  • 过关攻略:

这题验证码验证不存在问题,但是我们看服务器返回的验证码。四位数字,那么是不是可以直接识别验证码呢?

直接上神器

自己配置下即可。这种四位数字识别率还是挺高的。

附个下载地址给需要的吧。

验证码识别

12:XSS基础关

分值: 50

很容易就可以过关.XSS类题目必须在平台登录才能进行.登录地址请参考左侧<子系统>

  • 过关攻略:

简单的XSS,不多说

<script>alert(xss)</script>

13:XSS基础2:简单绕过

分值: 100

很容易就可以过关.

  • 过关攻略:

好像是过滤了script

用img的方法

<img src=x onerror=hackinglab>

14:XSS基础3:检测与构造

分值: 130

Tips:不是很难

  • 过关攻略:

这题花了挺多时间的。发现很多关键字都被过滤。然后没成功。看了下答案,是这样说的

就是当value的值是敏感值时,后边的载荷不会被过滤

过关代码:alert' onmouseover=alert("success!")>

测试成功

15:Principle很重要的XSS

分值: 300

原理/原则/理念很重要…..不是所有的xss都叫特仑苏.. ^_^

Take it easy!

有难度。没绕过,就是发现了过滤了:alert–;–’–script–编码–空格等

onload–src–promote 这三个是没有过滤的,标签无法闭合,会被吃掉>。。

有发现的跟我说下吧。

注入关

1:最简单的SQL注入

分值: 100

Tips题目里有简单提示

  • 过关攻略:

万能密码闭合。不多说

2:最简单的SQL注入(熟悉注入环境)

分值: 100

最简单的SQL注入

  • 过关攻略:

闯关地址源码:

参数为id=1,直接加个or 1=1 ,把内容页全部显示出来

3:防注入

分值: 300

小明终于知道,原来黑客如此的吊,还有sql注入这种高端技术,因此他开始学习防注入!

  • 过关攻略:

宽字节注入

判断列

order by 4

判断显示位

union all select 1,2,3,4

查询语句
union all select 1,user(),3,4 用户
database()数据库
version()版本

跑库跑表语句(如果只显示一个被查询的可以加分页语句) -> limit 0,1

union all select 1,table_name,3,4 from information_schema.tables where TABLE_SCHEMA='walks' limit 0,1 跑表
union all select 1,column_name,3,4 from information_schema.columns where table_name='sae_user_sqli3' limit 1,1 跑列

4:到底能不能回显

分值: 350

小明经过学习,终于对SQL注入有了理解,她知道原来sql注入的发生根本原因还是数据和语句不能正确分离的原因,导致数据作为sql语句执行;但是是不是只要能够控制sql语句的一部分就能够来利用获取数据呢?小明经过思考知道,where条件可控的情况下,实在是太容易了,但是如果是在limit条件呢?

  • 过关攻略:

http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=0&num=1

上面的地址有两个参数start和num 分别修改,看看页面的返回值。发现修改start参数之后。在修改的参数后面会出现一个1,也就是num带的值,判断是Limit注入。直接利用analyse爆破的语句

离别歌博客里面说Limit 注入的地址:https://www.leavesongs.com/PENETRATION/sql-injections-in-mysql-limit-clause.html

5:邂逅

分值: 350

小明今天出门看见了一个漂亮的帅哥和漂亮的美女,于是他写到了他的日记本里。

  • 过关攻略:

图片注入。宽字节。真的第一次遇到。。。。醉了都。常规注入语句

6:ErrorBased

分值: 150

本题目为手工注入学习题目,主要用于练习基于Mysql报错的手工注入。Sqlmap一定能跑出来,所以不必测试了。flag中不带key和#

该题目需要在题目平台登录

  • 过关攻略:

上面已经给了提示ErrorBased 就是基于错误。。也就是报错注入了

报错语句:select * from article where id = 1 and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)

version()就是自己可以修改的地方。当然查列和内容的时候表记得修改

7:盲注

分值: 200

今天我们来学习一下盲注.小明的女朋友现在已经成了女黑阔,而小明还在每个月拿几k的收入,怎么养活女黑阔………..so:不要偷懒哦!

  • 过关攻略:

一般来说我们通过注入获取我们想要得到的数据有三种方式1:基于报错 2:基于内容 3:基于时间。

而在这题上面。有报错但是报错显示出具体内容。想用基于内容的方法也是不行的,返回的内容都是一样的。所以只有基于时间的方法

就是太耗时间了。而且如果因为网络原因也可能会产生错误。

这是我当时报错的图片。

用的是if判断语句来时间延时

and if(substr((select table_name from information_schema.tables where TABLE_SCHEMA='walks' limit 0,1),1,1)='w',sleep(5),1)

8:SQL注入通用防护

分值: 250

小明写了一个博客系统,为了防注入,他上网找了一个SQL注入通用防护模块,GET/POST都过滤了哦!

  • 过关攻略:

题目已经说了。通用防注入。GET,POST都过滤,但是他却没有说cookie的方法啊。

所以这题的解题思路就在cookie上面。直接cookie注入即可

9:据说哈希后的密码是不能产生注入的

分值: 400

  • 过关攻略:

这题我是没看懂的。直接复制个网上的思路

大家先自己看下页面的源代码

其中最关键的语句是

select * from user where userid=".intval($_GET['userid'])." and password='".md5($_GET['pwd'], true) ."'

对传入的userid使用了intval()函数转化为数字,同时将password使用md5()函数进行转化。这就是一个典型的MD5加密后的SQL注入。
只要提交后变成

SELECT * FROM admin WHERE pass = '' or '6<trash>'就行了。

提供一个字符串:ffifdyop

md5后,276f722736c95d99e921722cf9ed621c

再转成字符串:'or'6<trash>

所以构造

我是没成功- -。。。。

好了。终于写完了。。。写着写着突然发现原来这么多,后面就有点敷衍了,不过思路应该都给大家说清楚了。