首页 > 数据库 >SQL注入总结

SQL注入总结

时间:2024-08-31 20:37:20浏览次数:12  
标签:总结 语句 admin user SQL password id 注入

一、万能密码:

什么是万能密码?

  用户进行用户名和密码验证时,网站需要查询数据库。查询数据库就是执行SQL语句。用户登录时,后台执行的数据库查询操作(SQL语句)是:

  【Select user_id,user_type,email From users Where user_id=’用户名’ And password=’密码’】

  这里我们没有对单引号进行过滤,当输入用户名【admin】和万能密码【2’or’1】时,执行的SQL语句为:

  【Select user_id,user_type,email From users Where user_id=’admin’ And password=’2’or’1’】。

3.由于SQL语句中逻辑运算符具有优先级,【=】优先于【and】,【and】优先于【or】,且适用传递性。因此,此SQL语句在后台解析时,分成两句:

  【Select user_id,user_type,email From users Where user_id=’admin’ And password=’2’】和【’1’】,两句bool值进行逻辑or运算,恒为TRUE。

SQL语句的查询结果为TRUE,就意味着认证成功,也可以登录到系统中。                       

1’ or 1 = 1--+

1'or'1'='1'%23

 

二、waf绕过 sql注入

空格:/**/ %0a,%0b,%0c,%0d,%09都可以表示空格

注释符 : --+ %23 # 都可以表示注释符

还有很多绕过参考ctfshow web178-186

 

web187   md5绕过

mysql中,or 语句后面只要是一个1开头的,那就整个结果就是true

所以本质就是要构造or ‘number'

$username = $_POST['username'];
    $password = md5($_POST['password'],true);

md5类的password绕过

万能md5:ffifdyop

$sql = "SELECT * FROM admin WHERE pass = '".md5($password,true)."'";

构造的ffifdyop即可实现下述代码 其中or 一侧存在6 非0即为真满足条件即可登录

SELECT * FROM admin WHERE pass=’ ‘or ’ 6’

 

web188  只能为数字 弱类型比较

mysql弱类型比较

如 ‘4ad’=4
字符串与数字进行比较的时候,mysql会自动将字符串转为数字
而当数字为0,且字符串开头不为其他数字时,弱类型恒成立

那么我们就可以使password = 0 这样对于所有的密码以字符开头的 都是可以匹配的

全部传0即可

 

web189

 

标签:总结,语句,admin,user,SQL,password,id,注入
From: https://www.cnblogs.com/heck1ng/p/18390736

相关文章

  • Sql Server 2005 获取表结构信息
    SELECT表名 =CASEa.colorderWHEN1THENc.nameELSE''END,    序  =a.colorder,    字段名=a.name,    标识 =CASECOLUMNPROPERTY(a.id,a.name,'IsIdentity')WHEN1THEN'√'ELSE''END,    主键 =CASE ......
  • 每周总结
    YARN(YetAnotherResourceNegotiator):YARN是Hadoop的资源管理和作业调度系统。本周你可能深入了解了YARN的架构及其组件,包括ResourceManager和NodeManager。ResourceManager负责全局资源调度和作业调度,而NodeManager负责单个节点的资源管理和监控。通过YARN,Hadoop能够高效地分配集......
  • 9 张图总结 MySQL 架构
    原文:9张图总结一下MySQL架构前言目前大部分的后端开发人员对MySQL的理解可能停留在一个黑盒子阶段。对MySQL基本使用没什么问题,比如建库、建表、建索引,执行各种增删改查。所有很多后端开发人员眼中的MySQL如下图所示:导致在实际工作中碰到MySQL中死锁异常、SQL性能太差......
  • 【SQL注入】代码安全审计经验分享
    一、MyBatis框架中的注入漏洞Mybatis框架支持的CURD功能可以直接搜索XML文件中的${和${}拼接的SQL语句,如果SQL的参数可控,就可能造成注入风险。另外,有的SQL语句使用的是注解开发,把SQL语句可以直接写在了代理接口方法上方,审计的时候可以将两种情况都注意一下,或许有不同的发现。......
  • MySQL教程:从基础到实战
    引言MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛应用于各种Web应用程序和服务器中。本教程将详细介绍MySQL的基础知识,并通过实战作业帮助你巩固所学内容。MySQL的作用?/为什么要学MySQL作为一款流行的开源关系型数据库管理系统(RDBMS),具有高效、可靠、易用和灵活的特......
  • Go实战全家桶之一:goconfig依赖注入扩展之自动注入配置项、工业级巨匠
    开源地址:goconfig:gitclonehttps://gitee.com/ichub/go.git基础结构packageichubconfigimport("gitee.com/ichub/goconfig/common/base/basedto""gitee.com/ichub/goconfig/common/base/baseutils/reflectutils""github.com/gogf/......
  • 数据库的多表联合查询 后面有命令和格式的总结
    多表联合查询实践创建表:MySQL[company]>createtableemployee6(  emp_idintauto_incrementprimarykeynotnull,  emp_namevarchar(50),  ageint,  dept_idint);QueryOK,0rowsaffected(0.65sec)查看表结构:MySQL[company]>d......
  • 20240831-PostgreSQL小课持续更新
    PostgreSQL小课专栏介绍PostgreSQL小课目前已累积了近21万字。小课最新的大纲:目前已完成大概95%的进度:(venv312)➜mypostgresgit:(dev)shscripts/word_statistics_pg_style.shFilename|Chinese|English......
  • SQL注入
    SQL注入(SQLInjection)是一种网络攻击技术,攻击者通过在输入字段中注入恶意的SQL代码,使得应用程序执行非预期的SQL查询,进而绕过身份验证、读取、修改甚至删除数据库中的数据。SQL注入是由不安全的SQL查询引起的,通常是因为应用程序直接将用户输入拼接到SQL查询中,而没有对输入进行充分......
  • SQL Server高级进阶之索引碎片维护
    SQLServer高级进阶之索引碎片维护 一、产生原因及影响索引是数据库引擎中针对表(有时候也针对视图)建立的特别数据结构,用来帮助查找和整理数据,它的重要性体现在能够使数据库引擎快速返回查询结果。当对索引所在的基础数据表进行增删改时,若存储的数据进行了不适当的跨页(SQLServer......