cookie注入讲解
我們首先還是來看看中網景論壇的最新版本"(CNKBBS2007)中網景論壇2007v5.0 "官方下載地址" http://www.cnetking.com/websys2.asp?id=26"發布時間是2007-06-06,打開系統的源代碼后,在"user_RxMsg_detail.asp"文件中,有如下代碼:
<!--#include file="opendb.asp" -->
(調用opendb.asp文件)
<!--#include file="char.asp" -->
<%
Call CheckUserLogin(username)
Dim action,s,id
id=request("id") (獲取客戶提交的變量,并賦值給id,并沒過濾,也沒有指定采用那種方式提交)
if id<>"" then Call IsNum(bid) (這是程序員的出現地方,注意bid<>id)
conn.execute("update cnk_Users_RxMsg set readed=1 where id="&id) '設置已讀
rs.open "select * from cnk_users_RxMsg where id="&id,conn,1,3
我們再打開"opendb.asp"文件
<%Option Explicit
Response.Buffer = true%>
<!--#include file="fzr.asp" --> (調用fzr.asp文件)
<!--#include file="cnkdata/dbname.asp" -->
<!--#include file="config.asp"-->
..................
以現它是連接數據庫的文件,其中調用了fzr.asp文件,我們再打開fzr.asp文件
<%
'--------版權說明------------------
'SQL通用防注入程序
'Aseanleung
'--------定義部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
Dim fso1,all_tree2,file1,files,filez,fs1,zruserip
If Request.QueryString<>"" Then (對Request.QueryString提交(客戶采用GET方式提交)的數據進行判斷,并沒有指明對其它方式提交的數據進行判斷)
'自定義需要過濾的字串,用 "|" 分隔
Fy_In = "'|;|%|*|and|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare|script" (阻止了常用的SQL注入的語句)
Fy_Inf = split(Fy_In,"|")
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
zruserip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If zruserip="" Then zruserip=Request.ServerVariables("REMOTE_ADDR")
Response.Write "內容含有非法字符!請不要有'或and或or等字符,請去掉這些字符再發!!<br>"
Response.Write "如是要攻擊網站,系統記錄了你的操作↓<br>"
Response.Write "操作IP:"&zruserip&"<br>"
Response.Write "操作時間:"&Now&"<br>"
Response.Write "操作頁面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交參數:"&Fy_Get&"<br>"
Response.Write "提交數據:"&Request.QueryString(Fy_Get)
......................
很明顯的看出它是一個SQL通用防注入程序文件,(以上的紅字是對代碼的解釋)
代碼看好了,我們來整理下思路:由于程序員的出錯,導致了id沒有被過濾就被帶到SQL語句中查詢,這是注入漏洞產生的原因,雖然程序引入了防注入程序,阻止了常用的SQL語句使用,但只對客戶采用GET方式提交的數據進行判斷,而沒有對其它方式提交的數據進行判斷,這樣導致了客戶可以使用Request.cookie方式來提交變量的值,而繞過了SQL防注入程序(總結下:cookie注入產生的條件:系統直接使用"request("name")"獲取客戶提交的數據,并對客戶提交的變量沒有過濾,而且在防注入程序中沒有限制Request.cookie,現在防注入程序3.0只是對客戶采用GET和POST提交方式進行了限制).
轉載于:https://www.cnblogs.com/wangluochong/p/3405262.html
總結
以上是生活随笔為你收集整理的cookie注入讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python截图搜题_新手篇之实现Pyt
- 下一篇: 编译选项—微软官方+各地总结