让我进去-实验吧

article/2025/8/28 23:26:08

这题做的真的是久,莓办法,太菜了

进去看见cookie有个source值很奇怪,把他改成1试一下就收到这段代码

$flag = "XXXXXXXXXXXXXXXXXXXXXXX";
$secret = "XXXXXXXXXXXXXXX"; // This secret is 15 characters long for security!$username = $_POST["username"];
$password = $_POST["password"];if (!empty($_COOKIE["getmein"])) {if (urldecode($username) === "admin" && urldecode($password) != "admin") {if ($COOKIE["getmein"] === md5($secret . urldecode($username . $password))) {echo "Congratulations! You are a registered user.\n";die ("The flag is ". $flag);}else {die ("Your cookies don't match up! STOP HACKING THIS SITE.");}}else {die ("You are not an admin! LEAVE.");}
}setcookie("sample-hash", md5($secret . urldecode("admin" . "admin")), time() + (60 * 60 * 24 * 7));if (empty($_COOKIE["source"])) {setcookie("source", 0, time() + (60 * 60 * 24 * 7));
}
else {if ($_COOKIE["source"] != 0) {echo ""; // This source code is outputted here}
}

看到了源代码就可以知道绕过条件了,username一定要是admin,password不能是admin,cookie要传一个getmein过去,然后这个getmein是由md5(secret,username,password)构造出来的,这里的secret不知道他的值是什么,只知道长度是15

那么问题来了,不知道secret的值怎么构造符合条件的getmein绕过,这里就涉及到哈希长度扩展攻击

我们传过去的字符串格式都是类似xxxxxxxxxxxxxxxadminadmin这样的,首先对他消息补位,满足字符位数%512==448,这里字符位数不足448,补够448就行了。

然后就是怎么补位了,首先后面加个1,然后一直加0,这里注意,下面的图片是十六进制的,二进制10000000就是十六进制的80好吧,因为是448bit,补到56byte就补完了,然后就是最开始的消息位数的补位,前面的字符是secret+admin+admin,一共25个字符,所以就是25*8=200 bit =c8 byte,所以第57位写上c8,再继续补到64byte,补完的图片是这样的

接下来就是计算信息摘要,大概原理就是有ABCD四个初始渐变量,还有上面的信息,每次都拿512bit的信息去计算,然后多次计算以后变量不停被覆盖,最后计算出的变量接在一起,再高低位互换得到最终的加密结果

顺便给出ABCD四个初始变量的值

A = 0x67542301;
B = 0xEFCDAB89;
C = 0x98BADCFE;
D = 0x10325476;

哈希长度扩展攻击

(可以看下这篇对它的解释https://github.com/iagox86/hash_extender

这里就是这道题最关键的了,我们不知道secret的值,但是它的位数,还有一个simple_hash,得到的哈希值就是最后一次摘要经过高低位互换的链变量,那么就是说,如果还有下一次的计算,用到的,就是现在的这个哈希值,先对现在的哈希值进行高低位互换,然后这题就可以构造一个前面为xxxxxxxxxxxxxxxadminadmin的大于64位的字符串,利用simple_hash,计算他的hash,就能做出来了。


没错,还是这张图,只是后面多了个fish,就是要构造的东西

这个时候,username=admin,password=admin\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00fish

为什么少了前面的xxx和admin,因为原题是拼接了cookie和username嘛

但是还要再改一下,因为它会urldecode

所以最终的是

username=admin,password=admin%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c8%00%00%00%00%00%00%00fish

然后hash怎么算呢

这里给出一个脚本

#include <stdio.h>
#include <openssl/md5.h>
#include <arpa/inet.h>
int main(int argc, const char *argv[]){int i;unsigned char buffer[MD5_DIGEST_LENGTH];MD5_CTX c;MD5_Init(&c);MD5_Update(&c,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",64);c.A = htonl(0x571580b2);c.B = htonl(0x6c65f306);c.C = htonl(0x376d4f64);c.D = htonl(0xe53cb5c7);MD5_Update(&c,"fish",4);MD5_Final(buffer,&c);for(i=0; i<16; i++){printf("%02x",buffer[i]);}printf("\n");printf("here is a fish!\n");return 0;
}

出来的结果


然后就是bp的抓包改包了


flag get√


http://chatgpt.dhexx.cn/article/s93reEbh.shtml

相关文章

实验吧

1.变异凯撒 把flag转化为ascii码&#xff0c;加密密文转化为ascii码&#xff0c; 因为是凯撒加密&#xff0c;所以思考移动的位数&#xff0c;分别是加了5&#xff0c;6&#xff0c;7&#xff0c;8.。。。 所以移动的位次是从5递加 得到结果 ascii码值转化&#xff0c;得到flag…

[大学物理实验-5]波尔共振实验

[大学物理实验-5]波尔共振实验 前言实验预习&#xff08;Preview&#xff09;实验报告&#xff08;Report&#xff09;实验报告&#xff08;Report&#xff09;总结&#xff08;Sum up&#xff09; 前言 最近在整理一些学过的课程的资料&#xff0c;有一些课虽然和我的专业毫无…

实验一-Bomblab(炸弹实验)

实验概述&#xff1a;该实验就是通过分析汇编代码&#xff0c;并使用GDB调试&#xff0c;找到每一题的通关钥匙 第一关&#xff1a;&#xff08;key“He is evil and fits easily into most overhead storage bins.”&#xff09; 简单解析&#xff1a;比…

实验.........

首先配置ip地址和环回地址 以r1为例 先用ospf联通r2r3r4r5r6r7 以r2为例 r1启bgp与r2建邻 r2r3r4r5r6r7同理建邻居 这里以r2为例 r7r8建邻方法同r1r2 优化在r2上

实验........

实验....... 先配置ip地址以r2为例 然后配置rip同样以r2为例 启用bgp建立对等体&#xff0c;需要书写as号 以r1与r3为例 建立ebgp 以r3r4为例 r3 r4 建立换回&#xff0c;以环回为对等提

shlab实验

计算机系统原理实验报告 一、实验目的及内容 1. 实验目的&#xff1a;通过编写完善一个支持作业控制的简单 Unix 外壳 Shell 程序&#xff08;tsh&#xff09;, 掌握 shell 的基本功能原理和实现方法;掌握 Unix 进程控制、特别是信号的应用&#xff0c; 包括信号产生和信号…

Lab2实验分享

文章目录 一.TLB访存机制二.二级页表三.Page存储结构四.自映射机制图示五.页面与地址的转化六.部分实验代码详解 一.TLB访存机制 当一个虚拟地址被送到MMU中进行翻译的时候&#xff0c;硬件首先在TLB中寻找包含这个地址的页面&#xff0c;如果它的虚页号在TLB中&#xff0c;并…

实验吧(1)

实验吧真是一个神奇的地方&#xff0c;里面的东西表示全部都看不懂&#xff0c;emmmmm &#xff0c;加油&#xff01;好好学习&#xff01; 案例&#xff1a;忘记密码了&#xff01; 在实验吧里面打开解题链接&#xff0c;然后就会跳转到一个输入密码的页面&#xff0c;当然你…

实验吧 认真一点

本实验是输入id获取结果&#xff0c;查看页面源码&#xff0c;没有什么注释信息。随便输入个1&#xff0c;结果为You are in ...............&#xff0c;其他的id显示为You are not in ............... 使用Burp suite进行模糊测试&#xff0c;结果为or部分sql命令都可以使用。…

实验吧_网站综合渗透_Discuz!

前言 这个一个实验吧中的环境&#xff0c;分值为50分&#xff0c;下面是题目说明。诶&#xff0c;发现自己很菜。 实验吧_网站综合渗透_dedecms解析地址 需要的学会或者已经掌握的知识 已知cms版本在线搜索通用漏洞掌握菜刀或者类似的工具的使用其他 题目说明 你是国内一流安…

实验吧-简单的登录题——WriteUp再研究

前言 这个题目的难点就是在于对于CBC加密方式尤其是解密这部分要琢磨一番&#xff0c;让我想起当年大学的时候信安三勇中的两勇的课&#xff0c;一门密码学&#xff0c;一门数学基础&#xff0c;可怕之极。这个题网上writeup一大堆&#xff0c;但是在一些方面解释的不是很详细…

实验吧-简单的登录题

前言 这是在实验吧上面的一道web题。主要考察cbc字节反转攻击。 分析 题目开始就是输入id去登录 首先想到的就是sql注入了,输入1后页面显示Hello,重新载入的话页面返回报错信息 确实存在注入,看那后面的逗号,猜测注入点在limit后面。然后试了很多,发现题目把union,#…

前端框架是什么意思?

说起前端框架&#xff0c;很多人都不知道是什么意思&#xff0c;下面本篇文章就来给大家介绍一下前端框架是什么意思&#xff1f;希望对大家有所帮助。 前端框架是什么意思&#xff1f; 前端框架一般指用于简化网页设计的框架&#xff0c;使用广泛的前端开发套件&#xff0c;比…

优秀的前端开发框架

优秀的前端开发框架 1.Vue Vue2文档&#xff1a;Vue.js Vue3文档&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js 用于构建用户界面的渐进式框架 Vue的核心库只关注视图层。可与elementUI配合Element - The worlds most popular Vue UI framework 2.React 原先的Fa…

matplotlib 绘图 显示中文

参考: Matplotlib中正确显示中文的四种方式 在 matplotlib 中无法直接显示中文(比如使用: plt.xlabel(), plt.ylabel, plt.title()等) from matplotlib import pyplot as pltplt.plot(np.arange(5)) plt.xlabel(x 标签) plt.ylabel(y 标签) plt.title(标题) plt.show()运行上述…

Matplotlib入门:等高线图contour

import matplotlib.pyplot as plt import numpy as npdef f(x,y):return (1-x/2x**5y**3)*np.exp(-x**2-y**2)n 256 x np.linspace(-3,3,n) y np.linspace(-3,3,n)# 生成网格 X,Y np.meshgrid(x,y)# contourf 会在等高线之间进行填充 plt.contourf(X,Y,f(X,Y),8,alpha0.75,…

matplotlib设置坐标轴

import numpy as np设置x,y范围 x np.linspace(-3,3,100) y1 2*x 1 y2 x**2#xy范围 plt.xlim((-1,2)) plt.ylim((-2,3))plt.plot(x,y1,colorred,linewidth1.0,linestyle--) plt.plot(x,y2,colorblue,linewidth5.0,linestyle-) #color指的是线的颜色&#xff0c;linewidth指…

python安装matplotlib画图模块

在python中会使用很多图标的东西作为可视化输出的必不可少的内容。matplotlib提供了很好的图形化显示。 下面就如何快速安装matplotlib做一下简要的说明&#xff1a; 博主用的python版本是3.8.2 win R 输入 python 一般情况下我们用pip安装一些python模块的时候都会提示 先升…

Python Matplotlib 绘制表格

Python Matplotlib 绘制表格 ​ 最近因为开发一个项目&#xff0c;需要用到Matplotlib绘制一些图片和表格&#xff0c;网上找到的一些&#xff0c;感觉总差点意思&#xff0c;绘制个表格感觉有点过于麻烦&#xff0c;因此自己整理了下。 ​ 绘制方法直接使用Matplotlib绘制&a…

Matplotlib快速入门

1. Matplotlib 常用模块 Matplotlib 库中主要包含两个重要模块 pyplob 和 pylab。pyplot 是 Matplotlib 中的一个重要模块&#xff0c;在后续教程中&#xff0c;我们会经常使用 pyplot&#xff0c;该模块允许我们自动、隐式地创建图形及其轴&#xff0c;以实现所需的绘图&…