[Security] Webgoat 的 XSS 與 SQL injection 初階練習

[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 類的工具來幫忙囉~

(本頁面已被瀏覽過 1,721 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料