web安全暴力破解-SQL注入简介

目录

暴力破解漏洞

简介

暴力破解漏洞的产生是由于服务器端没有做限制,导致攻击者可以通过暴力的手段破解所需信息,如用户名、密码、短信验证码等。暴力破解的关键在于字典的大小及字典是否具有针对性,如登陆时,需要输入4位数字的短信验证码,那么暴力破解的范围就是0000~9999.

如果对登陆失败做次数限制,如登陆失败6次,账号就会被锁定,这是攻击者可以采用的攻击方式是使用同一个密码对多个账户进行破解。如将密码设置为123456,然后对多个账户进行破解。

修复建议

  • 使用复杂的验证码,如滑动验证码等;
  • 如果用户登录失败次数查偶哦设置的阈值,则锁定账号;
  • 如果某个IP地址登陆失败次数超过设置的阈值,则锁定IP地址。这里存在的一个问题是,如果多个用户使用的是同一个IP地址,则会造成其他用户也不能登录。
  • 使用多因素认证,例如"密码+短信验证码",防止账号被暴力破解。
  • 更复杂的技术是使用设备指纹:检测来自同一个设备的登录请求次数是否过多。

SQL注入漏洞

SQL注入漏洞简介

SQL注入是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数被带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。

一般情况下,开发人员可以使用动态SQL语句创建通用、灵活的应用。动态SQL语句是在执行过程中构造的,他根据不同的条件产生不同的SQL语句。当开发人员在运行过程中根据不同的查询标准决定提取什么字段,如(select 语句),或者根据不同的条件选择不同的查询表时,动态地构造SQL语句会非常有用。

以PHP语句为例,命令如下:query = "SELECT \* FROM users WHERE id = _GET['id']" ;

由于这里参数ID可控,且被带入数据库查询,所以非法用户可以任意拼接SQL语句进行攻击。

原理

SQL注入漏洞的产生需要满足以下两个条件。

  • 参数用户可控:前端传给后端的参数内容是用户可以控制的。
  • 参数被带入数据库查询:传入的参数被拼接到SQL语句中,且被带入数据库查询。

分类

  • Union注入攻击

    Union注入是联合两个表进行注入攻击,使用关键词 union select 对两个表进行联合查询。两个表的字段数要相同,不然会出现报错。

  • Boolean注入攻击

    Boolean注入指的是构造SQL判断语句,通过查看页面返回结果推断那些SQL判断条件是成立的,以此获取数据中的数据。

    常用函数:

    -- length(str):返回str字符串的长度。

    -- substr(str, pos, len):将str从pos位置开始截取len长度的字符进 行返回。注意这里的pos位置是从1开始的,不是数组的0开始

    -- mid(str,pos,len):跟上面的一样,截取字符串

    -- ascii(str):返回字符串str的最左面字符的ASCII代码值。

    -- ord(str):同上,返回ascii码

    -- if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0

  • 报错注入攻击

    通过构造恶意输入来触发数据库报错信息,从而获取有关数据库结构和数据的敏感信息。

  • 时间注入攻击

    界面返回值ture 无论输入任何值,返回的情况都是正常的来处。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。

  • 堆叠查询注入攻击

    可以执行多条语句,多条语句之间以分号隔开。

  • 二次注入攻击

    用户提交恶意数据被存入数据库之后,应用程序把他读出来用于生成新的SQL语句,如果没有相应的安全措施,还是有可能发生SQL注入,这种注入叫做二次SQL注入

修复建议

  • 过滤危险字符
  • 使用预编译语句
相关推荐
changlianzhifu16 小时前
当支付飞入寻常巷陌,安全与便捷如何双向奔赴?
安全
枷锁—sha6 小时前
【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)
数据库·sql·学习·安全·网络安全
运筹vivo@6 小时前
攻防世界: fileinclude
web安全
paixingbang7 小时前
企业级API接口如何选?星链引擎4SAPICOM以稳定、高效、安全成为市场优选
安全
逍遥德8 小时前
PostgreSQL 中唯一约束(UNIQUE CONSTRAINT) 和唯一索引(UNIQUE INDEX) 的核心区别
数据库·sql·postgresql·dba
工业甲酰苯胺8 小时前
字符串分割并展开成表格的SQL实现方法
数据库·sql
小句9 小时前
SQL中JOIN语法详解 GROUP BY语法详解
数据库·sql
昊昊该干饭了10 小时前
一个真实查询需求如何从表设计走到高效 SQL
数据库·sql
Elastic 中国社区官方博客12 小时前
使用瑞士风格哈希表实现更快的 ES|QL 统计
大数据·数据结构·sql·elasticsearch·搜索引擎·全文检索·散列表
pengweizhong13 小时前
Dynamic‑SQL2 查询篇:MyBatis 增强利器,让 SQL 像写 Java 一样丝滑
java·sql·教程