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

新手在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 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入