Buuctf Easy Calc --> WriteUp

本文介绍了从CTF挑战中学到的关于Web应用防火墙(WAF)的知识,包括如何利用PHP的字符串解析特性绕过WAF限制,以及查询字符串在URL中的角色。此外,还探讨了如何在系统限制下使用PHP代码,以及在PHP代码无法直接获取flag时的解决策略。
摘要由CSDN通过智能技术生成

大佬的WP

Buuctf Easy Calc --> WriteUp

本题得到知识

以下是从这道ctf题中学到的一些知识

什么是Waf

Waf:Web应用的防火墙,原来的防火墙已经不够抵挡攻击了,所以有了Waf作用是对web应用程序客户端发出的流量进行内容检测和验证,检测其安全性与合法性,来屏蔽常见的网站漏洞攻击,如SQL注入,XML注入、XSS等。WAF的介绍

利用PHP的字符串解析特性Bypass绕过

Waf可能会限制只通过数字不让通过字符,这时可以利用字符串解析的特性来绕过,所谓的字符串解析即是对查询字符串进行解析到PHP代码中。 利用PHP的字符串解析特性Bypass

什么是查询字符串(URL参数)

在URL中的“?●=▲×■&○=△×□”的部分是查询字符串(URL参数)查询字符串

如何绕过Waf对字符的限制

PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

  • 1.删除空白符
  • 2.将某些字符转换为下划线(包括空格)
    我们可以在变量前加上一个空格绕过Waf对字符的限制。

一句话木马的system无法使用

<?php @eval($_POST['str']); ?>:str可以是调用外部指令的system函数的字符串,Linux指令的大多数字符被限制了怎么办?
PHP中也有文件查找和读取文件函数

  • scandir():以数组形式列出参数目录下的目录和文件
  • readfile():读取参数里的内容

PHP代码无法使用flag

可以使用chr函数来把ASCII码转换为字符即可实现绕过chr(47)就是/。

您可以按照以下步骤添加一个多轮问答的聊天框: 1. 在 `<div id="page-content">` 标签后添加一个新的 `<div>` 标签,用于包裹聊天框。 ``` <div id="page-content"> <h4 class="text-main pad-btm bord-btm">《伤寒论》知识图谱问答系统</h4> <div id="chat-box"></div> <!-- 新添加的聊天框 --> </div> ``` 2. 在 JavaScript 文件中添加以下代码,用于实现聊天框的多轮问答功能。 ``` var chatBox = document.getElementById("chat-box"); function addMessage(msg, isUser) { var messageDiv = document.createElement("div"); messageDiv.classList.add("chat-message"); messageDiv.classList.add(isUser ? "user-message" : "bot-message"); messageDiv.innerText = msg; chatBox.appendChild(messageDiv); } function sendMessage() { var inputBox = document.getElementById("input-box"); var message = inputBox.value; inputBox.value = ""; addMessage(message, true); // TODO: 调用 AI 接口获取回复 var reply = "这是 AI 的回复"; addMessage(reply, false); } var inputBox = document.createElement("input"); inputBox.setAttribute("type", "text"); inputBox.setAttribute("id", "input-box"); inputBox.setAttribute("placeholder", "请输入您的问题"); inputBox.addEventListener("keydown", function (event) { if (event.keyCode === 13) { sendMessage(); } }); var sendButton = document.createElement("button"); sendButton.setAttribute("id", "send-button"); sendButton.innerText = "发送"; sendButton.addEventListener("click", sendMessage); chatBox.appendChild(inputBox); chatBox.appendChild(sendButton); ``` 3. 在 CSS 文件中添加以下样式,用于美化聊天框。 ``` #chat-box { max-height: 300px; overflow-y: auto; padding: 10px; } .chat-message { margin-bottom: 10px; } .user-message { text-align: right; } .bot-message { text-align: left; } #input-box { width: calc(100% - 60px); border: none; border-radius: 5px; padding: 10px; margin-right: 10px; } #send-button { border: none; border-radius: 5px; padding: 10px; background-color: #007bff; color: white; } #send-button:hover { cursor: pointer; } ``` 这样就可以在页面中添加一个多轮问答的聊天框了。您可以根据需要调整样式和实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值