SQL注入 1-3_基于post报错注入
**
SQL注入 1-3_基于post報錯注入
**
一.概念
客戶端提交參數基于post
1.基于post注入不會拼接到url
2.相對get提交參數更加安全
3.但是依然可以使用代理(中間人)截斷判斷是否存在sql注入
二.基于post報錯的實列
1.打開登陸頁面
按照常規的符號手段,觀察以下三張圖,并沒有報錯
當然也可以使用 id=1 and 1=2 和 id=1’ and ‘1’ = 1’一樣沒有反應
由此判斷我們應該使用代理,因為他是基于post,無法拼接到url
打開代理截斷,和burpsuite
提交任意登陸參數
可以看到我們發送的所有的信息
點擊action 然后發生到repeater
repeater的作用:可以修改發送的參數,達到注入目的
可以看到已經發送過去了
我們使用反斜杠測試
向右看,可以看到服務器報錯
則我們可以推測他應該是基于報錯 的post注入
我們可以大致的推測出sql語句
在存在注入的的位置,使用萬能密碼
如果沒有嚴格過濾提交的參數
則可以繞過登陸
可以看到我們已經登錄了后臺
并且爆出了用戶的密碼和賬戶
我們再來看看源碼
確實和我們的猜測一樣,沒有過濾機制
并且是 使用 ‘’ 包含參數
好,我們接著看下一個,直接看看源碼
可以看到,程序員是使用了雙引號和括號包含了參數
同樣的方法代理截斷,并且輸入反斜杠,讓他報錯,當然也可以使用其他,符號手段
往右邊可以看到,又報錯了
我們又大致猜出了他的sql語句
在-- 空格 前面輸入萬能密碼,同樣成功登陸并且獲得密碼
當然在前面也可以輸入其他sql語句
和get手工注入一樣的
三.使用sqlmap探測
首先登陸,
然后代理截斷
將截斷的內容復制保存到root/下,保存名為passwd.tet
-r 使用剛剛截斷的文件
-p 指定注入位置
并且指定探測技術
和指定當前使用的數據庫
可以看到成功的到當前數據庫名,
當然也可以其他詳細的注入
總結
1.當發現是post提交參數時,使用代理截斷手段
2.判斷大致sql語句,分析出sql語句,并且知道是字符型注入還是整型
3.接下來使用萬能密碼,也可以拼接sql語句,和get的報錯一樣的寫法
4.如果判斷出類型,可以直接使用sqlmap探測,不用那么麻煩
5.能夠注入的關鍵原因還是,參數過濾不完善,程序員應該使用多重過濾 比如,先正則,在使用多個過濾函數
總結
以上是生活随笔為你收集整理的SQL注入 1-3_基于post报错注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql_1-2_get基于盲注
- 下一篇: SQL注入1-5_cookie基于bas