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

由一条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.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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.1K20

    手工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

    2K41

    注入学习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

    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.1K30

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

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

    2.9K30

    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.3K10

    判断是否存在,还在用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.2K40

    别让 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 语句的特定方案,我们还应该在系统层面采取一些深层防御策略,构建多层次的安全防线。

    66510

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

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

    4.7K00

    Java代码审计 -- SQL注入

    可以发现还会对单引号进行转义,一般只能通过宽字节注入,下面将会在代码的层面展示为什么预编译能够防止SQL注入,同时解释为什么会多出一个转义符 不安全的预编译 拼接 总所周知,sql注入之所以能被攻击者利用...,主要原因在于攻击者可以构造payload,虽然有的开发人员采用了预编译但是却由于缺乏安全思想或者是偷懒会直接采取拼接的方式构造SQL语句,此时进行预编译则无法阻止SQL注入的产生 代码(稍稍替换一下上面的代码...占位符后,又对语句进行拼接,也会导致SQL注入 想要做到阻止sql注入,首先要做到使用?...注入 [clipboard.png] 发现被转义了 使用order by语句 通过上面对使用in关键字和like关键字发现,只需要对要传参的位置使用占位符进行预编译时似乎就可以完全防止SQL注入,然而事实并非如此...注入 username:admin" and 1=1# password:sef [clipboard.png] SQL注入失败 使用like语句 正确写法 mysql: select * from

    2.1K20
    领券