加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

这可能是最全的SQL注入总结,不来看看吗

发布时间:2022-11-16 19:04:27 所属栏目:MsSql教程 来源:转载
导读: 按注入方式分:布尔注入、联合注入、多语句注入、报错注入、延时注入、内联注入
按数据库类型分:
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.白名单绕过

拦截信息:

绕过:

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!