猿问

一条SQL注入的SQL语句疑问


正常的SQL是:
select * from post where id = '10';

这里是注入的点:
10" union select id,username,salt,password,5 from user where id="2

对注入的内容进行转义后:
select * from post where id = '10\" union select id,username,salt,password,5 from user where id=\"2'

不懂为啥能查询出数据?

杨魅力
浏览 370回答 2
2回答

jeck猫

你的 id MYSQL设置是数字类型,但是你查询的却是字符类型。这时候,MYSQL会进行隐式转化并且不会使用索引。其中字符转数字: 从左开始处理 字符串是以非数字开头,转为数字0 字符串是以数字开头,就直接截取到非数字的位置。也就是你的问题中的: 10

墨色风雨

sql语句的执行过程中就出现了隐式转化
随时随地看视频慕课网APP
我要回答