【AH_training】SQL注入
[TOC]
SQL注入基础:
SQL注入相关基础概念以及防御方法:
SQL注入的产生:
在这里可以对特定参数尝试真假值,真值时正确输出,假值时异常,借此推断注入点。
SQL注入概念:
在输入字符串中拼接想要的内容作为SQL指令得到运行。
SQL注入防御方法:
防御SQL注入的最佳方式就是使用预编译语句,绑定变量。
语义不变,变量用?来表示,攻击者无法改变SQL的结构。
不管输入的是什么均当作字符串处理,不会产生分离解析的情况。
SQLMAP的使用:
SQLMAP简介:
SQLMAP使用方法:
SQLMAP常见参数说明:
SQLMAP实例:
SQL手工注入:
无过滤情况下有回显手工注入:
手工注入意义:
在很多情况下SQLMAP是无法直接使用的,比如有WAF或者回显比较怪异。必须掌握原理,举一反三!
有回显注入界面:
有回显注入步骤:
1.找到注入点,order by注入列数,便于之后的联合查询。
2.联合查询
3.查询数据库名
4.查询数据库中表名:
5.查询特定表中的信息:
无过滤情况下无回显手工注入:
无回显注入界面:
无回显注入步骤:
无回显注入脚本
SQL无回显注入脚本:
SQL注入绕过:
常见绕过姿势:
大小写绕过:
SeLEcT
双写绕过:
selselectect 特定环境中才能用,比如过滤select
空格过滤:
引号绕过:
逗号绕过:
比较符号绕过:
逻辑比较绕过:
注释绕过:
等价函数绕过:
多行注入:
使用;结束当前语句并拼接自己的语句。
宽字节注入:
报错注入:
过滤关键字:
法1:定义一个十六进制字符串,实际上是select语句,将字符串编译一下再去执行。
动态的去执行一条SQL语句,以达到绕过的目的。
法2: 打开一个表,读取数据,然后关闭它。
数据库类型判别:
数据库特征-基本版本函数
数据库特征-基于特殊的函数利用
总结
方法很多,注入时多思考,多在本地进行测试,找不同。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The DC_comics's World!