《Metasploit渗透测试魔鬼训练营》 之 SQL注入

来源:互联网 发布:java 格式化xml字符串 编辑:程序博客网 时间:2024/06/02 08:20

SQL注入是WEB应用程序在利用用户输入构造SQL语句时,没有对用户输入进行限制和过滤,导致执行额外的SQL语句查询。

以下环境均为mySQL数据库

一、知识点

1、select * from ta where id=1 === select * from ta where id=’1’ ===  select * from ta where id=”1”(目前只测试idvarcharint的情况下)

2、select * from ta where age=’’’’,返回结果为0‘’’’为四个单引号)

3、select * from ta where id=''or 1=1 --sdf 与 select * from ta where id=''or 1=1 -- sdf不同,注释内容需要在--之后有个空格

4、union连接的两个SQL语句,查询的列数和数据类型必须相同。可以将额外查询的语句放在union语句后面

5、SELECT 2 , 4 FROM ta WHERE id =1,结果显示(2, 4),个数为满足条件的个数

6、information_schemamysql数据库默认数据库,保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema数据库里面。

(1)tables数据表中保存了TABLE_SCHEMA(数据库名)TABLE_NAME(数据表名)

(2)Columns数据表中保存了TABLE_SCHEMA(数据库名),TABLE_NAME(数据表名),COLUMN_NAME(列名),DATA_TYPE(数据类型)(注:有些数据库用户没有权限访问该数据表...

7、select password, concat(first_name, last_name, ‘user_name’) from...  Concat函数将三列变为一列。

8、SELECT id, version() from ta 显示数据库版本,另外,database()当前查询数据库的名称,user()显示数据库登陆用户名,Loadfile(),读取文件

二、过程

1、找到注入点

2、利用union select 1, 2,......找到查询的列数

3、利用mysql数据库中INFROMATION_SCHEMA系统表进行数据查询

(1)union select 1, ..... table_name from INFORMATION_SCHEMA.tables 获取所有表名(union select 1, ..... table_schema,table_name from INFORMATION_SCHEMA.tables获取所有表以及表所属的数据库)   找到感兴趣的数据库和数据表

(2)Union select 1,....table_schema, table_name, column_name, data_type from INFORMATION_SCHEMA.tables where table_name=敢兴趣的数据表,例如users数据表   找到感兴趣的数据表的列名和数据类型

(3)Union select null, password from users 查询感兴趣的数据表中的数据

 

拜了个拜!

0 0
原创粉丝点击