时间过的真快,记得在07年1月份我写过一篇关于跨站添加管理员的文章,上期又给大家带来一期跨站的文章,小天对我那句话比较赞同,跨站的威力是不比注入小的,注入如果遇见SQL数据库还好说,
ACC的也就能老老实实猜密码,进后台,在利用后台某个功能得WEBSHELL……说了几句题外话,下面我们
一起来跨出WEBSHELL,OK,LET’S GO。
这里以网域高科行业B2B商务平台来测试一下,这套程序是修改阿里巴巴的程序,防注入做的比较好,但是在leaveword_save.asp文件里有一些变量没有过虑,下面是7到43行代码:
book_user=request.form("book_user")
book_contact=request.form("book_contact")
book_content=request.form("book_content")
if sortid="" or tableid="" or ypid="" then
response.write "<script>alert('未知错误');window.close();</Script>"
response.End()
end if
if book_user="" or len(book_user)<2 or len(book_user)>16 then
response.write "<script>alert('反馈出错,下面是产生错误的可能原因:\n\n·请输入 2-16 位字符的用户名!');window.close();</Script>"
response.End()
end if
if book_contact="" or len(book_contact)<5 or len(book_contact)>40 then
response.write "<script>alert('反馈出错,下面是产生错误的可能原因:\n\n·请输入 5-40 位字符的联系方式!');window.close();</Script>"
response.End()
end if
if book_content="" or len(book_content)<5 or len(book_content)>100 then
response.write "<script>alert('反馈出错,下面是产生错误的可能原因:\n\n·请输入 10-100 位字符的反馈内容!');window.close();</Script>"
response.End()
end if
set rs=Server.CreateObject("Adodb.Recordset")
sql="select * from SMT_leaveword"
rs.open sql,conn,1,3
rs.addnew
rs("SMT_book_user")=book_user
rs("SMT_book_contact")=book_contact
rs("SMT_book_content")=book_content ' 就用它吧,100个字符满够用了
rs("SMT_book_sort")=sortid
rs("SMT_book_table")=tableid
rs("SMT_book_ypid")=ypid
rs.update
rs.close
set rs=nothing
response.write "<script>alert('反馈成功,谢谢您的参与!');window.close();</Script>"
response.End()
%>
可以看出就是做了一些判断是否为空,和字数上的限制,不过book_content限制提交字数是100个,这对于我们来说已经足够了。