iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
0

在很多的網站
都會有需要存取資料庫的地方
在這些輸入的地方若是沒有做好輸入內容的檢查
就非常有可能出現sqlinjection的漏洞
而通常有漏洞的地方
有可能出現在get傳值、登入、查詢之類的位置

例如說有個sql指令長這樣
where name = "自己"
那只要把它改成 where name = "自己" or name = "所有人"
不就能讓他也取回不屬於自己的資料了嗎

另外在登入的部分
也能夠利用類似的手法來繞過驗證直接登入

那就讓我們來看看題目

https://ithelp.ithome.com.tw/upload/images/20181026/20112085CWcDcZ574W.png

在這題目的連結中
一進去的左上角點開
會發現有個admin login
點進去之後就會看到一個登入頁面(廢話

https://ithelp.ithome.com.tw/upload/images/20181026/20112085c9B56sg71v.png

通常我們看到可能有sqlinjection漏洞的地方
我們會先在可以輸入的位置打入一個單引號'
若是送出後沒有倒回登入頁面
也沒跳出任何程式的錯誤訊息
表示對方可能已經做過輸入的處理
有這個漏洞的機率就小很多

那在這裡我們輸入送出後
會發現他找不到頁面
表示他沒做好處理
那接著我們就在帳號欄輸入 admin' or '1' = '1';#
在這個部分
井字號是這個資料庫版本的註解
通常常用的註解有/* -- #

讓他不會再去執行後面的指令
那在這個部分
他只要撈到admin這個帳號
密碼就會直接判斷為true
就可以直接登入

https://ithelp.ithome.com.tw/upload/images/20181026/20112085nFKiFSPuTy.png

但是通常密碼欄都會檢查是不是有輸入東西
所以還是要隨便打打東西
這樣子就能夠順利地繞過登入了
是不是非常的神奇呢
當然sqlinjection有很多更深入的用法
大家有興趣的話就上我去找一些更神奇的用法吧!


上一篇
[Day10] Robots.txt阻擋爬蟲和搜尋引擎
下一篇
[Day12]Burp suite修改request內容
系列文
CTF入門學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言