回答

收藏

SELECT NULL,*,NULL,NULL中令人困惑的SQL错误

技术问答 技术问答 250 人阅读 | 0 人回复 | 2023-09-12

背景+ o% H% C- @! u8 Y0 ^9 \
我试图解决第四个现实任务hackthissite.org,不清楚到底是什么SQL我应该注入URL检索电子邮件列表。浪费了几个小时后,我放弃了。我看了一个解决方案。解决方案给出了这个有趣的代码银行。选择查询后,银行代码将注入:
  C: h& F; p% [5 o! FUNION ALL SELECT NULL,*,NULL,NULL FROM email我知道这样做的原因和原因;黑客需要创建与合并的查询列数相同的查询*移动周围以确保显示电子邮件。这不是我的问题。" \  b8 T5 }6 j' c9 y( d; V
问题
$ S: J& L+ ^' }% {: @  L/ W# M5 Z! ]- M我的问题是为什么该代码在MySQL语法错误。经过一些测试,我发现这显然是一个有效的查询:* k+ K0 {+ j) W1 O+ M- i, {
SELECT *,NULL,NULL,NULL FROM email就这样
' e6 j( _5 N& q' T. a8 `SELECT NULL,text,NULL,NULL FROM email但由于某种原因,它不是:6 x* d, h) a; h6 ^
SELECT NULL,*,NULL,NULL FROM email并在“ ,NULL,NULL FROM email4 K* x5 u5 B+ l+ ]6 ?
from附近的语法错误。我不明白为什么会这样。似乎查询只是在。要求的第一列是有效的,与其他列无关。这是个错误吗?MySQL独特的功能(使用不同的任务)SQL变体)?还是我完全误解了?$ I! H2 ]7 s7 b5 O, I
                                                                - `- ~: p! D' w  D1 n
    解决方案:                                                                : l" s5 d' ^7 E- ~3 Z5 m
                                                                这种记录行为:
8 S2 ]3 A: P% ]1 m在选择列表中的其他项目中使用不合格可能会出现分析错误。为避免此问题,请使用合格的tbl_name。参考。
6 d6 I. X( p0 P, z只需按说明操作即可。这应该是一个干净的分析:
8 i+ V5 ]8 e! K- R1 r2 v    select NULL,email.*,NULL,NULL from email
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则