这可能是最全的SQL注入总结,不来看看吗
按数据库类型分:
0x03 MySQL与MSSQL及ACCESS之间的区别
1.MySQL5.0以下没有information_schema这个默认
按注入方式分:布尔注入、联合注入、多语句注入、报错注入、延时注入、内联注入 按数据库类型分: 0x03 MySQL与MSSQL及ACCESS之间的区别 1.MySQL5.0以下没有information_schema这个默认数据库 2.ACCESS没有库名,只有表和字段,并且注入时,后面必须跟表名,ACCESS没有注释 3.MySQL使用limit排序,ACCESS使用TOP排序(TOP在MSSQL也可使用) 0x04 判断三种数据库的语句 0x05 基本手工注入流程 1.判断注入点 2.获取字段数 order by 二分法联合查询字段数,观察页面变化从而确定字段数 group by 译为分组,注入时也可使用,不过我没用过 3.查看显示位尝试使用联合注入 利用and 1=2或and 0及id=-12查看显示数据的位置 替换显示位改成SQL语句,查看信息(当前数据库,版本及用户名) 再查询所有数据库 查询所有表名 查询所有字段名 查询字段内容 如:查询test库下users表的id及uname字段,用'~'区分id和uname以防字符连接到一起 0x06 报错注入 通用报错语句:(测试版本MySQL8.0.12,MySQL5.0,mariadb5.5版本下) 相关连接: POST中的报错注入 0x07 布尔盲注 我在盲注中常用的函数: 1.char() 解ASCII码 2.mid()截取字符串 3.substr()与mid()相同mssql 按关键字排序,都为截取字符串 4.count()计算查询结果的行数 5.concat()查询结果合并但保持原有行数 6.group_concat()查询结果合并但都放在一行中 7.ascii() 查询ascii码 猜数据库长度(利用二分法) 猜第一个字符,第二个字符,以此类推 查询当前数据库中所有表名 查询第一个表的长度 查询表的第一个字符 查询atelier表里有几个字段 查询第一个字段长度 查询字段第一个字符 查询字段所有行数 查询字段名的行数(查询emails表,uname字段) 查询字段内容 将查询到的ASCII码放到mysql中查询 举例:select char(39); 0x08 延时盲注 利用sleep(3)和if(1=2,1,0)及case进行延时注入,示例: 这个没什么好说的 如果长度大于10,则睡3秒,其他则0秒 case定义条件,when 后面的1表示ture也代表真,当条件为真时,睡3秒,其他则0秒。 0x09 多语句注入 多语句意思就是可以执行多个语句,利用分号进行隔开 0x10 内联注入 利用别名: 0x11 getshell 也可使用dumpfile进行写入 outfile和dumpfile的区别: outfile适合导库,在行末尾会写入新行并转义,因此不能写入二进制可执行文件。dumpfile只能执行一行数据。 数据库写入: 0x12 宽字节注入 当编码位gbk时,%df%27或%81%27数据为空 就是说客户端发送的数据编码为gbk时,那么可能会吃掉转义字符\反斜杠,闭合之后页面恢复正常,存在宽字节注入 测试出来就可以使用sqlmap跑了,23333 加*构造注入点(比-p更稳定),让sqlmap对构造注入点进行注入攻击(*优先级更高) 宽字节防御: 第10行代码必须和第24行必须同时使用,要么就更换编码格式 0x13 二次编码注入 代码中有urldecode() 函数 %2527 先解码成%27再解码成'单引号 -prefix为设置前缀 -suffix为设置后缀 设置后缀,防止sqlmap使用内联注 使用自带的脚本进行注入chardoubleencode.py 0x14 图片上传sql注入 猜结构,为时间戳加文件名 替换and sleep(3) 为*进行salmap 0x15 二次注入 abc' 数据经过addslashes过滤,单引号前面添加反斜杠abc\',但传到数据库的数据还是abc' 假如在如下场景中,我们浏览一些网站的时候,可以现在注册见页面注册username=test',接下来访问xxx.php?username=test',页面返回id=22; 接下来再次发起请求xxx.php?id=22,这时候就有可能发生sql注入,比如页面会返回MySQL的错误。 访问xxx.php?id=test' union select 1,user(),3%23,获得新的id=40,得到user()的结果,利用这种注入方式会得到数据库中的值。 0x16 XFF头注入 id根据网站用户量取一个中间值,测试是否有注入,利用插件设置XFF头,如果网站不报错,可尝试此注入 X-Forward-For:127.0.0.1' select 1,2,user() 0x17 User-Agent请求头注入 0x18 DNS外带日志示例 外带平台 :xip.ioceye.io MSSQL查询当前数据库 MySQL查询数据库版本 0x19 常用过WAF技巧 1.特征字符大小写(基本没用) 2.内联注释 3.特殊字符代替空格 4.等价函数和逻辑符号 5.特殊符号 6.关键字拆分 7.加括号绕过 小括号 花括号 8.过滤and和or下的盲注 9.白名单绕过 拦截信息: 绕过: (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |