繁体   English   中英

(sql injection)sqli-lab 15: where 子句中的不可理解的行为

[英](sql injection)sqli-lab 15:ununderstandable behavior in where clause

我正在学习 sql 注入,并在我的计算机中设置了 sqli-lab 环境(windows+php+mysql 5.5.53)。

我在解决sqli-lab 15的时候遇到了两个问题,本题源码如下:

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
  1. 当我将帖子数据uname=1' or sleep(3)%23&password=2提交给 url http://127.0.0.1/sqli-labs/Less-15/秒时,响应延迟了大约 13.18 秒预期。为什么会这样?
  2. 以我以前的知识,当条件before and为真时,执行and之后的语句。在发布数据uname=1' and sleep(3)%23&password=2后,结果立即按预期返回。但是当我使用sqlmap 来测试这个 url,我发现 sqlmap 的有效载荷是这样的: uname=1' and (SELECT * FROM (SELECT(SLEEP(2)))IkiC)%23&passwd=2 ,并且睡眠 function 被执行了。这发生了吗?(这不是用户表中的 unname 1。)

我找到了问题2的答案:

SQL 先执行最里面的子查询,再执行下一级。 子查询的结果就是主查询的查询条件。 所以在这种情况下,查询顺序是子查询-> 主查询

答案来自: SQL引擎执行的查询和子查询是按什么顺序执行的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM