幻泉[B.S.N] 在《针对留言本的破绽挖掘》文章中我写了一段话,就是针对写入数据库一句话木马的研究中,可以行使Request.ServerVariables没做过滤绕过写入一句话,来举行插入数据库木马。 然则那时只是预测,虽然在06年有先容针对一些php针对获取ip没做过滤导致注射破绽。然则学习就是以手艺的严谨性为原则,无论什么破绽都必须亲自测试否则只是理论上的说教是不被人信服的。 这里还正好有这样的一个留言本,让我们来举行测试。 测试代码:花木兰留言本 官方网站:www.77f77.com 首先我们看看他的提交代码都对什么做了过滤。 文件比较少,就直接列下留言本的结构吧。 花木兰留言本 |___index.asp 留言本主要文件内部有提交和显示信息的主要代码。 |____ gustbook_Conn.asp 留言本挪用数据库文件 |_____ gustbook_sub.aspFunction |_____dqe_gustbook.asp数据库文件 这里我们最主要的就是看index.asp,由于已经确认数据库文件没做防下载,可以直接接见。 Index.asp部门主要代码 Code: '过滤代码 Function htmlencode(fString) If not isnull(fString) then fString = replace(fString, "gt;", "gt;") fString = replace(fString, "lt;", "lt;") fString = Replace(fString, CHR(32), "") fString = Replace(fString, CHR(9), "") fString = Replace(fString, CHR(34), """)‘“ fString = Replace(fString, CHR(39), "'") ‘ ‘ fString = Replace(fString, CHR(13), "") fString = Replace(fString, CHR(10) amp; CHR(10), "
") fString = Replace(fString, CHR(10), "
") htmlencode = fString End If End Function Function uhtmlencode(fString) If not isnull(fString) then fString = Replace(fString, "", CHR(32)) fString = Replace(fString, "", CHR(9)) fString = Replace(fString, """, CHR(34)) fString = Replace(fString, "'", CHR(39)) fString = Replace(fString, "", CHR(13)) fString = Replace(fString, "
", CHR(10) amp; CHR(10)) fString = Replace(fString, "
", CHR(10)) uhtmlencode = fString End If End Function ……. '提交数据 Books_mingzi=htmlencode(Request.form("mingzi")) If Books_mingzi="" then Books_mingzi="匿名者" End If Books_biaoti=htmlencode(Request.form("biaoti")) Books_neirong=htmlencode(Request.form("neirong")) …… Set mRs= Server.CreateObject("adodb.recordSet") mRs.open "Select * from dqe_gustbook", conn, 1, 3 mRs.addnew mRs("who") = Books_mingzi mRs("biaoti") = Books_biaoti mRs("neirong") = Books_neirong mRs("lanmu") = lanmu mRs("zhiding") = 0 mRs("shijian") = now() UserIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If UserIP = "" Then userip = Request.ServerVariables("REMOTE_ADDR") mRs("ip") = UserIP mRs.update