首页
学习
活动
专区
圈层
工具
发布

由一条like语句引发的SQL注入新玩法

注:本文首发于先知社区,https://xz.aliyun.com/t/8116 START 0x01前言 群里一位老哥发了一个挺有意思的SQL语句,使用like但是没有使用模糊查询,却匹配出了所有字段...小菜比感觉很新鲜,所以简单进行了一番学习,在学习过程想起一个检测SQL注入的payload: and 1 like 1 但是当时并没有跟进学习,所以应该也不算新技巧了 0x02跟进探索学习 首先从字段值的不同的类型来测试...优先级高于=, 下面两条语句等价 select * from admin where name=1 like 2; select * from admin where name=(1 like 2) 更直观的演示如下...算是一种新型万能密码吧,可看后面的玩法应用 0x05玩法应用 1、检测SQL注入 此处id的字段值为int型(如前面验证的那样,此用法与注入类型无关,而与字段值类型相关) id=1%27%20like...感觉更多的应用于SQL注入检测、盲注当中吧,脑袋瓜不太好,没有发现更多玩法,有其他玩法的师傅们来带带弟弟可以吗,嘤嘤嘤嘤嘤。。。 感谢先知社区@康同学丫丫丫大佬指出的一处错误!!

7.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mysql常用sql语句(9)- like 模糊查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 like应该是最常用的查询条件了 必须滴掌握!...like的语法格式 LIKE '字符串' NOT LIKE '字符串' NOT:取反,不满足指定字符串时匹配 字符串:可以是精确的字符串,也可以是包含通配符的字符串 LIKE支持 和 _ 两个通配符...查询username字段开头不为test且department字段不等于seewo的记录 select * from yyTest where username not like "test%" and...like 区分大小写的栗子 默认情况下,like匹配的字符串是不区分大小写的; 和 like "TEST1" 匹配的结果是一样的 like "test1" 如果需要区分大小写,需要加入 关键字 binary...%,可以使用 转义符 \ 实际场景:搜索功能,搜索框只输入%看是否返回所有记录,如果是的话证明没有做转义可以提个优化项哦!

    5.2K20

    手工SQL注入语句构造

    一提到SQL语句就想到了期末数据库考试的时候,那俩监考老师,哎,不说了,还好咱们数据库老师大发慈悲 ?...知道原理后,我们就可以进行SQL语句的构造了。...3、手工注入access数据库 i、判断是否存在SQL注入漏洞 ? 输入【'】数据库出错,说明【'】被提交至了数据库进行解析 ? ?...接着输入【and 1=1 】页面正常显示,输入【and 1=2 】页面报错,说明存在SQL注入漏洞 ii、知道存在SQL注入漏洞后就可以通过构造SQL查询语句判断后台数据库中存在的表、列、字段了 输入...4、手工联合查询注入 i、输入【order by 12】判断列中字段数量是否等于或小于12个字段,不断更改order by 后面的数字,判断出后台列中字段的数量 ii、输入【union select

    2.1K41

    注入学习1:SQL注入语句大全

    什么是注入 一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?...总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。 如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。...注入过程 判断有无注入点 ' //运行异常 and 1=1 //运行正常 and 1=2 //运行异常 ' //运行异常 and 1'='1' //运行正常 and 1'='2' //运行异常 有时候一些语句如果不能执行...p=YY and user>0 不仅可以判断是否是SQL-SERVER,而还可以得到当前连接到数据库的用户名 ②HTTP://xxx.xxx.xxx/abc.asp?...参考文章 SQL注入语句大全 代码注入_百度百科 版本说明 20180815 开始着手文章 20180815 文章完成时间

    5.3K22

    探秘SQL的LIKE语句:精准查询的得力助手

    探秘SQL的LIKE语句:精准查询的得力助手在SQL的世界里,LIKE语句是进行字符串模式匹配的强大工具,它能让我们在海量数据中快速定位所需信息。...”;LIKE'%com%'会搜索在任意位置包含“com”的字符串,“company”“computer”这类都能被检索到。...例如LIKE'T[^h]%',会查找以“T”开头,但第二个字符不是“h”的字符串,“Tree”“Table”都能被找到。...下面通过具体的查询示例,进一步加深对LIKE语句的理解:例1:从“employees”表中查询“name”字段里包含“晓”字的员工信息,SQL语句为:SELECT*FROMemployeesWHEREnameLIKE...总之,LIKE语句的通配符在实际应用中非常灵活,合理运用这些通配符,能高效地完成各种复杂的字符串查询任务。在编写SQL查询语句时,要特别注意使用标准的通配符“%”和“_”,以确保代码的兼容性和准确性。

    11910

    批量in查询中可能会导致的sql注入问题

    sql注入,例如如果in查询中出现一个关键词为(百度'  )这个单引号在sql中就是比较敏感的字符,这就会导致你的这条语句执行失败。...我们最好可以通过一些算法来控制这个量,最好是自己做一下压力测试,看看到底你的in中能够包含多大的数据量,当然我曾经做过压力测试,in里面可以包含16W多,当时我是包含了64个字长的英语字母和汉字,在进行操作时,可能会因为字段的长度不同...还有一点,我们在一个函数中进行写sql语句时,如果一条sql能够搞定,我们也尽量不要使用第二条,因为数据库的打开与关闭是非常耗时的操作,所以我们在使用编程语言进行写程序时,要尽量使用我们工具类中给我们提供的一些类...语句的情况下,实际上1条sql就直接搞定了。...特别是数据量特别大的情况下,更要减少一个函数中的sql语句,尽量使用拼接,减少数据库的打开与关闭。

    3K30

    php如何判断SQL语句的查询结果是否为空?

    PHP与mysql这对黄金搭档配合的相当默契,但偶尔也会遇到一些小需求不知道该怎么做,例如今天要谈到的:如何判断sql语句查询的结果集是否为空!...  grade  class 1  张三     男    16  17    3 2  李四     男    15  18    2 3  王美丽    女    16  17    5 我们来看看sql...php $sql = "select * from `student` where `age`='16';"; $rows = mysql_query($rs); ?> 以上便是查询功能,当结果集不为空时,一切正常,当数据集为空时,会得到一个空白的ul标签, 作为使用者却不知道为什么没有得到数据,此时我们需要给用户一个提示信息,那么我们就需要判断这个结果集是否为空...php $sql = "select * from `student` where `age`='16';"; $rows = mysql_query($rs); ?> <?

    6.4K10

    java面试精典SQL语句:测测你会多少

    一、java面试笔试SQL语句:测测你会多少(单表) 题目:系统中有一个表WCEmploy(职工号,姓名,部门名,工种,工资) 1、请写出建表语句 create table WCEmploy (...insert into WCEmploy values(null,'1','张三','教学','老师','100'); 3、查询语句 (1)、请用一个SQL语句查询每个部门的总人数 select count...(id) from wcemploy group by department; (2)、请用一个SQL语句查询出不同部门的担任“钳工”的职工平均工资 select department , avg(...gz) from wcemploy where type='钳工' group by department; (3)、请用一个SQL语句查询出不同部门的担任“钳工”的职工平均工资高于2000的部门...b.sno group b.sno ,a.sname 4,查询姓“张”的老师的个数 select count(distinct tname) as 个数 from teacher where tname like

    1.2K30

    判断是否存在,还在用count?试试这条SQL语句,性能杠杠的!

    根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要select count(*)呢?...目前多数人的写法 多次 review 代码时,发现如下现象: 业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。...普遍的SQL及代码写法如下 SQL写法: SELECT count(*) FROM table WHERE a = 1 AND b = 2 Java写法: int nums = xxDao.countXxxxByXxx...= NULL ) { //当存在时,执行这里的代码 } else { //当不存在时,执行这里的代码 } SQL不再使用count,而是改用LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了...业务代码中直接判断是否非空即可 总结 根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。

    1.3K40

    别让 like 变成 后门!MyBatis 防 SQL 注入实战:5 种方案彻底筑牢数据安全防线

    本文总字数:约 7800 字 预计阅读时间:25 分钟 作为一名 Java 开发者,你是否曾在使用 MyBatis 的 like 语句时如履薄冰?...根据 OWASP(开放式 Web 应用安全项目)的统计,SQL 注入连续多年位居 Web 应用安全风险 TOP 10 前列,而 like 语句正是 SQL 注入的重灾区。...一、SQL 注入与 like 语句:为什么这里是重灾区? 在深入解决方案之前,我们必须先理解:为什么 like 语句特别容易引发 SQL 注入问题?...即使用户输入恶意内容,比如张%' OR '1'='1,最终的查询条件会变成%张%' OR '1'='1%,MyBatis 会将整个字符串作为一个查询条件,而不是解析为 SQL 语句的一部分,从而有效防止了注入...七、扩展:SQL 注入的深层防御策略 除了上述针对 like 语句的特定方案,我们还应该在系统层面采取一些深层防御策略,构建多层次的安全防线。

    82710

    mybatis的mapper文件中的一个标签是否可以写多条SQL语句?是否存在事物?

    mybatis的mapper文件中的一个标签是否可以写多条SQL语句?是否存在事物? 这篇博文的由来,朋友面试遇到两个问题?...第一个问题是mybatis的mapper文件中的一个标签是否可以写多条SQL语句? 第二个问题是上述问题如果成立,那么这个标签内是否存在事物?...--下面这个语句是正确的 为了测试是否可以同时执行多条SQL--> INSERT INTO `test` ( `name`,...--下面这个语句是错误的 为了测试是否存在事物--> INSERT INTO `test` ( `name`, `age`...通过查看数据库表数据,第一条语句成功执行了,第二条和第三条语句都没有执行成功,说明mybatis的mapper文件中的一个标签执行多条SQL语句时,不存在数据库事物 [171fa32e5107ff72?

    4.8K00
    领券