讯时cms注入分析

0x01

这是一套比较老的asp编写的程序.. 由于之前碰见一个站发现是此cms… 于是乎便有了这篇文章

由于此程序太古老.版本暂未确定

0x02

存在问题的文件:

  1. news_more.asp
lm2 =trim(request("lm2"))
lm=trim(request("lm"))
if lm2="" then lm2=lm
if lm="" then lm=lm2
if lm2="" then lm2=0
if (not isNumeric(lm)) then
    lm=0
end if


  sql2 = "select * from lm where id="&lm2

Lm2 和 lm 分别通过request取值 , request取值在asp里和php差不多 , 可以接收get/post/cookie 传递过来的数据 只是简单的去空格 并没有判断传递过来的参数类型 跟进后面的if语句判断 如果 lm2 为空 就把 lm赋值给lm2 如果 lm 为空 就把 lm2赋值给 lm 最后一个if又判断了 lm2 如果等于空 就把 0 赋值给lm2 然后在判断 lm 的值是否是int 如果不是 int 就把0赋值给 lm 然后 接着带进sql语句的是 lm2的值 梳理一下思路

我们在传递参数的时候,如果把lm 和 lm2 都赋值了的话,他后面仅仅只判断了 lm 是否为 int 而未判断 lm2 的值 并且后面lm2带入了查询 这就很明显的造成了注入

实战的时候有一个坑,就是lm2的值必须和lm的值一样,不然无法判断 因为这是一个盲注点.而且判断 真 假的时候, 只能依靠标题来判断.真 和 假 和返回不一样的标题,而不会报错. 由于这是一个比较常规的asp注入点 , 手工依靠猜ascii太过于慢 可以使用bp配合ascii码的字典来跑 速度会比较快 , python强的同学可以写脚本来跑

0x03

他后台可以cookie欺骗绕过,所以把密码的32位md5跑出来即可,不用解密明文 后台可以备份数据库拿来, 这些操作很基础 就不细讲了 … 有兴趣的同学可以接着审计.. 问题应该不少

本文链接:

http://hentai6.cn/index.php/archives/4/
1 + 5 =
快来做第一个评论的人吧~