一条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'

不懂为啥能查询出数据?

clipboard.png

阅读 2.3k
2 个回答

你的 id MYSQL设置是数字类型,但是你查询的却是字符类型。这时候,MYSQL会进行隐式转化并且不会使用索引。其中字符转数字:

  1. 从左开始处理
  2. 字符串是以非数字开头,转为数字0
  3. 字符串是以数字开头,就直接截取到非数字的位置。也就是你的问题中的: 10

sql语句的执行过程中就出现了隐式转化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题