BUUCTF-web ikun(Python 反序列化)
正如本题所说,脑洞有点大。考点还很多,不过最核心的还是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 反序列化)的更多相关文章
- IKUN python 反序列化
题目过程1.一开始提示说要买到V6,观察源码,发现/static/img/lv/lv4.png.注册之后尝试寻找V6.观察url发现/shop?page=2.尝试写脚本匹配一下.发现在第181页. i ...
- python反序列化研究学习
零.补充: 补充于2018-02-08,之前研究时候有一个疑惑,python的序列化成二进制,打web服务怎么传这个二进制对象呢,今天请教了身边大神(传说的九零后黑客代表),可以使用base64传输. ...
- 浅谈python反序列化漏洞
最近看到p神一篇讲python反序列化的文章,结合redis未授权访问组合漏洞,感觉在flask和redis的构架中比较常见,便记录下来. p神原文:https://www.leavesongs.co ...
- web框架python
22.python笔记之web框架 一.web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket de ...
- Python 反序列化漏洞学习笔记
参考文章 一篇文章带你理解漏洞之 Python 反序列化漏洞 Python Pickle/CPickle 反序列化漏洞 Python反序列化安全问题 pickle反序列化初探 前言 上面看完,请忽略下 ...
- BUUCTF WEB
BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...
- python 反序列化
Python-反序列化函数使用 pickle.dump(obj, file) : 将对象序列化后保存到文件 pickle.load(file) : 读取文件, 将文件中的序列化内容反序列化为对象 pi ...
- [CISCN2019 华北赛区 Day1 Web2]ikun-1|python反序列化
考点:JWT身份伪造.python pickle反序列化.逻辑漏洞 1.打开之后首页界面直接看到了提示信息,信息如下: 2.那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看下一 ...
- 最终版的Web(Python实现)
天啦,要考试了,要期末考试了,今天把最终版的Python搭建Web代码先写这里记下了.详细的过程先不写了. 这次是在前面的基础上重写 HTTPServer 与 BaseHTTPRequestHandl ...
随机推荐
- LIMS产品 - Labware
软件架构 客户端:Labware软件,部分C/S功能 Web服务:Apache Tomcat等,部分B/S功能 后台服务:计划.调度程序,环境监控样.稳定性研究等 数据库驱动:ODBC 报表工具:水晶 ...
- 如何运行Spring Boot项目
背景 帮别人指导一个Spring Boot项目,它在本地把项目push到git服务器上,然后在部署的服务器上把代码pull下来(我猜应该是这个流程) 然后他问我这项目怎么运行? 我当时就懵了,因为我平 ...
- 入门大数据---Kafka生产者详解
一.生产者发送消息的过程 首先介绍一下 Kafka 生产者发送消息的过程: Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发 ...
- vue基础入门(2.2)
2.2.基础指令 2.2.1.什么是指令 指令 (Directives) 是带有 v- 前缀的特殊特性,指令特性的值预期是单个 JavaScript 表达式,指令的职责是,当表达式的值改变时,将其产生 ...
- 二.5vue服务器展示
1.展示服务器列表前端页面 (1)写视图模版views/resources/servers.vue <template> <div class="resources-ser ...
- Spring Security(五) —— 动手实现一个 IP_Login
摘要: 原创出处 https://www.cnkirito.moe/spring-security-5/ 「老徐」欢迎转载,保留摘要,谢谢! 5 动手实现一个IP_Login 在开始这篇文章之前,我们 ...
- Python-使用tkinter canvas绘制的电子时钟
#!/usr/bin/env python # -*- coding: utf-8 -*- from tkinter import * import math import threading imp ...
- Python线程池与进程池
Python线程池与进程池 前言 前面我们已经将线程并发编程与进程并行编程全部摸了个透,其实我第一次学习他们的时候感觉非常困难甚至是吃力.因为概念实在是太多了,各种锁,数据共享同步,各种方法等等让人十 ...
- Docker可视化工具Portainer
1 前言 从没想到Docker也有可视化的工具,因为它的命令还是非常清晰简单的.无聊搜了一下,原来已经有很多Docker可视化工具了.如DockerUI.Shipyard.Rancher.Portai ...
- C++栈(stack)、队列(queue)、链表(list)的常用函数
C++队列Queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构.1.back() 返回一个引用,指向最后一个元素2.empty() 如果队列空则返回真3.front() 返回第一 ...