jarvis CTF 题目解题思路 (正在更新)

爱喝水的仙人掌   ·   发表于 2022-04-13 18:53:36   ·   学习杂记

jarvis题库解题思路

下面是题库官网有兴趣的同学可以访问尝试
https://www.jarvisoj.com/

Login

  • 访问题目网页 有一个密码登录页面 先检查源码 没有特殊信息 链接也没有什么特别之处
  • 抓取一个数据包跑弱密码有反应 但是输入以后并没有看到flag


  • 下面是正确的解题思路 抓取一个返回包 看返回包中的内容


  • 看到有一个提示 密码是直接拼接到查询语句里面的 提示使用了一个PHP的MD5函数 查一下技术文档
  • 技术文档说 如果是TRUE的话 会返回16字符长度的原始二进制字符串字符串的值 那么我们尝试加密以后MD5的值刚好含有闭合符号 以及特殊字符


  • 加密后的值比如说是 ‘or’6�]��!r,��b
  • 第一个单引号 会和前面的password字段闭合 后面的单引号会和后面的单引号 进行闭合
  • 这里面我们引入一个概念 在mysql中查询数据时�]��!r,��b这一段数据将不会出现
  • 同时’1’ 会被数据库当做TRUE返回 其实不仅仅是数字 在数据库中单引号括起来的以数字开头的字符串 会被当做布尔类型进行判断
  • 因此最后的查询语句就是 select from admin where password=’’or’6�]��!r,��b’ 转换为select from admin where password=’’or TRUE
  • 那么这句话就横为真值


  • 还有一个问题没有解决就是如何生成这种特定的字符串 我们可以使用当函数表达式为false时 使用32字符16进制返回的散列值进行判断 十进制ASCII码转化为十六进制确定前几位’or’ 同时需要保证字符串的是一个字符不可以是0就完成整个推导过程


LOCALHOST

  • 访问页面告诉我只有localhost过来的地址才可以进行访问 第一反应就是修改x-forward-for


  • 修改值为127.0.0.1 直接获取到flag


PORT51

  • 这道题要求我们使用指定的端口进行访问 这里的端口指的是我们发送请求的端口 不是访问页面的端口
  • 但是我们使用的公网地址发送出去的时候不一定使用的是51端口 路由器会自己选择一个空闲端口进行数据发送
  • 理论上我们需要租借一个服务器 通过服务器的51端口进行访问才可以
  • curl —local -port 51 http://web.jarvisoj.com:32770/

" class="reference-link">

打赏我,让我更有动力~

0 条回复   |  直到 2022-4-13 | 478 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.