PHAR:// PHP文件操作允许使用各种URL协议去访问文件路径:如data://,php://,等等 include('php://filter/read=convert.base64-encode/resource=index.php'); include('data://text/plain;base64,xxxxxxxxxxxx'); 前者使用到了过滤器来进行读写文件,后者使用data协议进行文件的读写. phar://也是流包装的一种,关于phar的结构: 1.stub 一个供pha…
目录 刷题记录:[CISCN2019 华北赛区 Day1 Web1]Dropbox 一.涉及知识点 1.任意文件下载 2.PHAR反序列化RCE 二.解题方法 刷题记录:[CISCN2019 华北赛区 Day1 Web1]Dropbox 题目复现链接:https://buuoj.cn/challenges 参考链接:ciscn2019华北赛区半决赛day1_web1题解 一.涉及知识点 1.任意文件下载 当时线下就做到这一步 2.PHAR反序列化RCE 总结在这里:Phar反序列化 利用条件:…
0x01 前言 通常我们在利用反序列化漏洞的时候,只能将序列化后的字符串传入unserialize(),随着代码安全性越来越高,利用难度也越来越大.但在不久前的Black Hat上,安全研究员Sam Thomas分享了议题It’s a PHP unserialization vulnerability Jim, but not as we know it,利用phar文件会以序列化的形式存储用户自定义的meta-data这一特性,拓展了php反序列化漏洞的攻击面.该方法在文件系统函数(file_…
0x00知识点 phar是什么: 我们先来了解一下流包装 大多数PHP文件操作允许使用各种URL协议去访问文件路径:如data://,zlib://或php://.例如常见的 include('php://filter/read=convert.base64-encode/resource=index.php'); include('data://text/plain;base64,xxxxxxxxxxxx'); phar://也是流包装的一种 phar原理 ****可以理解为一个标志,格式为x…
步骤: 1.运行这个: <?php class User { public $db; } class File { public $filename; } class FileList { private $files; public function __construct() { $file = new File(); $file->filename = "/flag.txt"; $this->files = array($file); } } $a = new…
太难了QAQ 先看看phar是啥https://blog.csdn.net/u011474028/article/details/54973571 简单的说,phar就是php的压缩文件,它可以把多个文件归档到同一个文件中,而且不经过解压就能被 php 访问并执行,与file:// ,php://等类似,也是一种流包装器. phar结构由 4 部分组成 stubphar 文件标识,格式为 xxx<?php xxx; __HALT_COMPILER();?>: manifest压缩文件的属性等信…
目录 刷题记录:[CISCN2019 华北赛区 Day1 Web5]CyberPunk 一.知识点 1.伪协议文件读取 2.报错注入 刷题记录:[CISCN2019 华北赛区 Day1 Web5]CyberPunk 题目复现链接:https://buuoj.cn/challenges 参考链接:ciscn2019华北赛区半决赛day1web5CyberPunk 一.知识点 1.伪协议文件读取 file=php://filter/convert.base64-encode/resource=ind…
目录 刷题记录:[CISCN2019 华北赛区 Day1 Web2]ikun 一.涉及知识点 1.薅羊毛逻辑漏洞 2.jwt-cookies伪造 Python反序列化 二.解题方法 刷题记录:[CISCN2019 华北赛区 Day1 Web2]ikun 题目复现链接:https://buuoj.cn/challenges 参考链接:CISCN 华北赛区 Day1 Web2 对我来说新知识点很多的一道题,菜笑了 一.涉及知识点 1.薅羊毛逻辑漏洞 可以通过抓包修改折扣等数据来购买 2.jwt-co…
目录 刷题记录:[CISCN2019 华北赛区 Day2 Web1]Hack World 一.前言 二.正文 1.解题过程 2.解题方法 刷题记录:[CISCN2019 华北赛区 Day2 Web1]Hack World 一.前言 离国赛已经过去好久了,到现在才看复现,这道题当时做的时候没有什么头绪,现在来看答案发现其实没有很难,就是经验还不足 二.正文 题目复现链接:https://buuoj.cn/challenges 参考链接:ciscn2019华北赛区半决赛day2_web1题解 1.解…
id=0 id=1 id=2 id=3 发现结果不一样,尝试 : ">4","=4","<4" : 在自己的环境下验证一下: 爆一下数据库: id=(ascii(substr(database(),1,1))>32) ''' @Modify Time @Author ------------ ------- 2019/10/25 19:28 laoalo ''' import requests from lxml import…
大文件上传ftp,不知道有没有上传完成,如果没有上传完成另一个程序去下载这个文件,导致下载不完整. 判断一个文件是否上传完成的方法: /** * 间隔一段时间去计算文件的长度来判断文件是否写入完成 * @param fileName * @return * @throws Exception */ private static boolean fileCreateSuccess(String fileName){ try { File file; file=new File(fileName);…
0x00 知识点 PHP伪协议直接读取源码 http://xxx.xxx/index.php?file=php://filter/convert.base64-encode/resource=index.php updatexml报错注入 不懂的可以看链接: https://blkstone.github.io/2017/11/09/updatexml-sqli/ 关于 updatexml 函数 UPDATEXML (XML_document, XPath_string, new_value);…
步骤: 找到lv6的购买出,修改折扣买lv6 :然后找到admin的登陆界面,JWT破解,登陆admin :点击一键成为大会员,利用python反序列化漏洞读取flag 解析: 这题师傅们的WP已经很详细了,我就记录一下我自己不懂的点 import pickle import urllib class AdminHandler(BaseHandler): @tornado.web.authenticated def get(self, *args, **kwargs): if self.curr…
知识点:逻辑漏洞.jwt密钥破解.python反序列化漏洞 进入靶机查看源码: 提示需要买到lv6,注册账号发现给了1000块钱,根据ctf套路应该是用很低的价格买很贵的lv6,首页翻了几页都没发现lv6,写脚本找: import requests url = "http://76267771-2542-4ee4-a22f-d01b144fa6c5.node3.buuoj.cn/shop?page={}" for i in range(10,1000): url1=url.format…
考点:JWT身份伪造.python pickle反序列化.逻辑漏洞 1.打开之后首页界面直接看到了提示信息,信息如下: 2.那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看下一页,此时观察下访问的url地址:http://xxxxxxx.node4.buuoj.cn:81/shop?page=2,很明显这里是要我们修改page参数进行访问,获取到lv6后进行购买,那就用脚本获取下lv6的位置,脚本和结果如下: 脚本代码: import requests url = 'ht…
考点:JWT身份伪造.python pickle反序列化.逻辑漏洞 1.打开之后首页界面直接看到了提示信息,信息如下: 2.那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看下一页,此时观察下访问的url地址:http://xxxxxxx.node4.buuoj.cn:81/shop?page=2,很明显这里是要我们修改page参数进行访问,获取到lv6后进行购买,那就用脚本获取下lv6的位置,脚本和结果如下: 脚本代码: import requests url = 'ht…
知识点:题目已经告知列名和表明为flag,接下来利用ascii和substr函数即可进行bool盲注 eg: id=(ascii(substr((select(flag)from(flag)),1,1))<128) 0x01 看了网上的源码发现: <?php $dbuser='root'; $dbpass='root'; function safe($sql){ #被过滤的内容 函数基本没过滤 $blackList = array(' ','||','#','-',';','&','+…
补一下这道题,顺便发篇博客 不知道今年国赛是什么时候,菜鸡还是来刷刷题好了 0X01 考点 SQL注入.盲注.数字型 0X02自己尝试 尝试输入1 赵师傅需要女朋友吗???随便都能有好吧 输入2 ???黑人问号 输入3 提交空 输入union都被过滤.... 每次sql注入就很迷茫,然后fuzz测试一把... 发现好多都被过滤了 后来找到赵师傅的视频看了一下 有写 :通过1^1^1这个知识点绕过 1^(if((ascii(substr((select(flag)from(flag)),1,1))…
解题思路 打开发现是很简单的页面,告诉了表名和列名,只需知道字段即可 尝试一下,输入1,2都有内容,后面无内容.输入1'让他报错,发现返回bool(false) 大概思路就是布尔型注入了,通过不断返回正确值,猜测对应字段 fuzz 通过fuzz发现,482长度的被禁了,472长度的可以使用,也就是说禁用了空格,union,or,and等 那就有点难办了,联合注入被禁,报错注入被禁 首先我们先不看过滤,应该选择的sql语句位为 select ascii(substr((select flag fr…
打开题目, 我们开始尝试注入, 输入0回显Error Occured When Fetch Result. 输入1回显Hello, glzjin wants a girlfriend. 输入2回显Do you want to be my girlfriend? 输入大于2的数回显:Error Occured When Fetch Result. 但是有趣的是,我们输入1/1结果回显了Hello, glzjin wants a girlfriend. 于是我们判断它是数字型注入 然后我们继续测试,…
简介  原题复现:  考察知识点:逻辑漏洞.JWT伪造.python反序列化  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过程 python页面批量查找 打开看信息 看到这一块 结合下方产品列表 大致看了下有500个分页 写了个py找V6!!! import requests from bs4 import BeautifulSoup for i in range(1,500): url="http://3e…
记一道布尔注入的题,存在过滤字符. 从题目看应该是一道注入题.提示存在flag表flag列. 输入1和2的返回结果不一样,可能是布尔注入. 简单用万能密码尝试了一下.提示SQL Injection Checked.显然是存在过滤的.FUZZ测试: 好像并没有过滤掉很多的东西.ascii和substr都存在,但是空格被过滤了. 绕过空格的方法: 1.注释绕过 /**/ /*!*/ 2.括号绕过 3.HTML编码绕过 常用的URL编码中,会把空格编码成%20,所以通过浏览器发包,进行的URL编码中,…
<div cacModule.controller('CacScriptEditCtrl', CacScriptEditCtrl); CacScriptEditCtrl.$inject = ['$uibModalInstance', '$scope', '$compile', '$scope', 'cacScriptService', 'messageService', 'entity']; function CacScriptEditCtrl($uibModalInstance, $scope…
前提:领导给了我一个文件夹,里面有4000千多张产品图片,每张图片已产品编号+产品名称命名,要求是让我把4000多张产品图片上传到服务器端,而且要以产品编码创建n个文件夹,每张图片放到对应的文件夹下. 思路:1.开始的思路是将整个文件夹都上传到服务器端,但查找资料获得,FileUpload只能上传文件,不能上传文件夹,从而得出另外一种方案,将文件夹压缩,然后便可以上传到服务器端,然后再服务器端解压,解压之后再去每个文件从新读取并放到对应的文件夹下.思量再三,觉得很是麻烦. 2.第二个思路,文件批…
mac下svn问题——“.a”(静态库)文件无法上传解决    “.a”(静态库)文件无法上传(svn工具:Versions)          网上查询了一下,说是Xcode自带的svn和Versions以及一些其它工具都不能上传".a"文件.          解决办法如下:   1.打开终端,输入cd,空格,然后将需要上传的.a文件所在的文件夹(不是.a文件)拖拽到终端(此办法无需输入繁琐的路径,快捷方便) ,回车: 2.之后再输入如下命令:svn add libGoogleAn…
工作需要,整理一下最近对php的学习经验,希望能对自己有帮助或者能帮助那些需要帮助的人. thinkphp对文件的操作,相对来说比较简单,因为tp封装好了一个上传类Upload.class.php 废话不多说,直接上真的. 源码分享地址:http://pan.baidu.com/s/1qXuMGGk 建立一个数据库: username:上传者. time:上传时间 size:文件大小. path:路径. filename:上传的文件名. savename:上传后保存的加密文件名称. 对文件的上传…
服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关 upload_max_filesize = 2M //PHP最大能接受的文件大小 post_max_size = 8M //PHP能收到的最大POST值' memory_limit = 128M //内存上限 max_execution_time = 30 //最大执行时间 当然不能简单粗暴的把上面几个值调大,否则服务器内存资源吃光是迟早的问题. 解决思路 好在HTML5开放了新的FILE API,也可以直接操作二进制对象,我们可…
目录 1. 前言 2. 关于vue-simple-uploader 3. 基于vue-simple-uploader封装全局上传组件 4. 文件上传流程概览 5. 文件分片 6. MD5的计算过程 7. 秒传及断点续传 7.1 对于前端来说 7.2 前端做分片检验:checkChunkUploadedByResponse 8. 源码及后记 1. 前言 之前公司要在管理系统中做一个全局上传插件,即切换各个页面的时候,上传界面还在并且上传不会受到影响,这在vue这种spa框架面前并不是什么难题.然而…
1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class My_Socket(socket): def __init__(self,coding='utf-8'): self.coding = coding super(My_Socket, self).__init__(type=SOCK_DGRAM) def my_recv(self,num): msg…
背景:之前一直做的是数据库的增删改查工作,对于文件的上传下载比较排斥,今天研究了下具体的实现,发现其实是很简单.此处不仅要实现单文件的上传,还要实现多文件的上传. 单文件的下载知道了,多文件的下载呢?? 我这里使用的spring boot来快速搭建spring mvc框架,贼方便,不用都对不起自己. 本篇博客将讲解的是Springmvc的文件上传和下载功能.对于上传功能,我们在项目中是经常会用到的,比如用户注册的时候,上传用户头像,这个时候就会使用到上传的功能.而对于下载,使用场景也很常见,比如…