初探题目



两个表单,我们用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

最新文章

  1. SSH_框架整合6--修改Edit员工信息
  2. How to make 9-patch image downloaded from the Network
  3. 【ITOO 1】将List数据导出Excel表
  4. 简单的LRU Cache设计与实现
  5. 对浏览器css兼容性的学习理解及问题解决汇总
  6. POJ训练计划2299_Ultra-QuickSort(归并排序求逆序数)
  7. JavaScript学习总结(十七)——Javascript原型链的原理
  8. 想不到的:js中加号操作符
  9. 死链接检查工具:Xenu 使用教程
  10. 流式大数据计算实践(7)----Hive安装
  11. 第十二节: EF的三种模式(二) 之 ModelFirst模式(SQLServer为例)
  12. IDEA注册码分享
  13. Python api接口和SQL数据库关联
  14. 可前端解密的加密方法探讨和str_replace和preg_replace分析
  15. CTime格式化
  16. CDMA码片序列问题
  17. centos6.6 安装adb环境
  18. mooc《数据结构》 习题1.8 二分查找
  19. OpenCV学习代码记录—— Snake轮廓
  20. sklearn学习总结(超全面)

热门文章

  1. Java并发编程原理与实战四十四:final域的内存语义
  2. java并发实践笔记
  3. sklearn评估模型的方法
  4. python3之pymysql模块
  5. gitHub 迁移到gitlab上
  6. mysql -> 索引_07
  7. JSP中page,request,session,application四个域对象区别
  8. js中图片获取src的正则
  9. 五、springboot单元测试
  10. js面试题之求数组最值