一、SQL注入原理
??脚本代码在与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),使用预定义的SQL查询语句进行数据查询。能通过参数传递自定义值来实现SQL语句的控制,执行恶意的查询操作,例如查询数据库中的管理员账户密码。
二、测试SQL注入的地方
2. 像登录注册窗口,虽然URL中没有参数,但是这种登录注册,脚本代码肯定会与数据库进行交互,不然它怎么知道你是真用户还是假用户。
??ACCESS数据库中没有一个特定的表存储所有的数据库名、表名和字段名,因此只能通过字典爆破来猜表名和字段名。
ACCESS偏移注入可以解决这种情况:表名已知,列名未知。
Mysql数据库有权限管理:
不同用户的权限不同,也就是说不同权限的用户能够查询的表不一样。
Mysql两种思路:
- 如何判断是ROOT用户还是非ROOT用户?
黑盒测试中可以采用user()
获取当前用户权限,白盒测试则看数据库连接用户。
- 常规类的猜解数据:常见web漏洞原理整理
Mysql5.0以上版本:自带数据库information_schema
;
information_schema
包含mysql数据库中的所有数据库名、表名;information_schema.schemata
记录mysql数据库中的所有数据库名,主要是schema_name
字段;information_schema.tables
:记录表名信息的表;information_schema.columns
:记录列名信息的表。mysql注入获取相关数据:
information_schema
数据库——version()
;user()
;@@version_compile_os()
;database()
。跨库注入:实现当前网站跨库查询其他数据库对应的网站数据。步骤:
id=-1 union select schema_name,2,3 form information_schema.schemata
在burp中,对变量进行base64编码如下图所示:
参考:tomcat 认证爆破之custom iterator使用