分類  >  Web前端 >

另類sql流入拿webshell

tags:    時間:2013-12-10 09:07:09
另類sql注入拿webshell

sql注入,想必大家都知道,本文教大家如果通過常規方法不行的前提下,拿下網站shell。

凡是以http://www.xxx.com/xxx.asp?id=1類似名稱都可以通過著名的and 1=1 和and 1=2來檢測是否存在漏洞。

當時我拿的一個網站(為了安全考慮,此時不舉出該網站的名字),就以xxx代替,見諒。

我用and 1=1 and 1=2試了一下,發現該網站存在注入漏洞,並且是access資料庫,然後又通過and exists (select * from admin)發現存在admin表

接著找到了兩個關鍵欄位:admin和password

當我想通過count(*)找該表有多少條數據的時候,該網站彈出如下對話框:

這倒是沒關係,因為根據經驗至少存在一條數據。然後開始猜解第一條數據的值,通過sql語句and (select top 1 asc(mid(admin,1,1)) from admin)>0時又彈出如下對話框:想必是該網站對某些字元都做了過濾,最後發現,除了select,像update,insert,delete都做了過濾,到這裡是不是就該放棄了呢?答案當然是否定的還有一個函數不知大家還有印象不,那就是right()和left(),當時,我用left函數發現,其獲得的ascii碼始終是取出的字元串的第一個字元,然後我就想到用right()函數倒著猜解他的欄位,這裡admin欄位長度為5,寫入如下函數表達式:and (select top 1 asc(right(admin,1)) from admin)>0 依次類推,直到猜解出欄位值。哈哈,幾分鐘后,成功破解出用戶名和密碼。

1樓kajweb前天 09:35
為什麼left函數其獲得的ascii碼始終是取出的字元串的第一個字元而right()函數倒著猜解他的欄位可以?
Re: lynnlovemin昨天 18:41
回復kajwebn舉個例子:欄位名:username,對應的值:adminnleft(username,1) === anleft(username,2) === adnleft(username,3) === admn依次類推。。。。。第一個字元串始終是1n如果用right 如下:nright(username,1) == nnright(username,2) ==innright(username,3)== minn第一次獲得n第二次i,第三次獲得m,不就能猜解到了嗎?

推薦閱讀文章

Bookmark the permalink ,來源:互聯網