sqli-labs学习笔记

Posted shayebudon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqli-labs学习笔记相关的知识,希望对你有一定的参考价值。

1-2关 基于错误的字符串/数字型注入

一、找漏洞

用 and 1=1/1=2判断整形类型,加单引号判断字符串和整形类型)

这题就是?id=1(数字随便输)输入?id=1 and 1=1 以及输入 ?id=1 and 1=2发现并有什么什么变化

当输入?id=1时

页面不报错

当输入?id='时

页面出现报错语句 ,当输入单引号时,页面由正常页面变为报错页面,可以判断时单引号注入漏洞

二、猜解字段数

字段数可能时sql数据库中的变量

确定字段数是因为知道了准确的字段数才可以用union来进行操作获取你想要的东西,因为union select ...后面的字段必须与数据库的字段相对应,就是假设你数据库里有3个字段,但是你输入union select 1,2你会发现会报错在这题中,必须对应三个数字 union select 1,2,3才能够成功执行,所以这才需要order by 来知道字段数从而使用union

输入?id=1' order by 4 --+(--+为注释语句)发现报错

 输入?id = 1' order by 3 --+

页面正常,说明字段数为3。

三、获取数据库名字

知道了数据库字段数后,利用union来获取数据库名字,数据表名字,字段名以及字段名对应的数据信息。这里会先使id=-1',为什么呢,前面已经找了SQL注入漏洞出现报错,那么先要让其存在一个合理的报错形式 ,然后把后面的SQL语句也带进SQL里进行执行操作,从而获取信息。所以就是得让union 前面的为正确的报错行为,在id=1'添加符号,id默认为从0开始所以这是错的吧 或者直接在后面加个and 1=2也是错的吧,and 1=1就不可以了,因为这是正确语句不会报错对吧。这样的话union语句就可以正确执行进去了

输入 ?id=1' and 1=2 union select 1,2,3 --+  然后回车就发现显示了2,3,这意味着2,3字段是可以回显到页面的,可以进行操作,那我直接更改3这个位置代码

进入下面的操作前,先介绍几个函数:

  (1)version():查看数据库版本

  (2)user():查看当前用户

  (3)database():查看使用的数据库

  (4) limit  :limit子句来分批获取所有数据

  (5)group_concat():一次性获取数据库信息。

查询用户,查询数据库,查询数据库版本

输入union select 1,2,user()--+看了下用户名

输入union select 1,2,database(0--+看了下使用得数据库(重点)

输入union select 1,2,version()--+看了下数据库版本

 

 四、查表

想知道用户名和密码 必须先知道数据库

输入 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

我对这句代码理解认为 group_concat(table_name)这个就是合并到一起来显示表名,from information_shchema.tables这是固定的,字面理解就是来自信息图表数据库的存在的表单,然后 where 限制语句 where table_schema='security'只需要查找数据库名为security.找到了显示出所有表单,发现了有users表单,这里就应该会有我们想要的用户密码

 五、查字段名以及字段数值

接着输入 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database()--+

然后就获取了表单里的字段名 发现了有username 和 password 

输入 union select 1,2,group_concat(username,0x3a,password) from users--+

就可以得到每个用户名对应的密码(0x3a是字符冒号':'对应的16进制的ASCII码)

 

以上是关于sqli-labs学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

sqli-labs学习

sqli-labs闯关笔记

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

小白注入学习:sqli-labs--less8学习记录

SQL注入从入门到进阶:sqli-labs靶场通关笔记

sqli-lab笔记--less02 (Error Based- intiger)基于错误的整型注入