[Security] Webgoat 的 XSS 與 SQL injection 初階練習
Webgoat 裡面有許多不同類型的漏洞,
這次做的是 XSS (Cross-site scripting) 和 SQL injection 的初階練習,
簡單分享一下吧~
1. XSS
忘了是在 Webgoat 的哪一個項目了 (因為抓圖沒抓到標題部分)…
總之是在 XSS 的那一區裡面的題目~
基本上就是一個留言板可以輸入標題和訊息,
要求我們用 XSS 的方法來試著攻擊看看:
要攻擊 Title 或是 Message 都可以,
最基本的 XSS 語法就是直接放個 <script>alert(‘xss’)</script>,
看看網頁會不會有反應:
如果網頁會直接把輸入的東西存起來,輸出時也沒有消毒處理的話,
下一個人來看留言板的時候,就會執行我們輸入的 script,
因而跳出 xss 這個對話框:
單單跳出對話框當然沒什麼殺傷力,但能證明網頁有 XSS 漏洞。
有 XSS 漏洞時,要把 script 改寫成偷偷傳送 cookie 給攻擊者,
或是執行其他更有傷害力的 script,都是不難做到的囉~
2. SQL Injection
SQL injection 也是很典型的漏洞,
因為工程師很習慣用字串串接的方式,來組 SQL 查詢字串
(因為寫起來很方便… :P)
以這個例子來說,如果你乖乖輸入 Smith 的話,查到的就是 Smith 的資料:
因為是練習題,所以網頁上還好心的把它查詢的 SQL 指令秀出來了。
我們可以猜測它的程式有可能是寫成下面這樣:
sql = "SELECT * FROM user_data WHERE last_name='" + user_name + "'"; execSQL(sql);
上面的程式裡,user_name 這個變數放的就是使用者輸入的名稱。
因此我們可以輸入一些奇怪的名稱,像最基本的是「’ or ‘1’=’1」,
這會讓 SQL 字串被組成 SELECT * FROM user_data WHERE last_name=’‘ or ‘1’=’1‘,
因為有 or ‘1’=’1′ 這個永遠成立的條件,因此整個 user_data 表格的資料都會顯示出來:
不過實際攻擊時,因為看不到原始碼,也看不到資料庫的欄位設計,
所以有可能會更難組出正確的攻擊字串。
這就得多方嘗試,或是以 SQLmap 類的工具來幫忙囉~