正如本题所说,脑洞有点大。考点还很多,不过最核心的还是python的pickle反序列化漏洞

题目中暗示了要6级号,找了很多页都没看到,于是写了脚本

在第180页有6级号,但是价格出奇的高,明显买不起。bp抓包发现有疑似折扣的参数,把值改低后提交,重定向到了后台页面,但是需要admin才行。

这时一早就发现的JWT便派上了用场。在https://jwt.io/在线解析jwt。data段有我们的用户名,可以伪造成admin,但还需要有密钥。

可以使用工具破解。详情见:https://github.com/brendan-rius/c-jwt-cracker

破解出的密码是”1Kun“。把它写入下图箭头所示位置并伪造身份后通过bp发送。

发现源码。下载后在settings.py中发现unicode编码的hint

提示说有后门。在Admin.py中发现了序列化操作

接下来就是盲区了。。。。。

参考了很多资料和大佬的wp,

原理其实和php的差不多。只不过python的序列化不够直观,看起来费劲。

become参数存在反序列化漏洞,参数可控.。pickle.loads()进行了反序列化操作。我们利用的是__reduce__魔术方法。反序列化后产生的对象会在结束时触发reduce从而执行我们构造的代码。

这里采用通用的exp写法

#!/usr/bin/python
import pickle
import urllib class payload(object):
def __reduce__(self):
return (eval, ("open('/flag.txt','r').read()",)) a = pickle.dumps(payload())
a = urllib.quote(a)
print a

运行后得到payload,把箭头指向的hidden属性删除。这样就能利用网页隐藏的post框提交,将become替换成payload。

参考博客:https://xz.aliyun.com/t/2289

https://www.freebuf.com/column/187567.html

https://www.sohu.com/a/274879579_729271

BUUCTF-web ikun(Python 反序列化)的更多相关文章

  1. IKUN python 反序列化

    题目过程1.一开始提示说要买到V6,观察源码,发现/static/img/lv/lv4.png.注册之后尝试寻找V6.观察url发现/shop?page=2.尝试写脚本匹配一下.发现在第181页. i ...

  2. python反序列化研究学习

    零.补充: 补充于2018-02-08,之前研究时候有一个疑惑,python的序列化成二进制,打web服务怎么传这个二进制对象呢,今天请教了身边大神(传说的九零后黑客代表),可以使用base64传输. ...

  3. 浅谈python反序列化漏洞

    最近看到p神一篇讲python反序列化的文章,结合redis未授权访问组合漏洞,感觉在flask和redis的构架中比较常见,便记录下来. p神原文:https://www.leavesongs.co ...

  4. web框架python

    22.python笔记之web框架   一.web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket de ...

  5. Python 反序列化漏洞学习笔记

    参考文章 一篇文章带你理解漏洞之 Python 反序列化漏洞 Python Pickle/CPickle 反序列化漏洞 Python反序列化安全问题 pickle反序列化初探 前言 上面看完,请忽略下 ...

  6. BUUCTF WEB

    BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...

  7. python 反序列化

    Python-反序列化函数使用 pickle.dump(obj, file) : 将对象序列化后保存到文件 pickle.load(file) : 读取文件, 将文件中的序列化内容反序列化为对象 pi ...

  8. [CISCN2019 华北赛区 Day1 Web2]ikun-1|python反序列化

    考点:JWT身份伪造.python pickle反序列化.逻辑漏洞 1.打开之后首页界面直接看到了提示信息,信息如下: 2.那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看下一 ...

  9. 最终版的Web(Python实现)

    天啦,要考试了,要期末考试了,今天把最终版的Python搭建Web代码先写这里记下了.详细的过程先不写了. 这次是在前面的基础上重写 HTTPServer 与 BaseHTTPRequestHandl ...

随机推荐

  1. 呼~~~~--历时几个星期终于搞好了HTTPS协议---阿里云

    打开网站加入阿里云官网 https://yundun.console.aliyun.com/?p=cas#/overview/cn-hangzhou 登陆查看自己的证书 没有点击购买证书 -- 选中对 ...

  2. Windows Server 2019 container容器化-Docker安装

    一.启用服务器Hyper-V,Containers特性 Install-WindowsFeature -Name Hyper-V,Containers -IncludeAllSubFeature -I ...

  3. 《UNIX环境高级编程》(APUE) 笔记第四章 - 文件和目录

    4 - 文件和目录 1. 函数 stat.fstat.fstatat 和 lstat #inlcude <sys/stat.h> int stat(const char *restrict ...

  4. SELinux已经允许,为什么日志显示的仍然是denied?

    从日志可以看到,SELinux的Mode已经修改位了permissive = 1,也就是允许模式,但它前面的日志仍然显示的是“denied".本来我还以为是自己哪里没弄好导致的这个问题,但访 ...

  5. 烦人的B数

    B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点: B-树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点: 所有关键字在整颗树中出现, ...

  6. JavaScript图形实例:SierPinski三角形

    1.SierPinski三角形 Sierpinski三角形是一种分形,由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集.其生成过程为: (1)取一个三角形(多数使用等边三角形): (2) ...

  7. 「疫期集训day13」雾天

    我们千里迢迢赶来这里支援协约国----与德军正面交锋的美国士兵 今天考试签到题都没A,失误重大,T1几周前做过的拓扑排序板子都没写,T2失误在没敢调试,对自己信心不足,30分钟写了个DP,几分钟没调出 ...

  8. like's photos

    wallhaven官网

  9. for循环与嵌套(水仙花数与三角形的打印)

    ## 一.for循环语法:for(开始区间: 结束区间; 修改循环条件){ 循环体:} > 开始区间:初始化表达式(确定开始)int i = 1; > 结束区间:逻辑表达式(确定结束) i ...

  10. Linux 下载工具推荐: Motrix && qbittorrent

    Linux下载介绍 Linux下其实下载工具还是蛮多的, 命令行的wget,curl,aria2,甚至于apt 但是个人日常使用下还是有图形化界面比较方便易用.大多数教程里推荐的Uget,可能是我也不 ...