当前位置: 首页 > 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・江苏 

相关文章:

  • .东莞网站建设百度网盘提取码入口
  • 微信公众号 网站开发 2016太原百度快速优化
  • 绍兴网站建设服务天津百度网站快速优化
  • wordpress自定义添加cssseo外链要做些什么
  • 99作文网水平优化
  • 营销型单页面网站制作seo技术分享博客
  • 基于 Python 的批量文件重命名软件设计与实现
  • React19源码系列之 API (react)
  • django 中间件
  • Android14音频子系统-Linux音频子系统ASoC-ALSA
  • python网络自动化-数据格式与数据建模语言
  • PDF处理控件Spire.PDF系列教程:Python中快速提取PDF文本、表格、图像及文档信息
  • TensorFlow Lite (TFLite) 和 PyTorch Mobile模型介绍1
  • AingDesk开源免费的本地 AI 模型管理工具(搭建和调用MCP)
  • Lychee路径遍历漏洞导致敏感文件泄露(CVE-2025-50202)
  • AList的开源替代:OpenList
  • 生产环境的项目中java是如何定义,如何使用,如何关闭线程池的
  • OpenCV图像旋转:单点旋转与图片旋转
  • dify中MCP SSE/StreamableHTTP与mcp server插件的区别
  • TDengine 的 CASE WHEN 语法技术详细
  • XC7K70T-3FBG676E Xilinx FPGA Kintex-7 AMD
  • OpenHarmony构建脚本build.sh解析
  • 深入剖析:Spring Boot系统开发的高效之道
  • 数字:数学里面的右手定则指的是什么?
  • 基于SSM框架+mysql实现的监考安排管理系统[含源码+数据库+项目开发技术手册]
  • 【ArcGIS】水资源单项评价