Web安全Day1 - SQL注入、漏洞类型
Web安全Day1 - SQL注入、漏洞类型

1. SQL注入
1.1 漏洞简介
结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言。1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
1.2 漏洞原理
可以通过网站存在的查询语句进行构造,为此开发者对其伤透了脑筋,漏洞不光是查询,可能还存在与API、隐藏链接、http头数据、写入数据等。需要对数据包的结构和传递函数比较了解,建议学习的时候把数据库的日志打开,就可以查看到传递到数据库的语句是什么样子的了。 需要记住的information_schema数据库的SCHEMATA、TABLES、COLUMNS。 SCHEMATA表中存放所有数据库的名,字段名为SCHEMA_NAME。 关键函数database() 当前数据库名、version() 当前mysql版本、user()当前mysql用户.
1.3 漏洞危害
危害较高的漏洞,可以获取敏感信息,修改信息,脱裤,上传 webshell,执行命令。
2. SQL漏洞类型
2.1 区分数字和字符串
数字上是不加单引号的如’2’+‘2’=‘22’而非’4’ 而2+2=4
2.2 内联SQL注入
sql注入主要是靠内联SQL来进行注入的 and or 与或非的判断来进行内联SQL注入,等于在原先的语句上扩展出来的语句
2.3 报错注入
报错注入顾名思义主要是利用数据库报错来进行判断是否存在注入点。如果不符合数据库语法规则就会产生错误。常用的特殊字符:’ \ ; %00 ) ( # "
2.4 盲注
2.4.1 常用函数
1)函数length() 计算数据库长度
id=1' and lengh(database())=8;
2)函数left(a)=b sql的left()函数如果式子成立返回1如果不成立返回0一般用来猜测库的名字 3)函数substr() substr()和substring()函数实现的功能是一样的,均为截取字符串。
select left(database(),1)='r';
substring(string, start, length) substr(string, start, length) length(可选)要返回的字符数。如果省略,则 mid() 函数返回剩余文本
select substr(database(),1,1)='a';
可进行单字符验证可进行全字符验证 4)函数mid() mid(string,start,length) string(必需)规定要返回其中一部分的字符串。 start(必需)规定开始位置(起始值是 1)。 length(可选)要返回的字符数。如果省略,则 mid() 函数返回剩余文本可进行单字符验证可进行全字符验证
select mid(database(),1)='testt';
5)函数ascii() 返回字符串str的最左字符的数值。返回0,如果str为空字符串。返回NULL,如果str为NULL。ASCII()返回数值是从0到255; 只会返回最左边字符的可以配合substr()

6)ord函数 ORD() 函数返回字符串第一个字符的 ASCII 值。

7)函数updatexml()
updatexml(XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 第二个参数:XPath_string(Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 第三个参数:new_value,String格式,替换查找到的符合条件的数据 在当前数据库中演示
8)函数exp() exp是以e为底的指数函数。可能会存在溢出
mysql> select exp(1);
±------------------+
| exp(1) |
±------------------+
| 2.718281828459045 |
±------------------+
1 row in set (0.00 sec)
由于数字太大是会产生溢出。这个函数会在参数大于709时溢出,报错
mysql> select exp(709);
±----------------------+
| exp(709) |
±----------------------+
| 8.218407461554972e307 |
±----------------------+
1 row in set (0.00 sec)
mysql> select exp(710);
ERROR 1690 (22003): DOUBLE value is out of range in ‘exp(710)’
2.4.2 布尔类型注入
如果成功注入会正确显示内容,如果没成功会显示非正常内容。
2.4.3 无报错回显注入
没有任何报错显示,但是能根据页面是否正确显示来进行判断。如搜索注入没有内容,正常搜索应该是有内容的。
2.4.4 时间注入
如果exp1为true返回值为sleep,如果为假返回值为1。ps:前提是网络延迟较低的情况。。
if(length(database())>1,sleep(5),1)
2.5 堆叠查询注入
通过分号隔开执行多条语句。
2.6 Union注入
前面不存在才会执行后面的语句,一般配合的是布尔类型的盲注
2.7 二次注入
在存入数据库的时候做了过滤,但是取出来的时候没有做过滤,而产生的数据库注入。
2.8宽字节注入
数据库大多数为GBK才可以%df
2.9 cookie注入
cookie中的参数也有可能存在注入
2.10 编码注入
Base64
2.11 XFF注入攻击
X-Forwarded-for伪造客户端IP
2.12 DNS_log
dnslog
2.13 组合注入
通过上述所有的注入方式进行组合攻击,如union+盲注
Web安全Day1 - SQL注入、漏洞类型的更多相关文章
- [红日安全]Web安全Day1 - SQL注入实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。
Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说... root@xi4ojin:~# cd ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- 利用SQL注入漏洞登录后台的实现方法
利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读 ...
- 预处理prepareStatement是怎么防止sql注入漏洞的?
序,目前在对数据库进行操作之前,使用prepareStatement预编译,然后再根据通配符进行数据填值,是比较常见的做法,好处是提高执行效率,而且保证排除SQL注入漏洞. 一.prepareStat ...
- WEB 安全之 SQL注入 < 三 > 提权
SQL注入是一个比较“古老”的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果能清楚了解 攻击的全 ...
- WEB 安全之 SQL注入 < 二 > 暴库
SQL注入是一个比较"古老"的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果 ...
- Web安全 之 SQL注入
随着B/S模式应用开发的发展,使用这种模式编写的应用程序也越来越多.相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据 ...
- web安全之SQL注入
一.sql注入是一种将sql代码添加到输入参数中 传递到sql服务器解析并执行得一种攻击手法 例: $sql = "SELECT * FROM goods WHERE Id = 1" ...
随机推荐
- Python-Django模板
前面将hello world输出给浏览器,将数据与 视图 混合在一起,不符合 MVC思想. 模板就是一个文本,用来分离文档的表现形式和内容. 在templates目录下创建一个html模板 然后需要向 ...
- Redis 监控指标
监控指标 性能指标:Performance 内存指标: Memory 基本活动指标:Basic activity 持久性指标: Persistence 错误指标:Error 性能指标:Performa ...
- nginx反向代理Grafana
官方文旦地址:https://grafana.com/tutorials/run-grafana-behind-a-proxy/ 一级路径 只需要修改nginx配置文件 # this is requi ...
- Compose 模板文件
模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多.但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的. 默认的模板文件名称为 docker-compo ...
- 如何通过 Java 代码隐藏 Word 文档中的指定段落
在编辑Word文档时,我们有时需要将一些重要信息保密. 因此,可以隐藏它们以确保机密性. 在本文中,将向您介绍如何通过 Java 程序中的代码隐藏 Word 文档中的特定段落.下面是我整理的具体步骤, ...
- FEX-EMU Wine踩坑记录
FEX是一个用于在ARM64平台运行X86软件的工具,比较成熟,但是网上资料很少,所以就写了这篇FEX运行Wine踩坑记录. Termux的Fex不能用(2022年5月) 要在debian系统安装fe ...
- 2022美团Java后端开发春招实习面经
2022美团Java后端开发春招实习面经 一面 1.讲一下计算机网络的五层架构,每层分别有什么协议 五层架构:应用层.运输层.网络层.数据链路层.物理层 2.什么是 Http 协议,各种 Ht ...
- Nginx代理和动静分离
Nginx代理 微服务项目可能需要 Nginx来实现反向代理,用户请求 Nginx,随后 Nginx将请求转发至 Gateway网关,再由网关转至具体的微服务 一.动态代理 1.1 网关配置 针对使用 ...
- 撸了一个简易的配置中心,顺带整合到了SpringCloud
大家好,我是三友~~ 最近突然心血来潮(就是闲的)就想着撸一个简单的配置中心,顺便也照葫芦画瓢给整合到SpringCloud. 本文大纲 配置中心的概述 随着历史的车轮不断的前进,技术不断的进步,单体 ...
- 01-MySQL8主从详解
主从原理 master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中:slave服务器会在一定时间间隔内对master二进制日志进行探测其是 ...