sql注入新玩法-like

一、前言

最近发现一个比较有意思的sql语句,使用like但是没有使用模糊查询,却匹配出了所有的字段

 

 

 

二、学习

 

1、int 型

n_id存在且n_id=1

 

n_id存在且n_id=2

 

由上可知,当字段值类型未int时,字段值=1 like 1(表达式为Ture),即效果为n_id=1,字段值=1 like 2(表达式为False),即效果为n_id=0,mysql中列值从1开始,因此返回为空,n_id=666 ,n_id不存在;进一步验证猜想

 

 

 

2、字符串型

根据前面的测试,意识到可能存在运算符的优先级问题,like优先级高于=,下面两条语句等价

select * from t_emm_sys_user where c_user_name=1 like 2;

select * from t_emm_sys_user where c_user_name=(1 like 2);

 

 

当字段类型为字符串时,字段值=1 like 1(表达式为True),效果为or 1=0 , 字段值=1 like 2(表达式为False),效果为or 1=1

 

3、其他玩法

1、判断列名是否存在

 

2、万能密码

同样还是like语句返回True OR False ,也就是1 OR 0 的问题,在列表为字符串类型的时候,这里就可以实现or 1=1的效果,只要构造出

(xx' like aaa)为False即可

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值