BugKCTF代码审计详解:变量覆盖、strcmp比较与URL解码漏洞

需积分: 18 1 下载量 165 浏览量 更新于2024-09-03 收藏 9KB MD 举报
"bugkctf 代码审计" 在CTF(Capture The Flag)竞赛中,代码审计是获取flag(比赛目标)的关键技能之一。这篇笔记主要涉及了三个常见的安全漏洞和对应的攻击方法,包括`extract`变量覆盖、`strcmp`比较错误以及`urldecode`的二次编码绕过。 ### extract变量覆盖 `extract()`函数在PHP中用于将数组中的键转化为变量,并将对应的值赋给这些变量。在提供的代码示例中,`$flag`变量被设置为`'xxx'`,然后`extract($_GET)`将GET请求中的参数提取到当前作用域。如果GET请求中存在`shiyan`和`flag`这两个参数,`$flag`的值会被GET请求中的`flag`参数覆盖。因此,通过构造`?shiyan=&flag=`的请求,我们可以用空字符串覆盖原来的`$flag`值,从而可能绕过原本的条件检查。 ### strcmp比较错误 `strcmp()`函数用于比较两个字符串,如果它们相等,则返回0。在给出的代码中,`$flag`包含了flag信息,程序期望`$_GET['a']`与`$flag`相等才能显示flag。然而,如果`$_GET['a']`不是一个字符串,例如一个数组,`strcmp()`会抛出错误并返回0。这意味着我们可以构造如`?a[]=1`的请求,使得`strcmp()`误判,从而绕过安全检查。 ### urldecode二次编码绕过 此部分涉及URL编码的安全问题。代码首先检查GET参数`id`是否包含`hackerDJ`,如果包含则拒绝访问。然后,它对`id`进行URL解码,期望解码后的值为`hackerDJ`。由于浏览器在发送请求时会自动解码URL,我们可以利用这一点,将`hackerDJ`进行两次URL编码( `%25` 是 `%` 的编码, `%36` 是 `6` 的编码,以此类推),然后发送请求`?id=%25%36%38%25%36%31%25%36%33%25%36%62%25%36%35%25%37%32%25%34%34%25%`。当浏览器发送请求时,第一次解码会得到 `%68ackerDJ`,然后服务器上的`urldecode()`再将其解码为原始的`hackerDJ`,从而绕过检查。 这些技巧在CTF比赛中常常用来寻找和利用代码漏洞,获取隐藏的flag。了解和掌握这些常见漏洞及其利用方法对于提升网络安全技能和参加CTF比赛至关重要。在实际编程中,应避免使用可能引发此类问题的不安全函数,并确保对用户输入进行严格的验证和过滤,以防止潜在的安全风险。
2024-09-25 上传
基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。