sql注入的兩個小技巧

2021-04-02 07:04:03 字數 1451 閱讀 5326

在xfocus看了一篇文章

update注射(mysql+php)的兩個模式http://.xfocus.net/articles/200508/815.html

分析一下他所說的兩個模式:

假設有表userinfo

該錶有三個字段 使用者名稱username     使用者密碼pass     使用者許可權groupid

理論上將我們只能改自己的密碼,無法改許可權

我們要做的就是:利用修改使用者密碼的sql語句,趁機修改許可權。 嘿嘿嘿嘿

mode1

如果sql語句是

update userinfo set pass=$p where username='***'

在這種情況下,我們令$p為  12345,groupid=1  即可

這樣就可以修改自己的許可權groupid

mode2

如果sql語句是

update userinfo set pass='$p' where username='***'

我們如果令$p為 12345',groupid='1

在magic_quotes_gpc=on的環境下,sql語句就會變成

update userinfo set pass='12345/',groupid=/'1' where username='***'

之所以這樣,是因為gpc為on,會在敏感字元前加反斜槓

所以這樣僅僅乙個update語句達不到目的

怎麼辦呢?

這樣上乙個update語句將userinfo中的pass更新為 12345',groupid='1  了

我們利用這個值

如果有selete語句將這個值取出來,賦給乙個變數$pass

然後我們再構造下面的update語句

update userinfo set pass='$pass' where username='***'

這時的update語句就是

update userinfo set pass='12345',groupid='1' where username='***'

為什麼此時沒有加反斜槓?因為gpc僅對使用者輸入的字串起作用吧

這時就可以修改我們自己的許可權了

總結我們回顧上面兩個模式,原理倒是不難理解

第一種模式是沒有問題的,單一的update語句到處都是,輕易就可以利用

第二種模式是有點問題,這種模式要求的條件太苛刻了

請看先有針對密碼的update (操作1) 

然後是針對密碼的select (操作2) 

然後是針對密碼的update(操作3)

這種模式如果要成功,操作者必須仔細尋找這樣的點,因為這時三條sql語句,單獨乙個頁面是很難

具備這樣的條件的。

當然,現在web開發者已經很認真了,多數人已經對sql注入問題格外關注,在編碼上盡量避免,所以

現在再想簡簡單單就sql注入成功比較困難了。上述模式構思比較巧妙,值得贊一下。

C 兩個小技巧

從新新那裡學來的,記錄一下,感覺還挺不錯,哈哈 一。靈活的在注釋與 間轉換 注釋風格 code here 風格 code here 看一下兩者之間,相差什麼呢?只差乙個斜槓 也就是說,只要刪乙個斜槓,就可以把中間這段 注釋掉,增加乙個斜槓,就可以使中間這段 有效。在寫一些測試 時會比較有用。二。寫個...

C 兩個小技巧

從新新那裡學來的,記錄一下,感覺還挺不錯,哈哈 一。靈活的在注釋與 間轉換 注釋風格 code here 風格 code here 看一下兩者之間,相差什麼呢?只差乙個斜槓 也就是說,只要刪乙個斜槓,就可以把中間這段 注釋掉,增加乙個斜槓,就可以使中間這段 有效。在寫一些測試 時會比較有用。二。寫個...

Linux兩個小技巧

在使用公司環境申請的虛擬機器的時候,老出現兩個問題 五分鐘沒有操作就自動登出 不能使用上下箭頭檢視歷史命令 查了一下,原來就是幾個環境變數在作祟 超時登出問題是由於系統設定了tmout 300環境變數,可以通過取消這個環境變數或者增加超時時間解決,比如 unset tmout 或者export tm...