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

Bugku-CTF-web(适合初学者)

今天刷了一下 Bugku-CTF-web 的1-10题,比较简单,比较娱乐,基本上看看源代码就可以了,非常适合初学者。能够学习到base64编码,unicode编码,dirb web目录遍历,SourceLeakHacker 备份文件遍历,hackbar插件,wget 操作,git 操作,php 弱类型,md5 绕过等知识点。

ailx10

2001 次咨询

4.9

网络安全优秀回答者

互联网行业 安全攻防员

去知乎ailx10 咨询

1、滑稽

直接F12查看源代码

2、计算器

F12查看源,发现限制了输入长度

尝试修改,发现修改不了值,继续搜寻,发现code.js前端代码中存在flag

3、alert

打开网页就是弹框,F12也看不了

废话不多说,view-source:直接强制查看源代码

最后看到了一行注释

<!-- &#102;&#108;&#97;&#103;&#123;&#54;&#54;&#48;&#49;&#54;&#49;&#52;&#50;&#50;&#99;&#102;&#99;&#100;&#51;&#57;&#48;&#51;&#54;&#102;&#98;&#101;&#97;&#49;&#55;&#97;&#48;&#49;&#52;&#54;&#102;&#54;&#101;&#125; --></script>  

直接Unicode解码,拿到flag,也可以Python解码

import htmlencoded_str = "&#102;&#108;&#97;&#103;&#123;&#54;&#54;&#48;&#49;&#54;&#49;&#52;&#50;&#50;&#99;&#102;&#99;&#100;&#51;&#57;&#48;&#51;&#54;&#102;&#98;&#101;&#97;&#49;&#55;&#97;&#48;&#49;&#52;&#54;&#102;&#54;&#101;&#125;"
decoded_str = html.unescape(encoded_str)print(decoded_str)

4、你必须让他停下

F12能看到flag,也是一瞬间就没有了,还是 view-source: 多刷几次,就拿到flag了

5、头等舱

查看源代码:线索应该在请求头里面

结果在响应头中找到了 flag

6、GET

阅读代码,发一个GET请求就能拿到flag

7、POST

阅读代码,使用 Hackbar 提交一个POST请求,即可获得flag

8、source

查看源代码,拿到flag线索

flag{Zmxhz19ub3RfaGvyzSEHIQ==}

使用base64解码,发现不是flag

尝试目录暴力破解

dirb http://114.67.175.224:12221/

可以发现存在 /.git/ 目录

使用wget 递归下载

wget -r http://114.67.175.224:12221/.git

使用 git reflog 查看历史操作记录

使用 git show 40c6d51 查看到 flag

9、矛盾

在 PHP 中,当你使用 == 进行比较时,如果比较的两个值类型不同,PHP 会尝试将它们转换为相同的类型,然后再进行比较

10、备份是个好习惯

没啥线索,根据题目,是有一个备份文件,暴力破解它

python3 SourceLeakHacker.py -u http://114.67.175.224:12717/

查看备份的php代码

<?php
/*** Created by PhpStorm.* User: Norse* Date: 2017/8/6* Time: 20:22
*/include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){echo $flag."取得flag";
}
?>

要拿到 flag,需要满足条件 md5($key1) == md5($key2) && $key1 !== $key2

这意味着 $key1 和 $key2 的 MD5 哈希值必须相同,但 $key1 和 $key2 本身不能相同。[1]

http://114.67.175.224:12717/?kkeyey1=QNKCDZO&kkeyey2=240610708

写个PHP脚本,输出专属ailx10的字符串,哈希结果是以0e开头,后面跟着纯数字

  • md5(ailx10597395974) = 0e607193511294857832340276123482
  • md5(ailx101258820612) = 0e410179301007418220015365512318
<?php
function findMD5Collision($prefix) {// 循环尝试不同的字符串for ($i = 0; $i < pow(10, 12); $i++) {// 生成一个候选字符串$candidate = $prefix . $i;// 计算 MD5 哈希值$md5 = md5($candidate);// 检查哈希值是否符合要求if (preg_match("/^0e[0-9]{30}$/", $md5)) {echo $candidate;return $candidate; // 返回符合条件的字符串}}return false; // 如果没有找到,则返回 false
}$prefix = "ailx10"; // 我们希望字符串以 "ailx10" 为前缀
$string = findMD5Collision($prefix);
if ($string !== false) {echo "找到的字符串: " . $string . "\n";echo "MD5 哈希值: " . md5($string) . "\n";
} else {echo "未找到符合条件的字符串。\n";
}
?>

参考

  1. ^md5绕过(Hash缺陷) php 弱类型总结 - Mrsm1th - 博客园

发布于 2024-10-06 07:42・江苏 

http://www.lqws.cn/news/520417.html

相关文章:

  • 50. Pow(x, n)快速幂算法
  • 使用 WSL 启动ubuntu.tar文件
  • ubuntu中53端口被占用导致dnsmasq无法使用。已解决。
  • 51c嵌入式~PCB~合集1
  • 《从0到1:C/C++音视频开发自学完全指南》
  • vue3用js+css实现轮播图(可调整堆叠程度)
  • UI前端大数据处理技巧:如何高效处理海量异构数据?
  • DDNS-GO 使用教程:快速搭建属于自己的动态域名解析服务(Windows 版)
  • 如何在 Manjaro Linux 的图像界面上安装 Stremio 而不是使用命令行
  • 3 大语言模型预训练数据-3.2 数据处理-3.2.3 隐私消除——使用正则表示方法过滤个人隐私信息数据(包括邮件、电话、地址等)
  • 快速排序算法
  • 使用 Netty 实现 TCP 私有协议(解决粘包/拆包)
  • Python-文件管理
  • 领域驱动设计中的编程风格选择:面向对象与过程式的平衡艺术
  • 数学:向量的点积是什么?怎么计算?
  • 【EI会议征稿】东北大学主办第三届机器视觉、图像处理与影像技术国际会议(MVIPIT 2025)
  • 服务器开放端口如何设置,本地内网开通应用端口让外网访问连接步骤
  • OpenHarmony构建脚本build.sh解析
  • 【MongoDB】MongoDB从零开始详细教程 核心概念与原理 环境搭建 基础操作
  • 使用EasyExcel处理动态表头数据导入
  • AWS WebRTC:通过shell实现多进程启动viewer
  • Object.assign()
  • 获取YARN application 应用列表的几种方法
  • 2025年Java后端最新面试场景题 + 八股文高频面试题
  • Dagster数据管道构建指南:I/O管理与数据库连接实践
  • React Native【实战范例】账号管理(含转换分组列表数据的封装,分组折叠的实现,账号的增删改查,表单校验等)
  • rules写成动态
  • syncthing忘记密码怎么办(Mac版)?
  • 成都芯谷金融中心·文化科技园打造文化科技高地
  • 微服务思想与C++服务化框架