初探题目



两个表单,我们用burp抓包试试



这时候我们发现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
}
}

我们如果需要获得flag,需要满足一下条件:

1.Cookie中getmein的值不能为空

2.username必须为admin和password不能为admin

3.Cookie中的getmein必须等于md5($secret.urldecode($username.$password))

满足这三个条件才可获得flag,可是我们无法得知$secret的值为多少

setcookie("sample-hash", md5($secret . urldecode("admin" . "admin")), time() + (60 * 60 * 24 * 7));

发现下面有行代码是这样写的,将输出的md5($secret . urldecode("admin" . "admin"))作为cookie输出,结合前面的数据包我们可以知道输出的值为571580b26c65f306376d4f64e53cb5c7 可是这串md5是由$secret+'adminadmin'转md5而得到的,如果我们在password输入admin将不满足前面所需的三个条件

死局转生

我们知道常见的md5是16位的,而这里的md5正是16位,我们的$secret是十五位的,加上'adminadmin'就变成25位了,很明显这里的md5肯定会出现重复,所以我们可以哈希长度拓展攻击绕过这个死局

这里附两个讲述具体原理的链接:

http://www.freebuf.com/articles/web/69264.html https://www.cnblogs.com/p00mj/p/6288337.html

在Kali下用hashpump操作



最好我们构造数据包,把生成的数据发送即可获得flag

CTF实验吧让我进去writeup的更多相关文章

  1. 【CTF】Pwn入门 XCTF 部分writeup

    碎碎念 咕咕咕了好久的Pwn,临时抱佛脚入门一下. 先安利之前看的一个 Reverse+Pwn 讲解视频 讲的还是很不错的,建议耐心看完 另外感觉Reverse和Pwn都好难!! 不,CTF好难!! ...

  2. 【CTF】CTFHub 技能树 彩蛋 writeup

    碎碎念 CTFHub:https://www.ctfhub.com/ 笔者入门CTF时时刚开始刷的是bugku的旧平台,后来才有了CTFHub. 感觉不论是网页UI设计,还是题目质量,赛事跟踪,工具软 ...

  3. 百度杯CTF夺旗大赛9月场writeup

    在i春秋上注册了账号,准备业余时间玩玩CTF.其中的九月场已经打完了,但是不妨碍我去做做题,现在将一些思路分享一下. 一. 第二场web SQL 根据题目来看是一个SQL注入的题目: 这里推荐两篇文章 ...

  4. 实验吧关于隐写术的writeUp(一)

    0x01 Spamcarver 原题链接 http://www.shiyanbar.com/ctf/2002 1.用Hex workshop打开图片,图片的开头是 FF D8 ,这是jpeg格式的文件 ...

  5. CTF实验吧——证明自己吧

    题目地址:http://www.shiyanbar.com/ctf/28 没有壳 ,vc++ 写的 拖进OD观察观察,发现代码很短哟,先来看这俩个call 怀疑他们其中有正确的flag和我们输入的东西 ...

  6. ctf实验平台-成绩单

    题目链接:http://120.24.86.145:8002/chengjidan/ 平台地址:http://123.206.31.85/ 第一步:暴库 id=-1' union select 1,2 ...

  7. 实验吧——让我进去(hash长度扩展攻击)

    题目地址:http://ctf5.shiyanbar.com/web/kzhan.php 在页面源码没发现什么,于是用burp进行抓包重放 看到有setcookie,于是重新刷新页面拦截数据包(这次才 ...

  8. 记一次CTF实验吧的代码审计

    0X01 0X01 Burp抓包找到hint 访问地址看源码 <?php $info = ""; $req = []; $flag="xxxxxxxxxx" ...

  9. 实验吧关于隐写术的writeUp(二)

    0x01 Black Hole 1.下载文件后,发现打不开,放到kali中.用命令file 分析一下文件 root@trial:~/Documents# file blackhole.img blac ...

随机推荐

  1. Java并发编程原理与实战二十一:线程通信wait&notify&join

    wait和notify wait和notify可以实现线程之间的通信,当一个线程执行不满足条件时可以调用wait方法将线程置为等待状态,当另一个线程执行到等待线程可以执行的条件时,调用notify可以 ...

  2. <!DOCTYPE>是干嘛用的?— html文档类型

    一.啥是文档类型? 在网站开发中一定遇到过这样几种html文档 <!DOCTYPE> 是啥? Web 世界中存在许多不同的文档.只有了解文档的类型,浏览器才能正确地显示文档. HTML 也 ...

  3. No known class method for selector 'setImage:andName:'错误分析.//删除.h与.m文件时的注意事项

    CHENYILONG Blog No known class method for selector 'setImage:andName:'错误分析.//删除.h与.m文件时的注意事项         ...

  4. vue_router 动态路由

    配置子路由: 路由的视图都需要使用view-router 子路由也可以嵌套路由使用: children来做嵌套如上图 使用location.页面name就可以做页面跳转 mounted:挂载,延迟跳转 ...

  5. Unity 3(一):简介与示例

    本文关注以下方面(环境为VS2012..Net Framework 4.5以及Unity 3): Ioc/DI简介: Unity简单示例 一.Ioc/DI简介 IoC 即 Inversion of C ...

  6. NOIP 2016 迟来的满贯

    17-03-22,雨 17-03-22,一个特别重要的日子 在这一天,本蒻攻克了NOIP 2016最难的一题,D1T2——天天爱跑步 实现了NOIP 2016的AK! YAYAYAYAYAYAY 自然 ...

  7. PATH变量重复

    命令: export PATH=$(echo $PATH | tr : "\n"| sort | uniq | tr "\n" :) Code: awk -F: ...

  8. 如何调整Linux内核启动中的驱动初始化顺序-驱动加载优先级

    Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏: include\linux\init.h #define pure_initcall(fn) __define_initcall(& ...

  9. springquartz的LocalDataSourceJobStore

    spring 为quartz 提供了一个 继承 JobStoreCMT的 LocalDataSourceJobStore,主要是为了和spring更好的集成. public class LocalDa ...

  10. wordcount在本地运行报错解决:Exception in thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.native.NativeID$Windows.access

    在windows中的intellij中运行wordcount程序,控制台输出以下报错 在Intellij编辑器中解决办法:本地重新创建NativeIO类,修改一个方法返回值,然后用新建的NativeI ...