CTF 解题记录-文件上传基础 第一题:无限制上传 这一题对上传的文件没有任何限制,我们就直接上传一个一句话木马的php文件上去,直接蚁剑链接找flag就ok了。...图片 图片 第二题:JS前端验证 对与前端认证,有两种解决办法绕过,第一个是在浏览器中禁用js渲染,第二个是先把文件后缀改成符合上传的后缀,在通过burp抓包把后缀重新改回.php格式再重新发送...第三题:.htaccess文件 .htaccess文件:htaccess是一个纯文本文件,里面有apache相关配置的指令,他的作用主要有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等...%00截断是用在路径上的!...road=var/www/html/upload/a.php%00 ,这样就算改了我们上传的文件名,被添加到%00后面也会被截断,文件名自然变成了a.php,然后又可以快乐的链接了。
浏览器 ---- 1、IE IE浏览器(Microsoft Internet Explorer) 对URL长度限制是2083(2K+53),超过这个限制,则自动截断(若是form提交则提交按钮不起作用)...多长呢?长到预览页面load啊load啊就是load不出来。查了查,这是因为浏览器或者服务器对url有长度限制(很多人包括我自己误解为是HTTP get方法对参数的限制,其实不是)。...(这句话也是百度来的,未经证实)这么算算,对于IE浏览器来说,标题和正文加起来最多能输入231个中文,超过了就完蛋。...那么通过get方式传递参数预览这样的解决办法就变得毫无用处,因为资讯一般来说至少是三五百字的,必须寻找替代方案。...简单说,如果是IE浏览器,那么我们引入一个js插件,这个插件用cookie重写了sessionStorage的几个方法(setItem、getItem等),代码一看便知: 插件名:sessionStorage.js
3.1 删除js绕过: 直接删除代码中onsubmit事件中关于文件上传时验证上传文件的相关代码即可: 或者可以不加载所有js,还可以将html源码copy一份到本地,然后对相应代码进行修改,本地提交即可...shell.php空格 shell.php:1.jpg shell. php::$DATA shell.php:1.jpg 在windows中,后缀名后面的点和空格都会被删除掉。...但是我们在URL中不能直接使用空,这样会造成无法识别;我们通过查看ASCII对照表,发现ASCII对照表第一个就空字符,它对应的16进制是00,这里我们就可以用16进制的00来代替空字符,让它截断后面的内容...使用burpsuite进行抓包,因为这里是通过URL进行传递的文件上传后存储路径,所以需要对16进制的00进行URL编码,编码的结果就是%00,通过这种方式,就可以%00截断后面的内容,让拼接的文件名不再进行生效...IIS6.0解析漏洞: IIS6.0解析漏洞分两种: 1、目录解析: 以xx.asp命名的文件夹里的文件都将会被当成ASP文件执行。
”、“面向数据报”的两大特点,有需要的小伙伴可以参考 UDP协议原理 比如说现在要发消息,那么QQ这个进程就会构造出来一个应用层数据报 下面需要使用Socket API 进行send的时候,就交给了传输层...报头中的序号“1,2,3,4”都分别占有2bit,其解释如下: 1: 源端口(是由操作系统自动分配的) 2: 目的端口(服务器哦提前准备好的) 3: UDP长度(表示一个UDP的协议报头有多长...) 【由于只占有2bit,因此UDP数据报最大长度就是64k,一旦超出了这个长度,超出的部分就会被截断,就会发送一个残缺的数据,这种情况的解决办法有两个:一个就是在应用层拆分数据报,也就是使用多个UDP...传输;一个就是直接换成TCP传输;一般会选择后者来解决问题】 校验和:(用于检查数据传输的过程有没有出错) 【当校验和不符合预期的时候,就一定出错了】 【进一步解释:例如现在需要下载一个大文件...其特点如下:】 md5解释: 1.无论输入的字符串有多长,计算的md5是定长的 2.通过源字符串计算md5很容易,但是逆向计算很难 3.源字符串只要有一点变动,md5的变动就会很大
网页上传 -> 目标服务器的缓存目录 -> 移动到代码规定的目录 -> 重命名(开发) 移动上传文件函数: move_uploaded_file() 1.前端验证绕过: 可以通过burp抓包,删除js...: url编码实际上本质是十六进制,这里是get传参,所以直接在url栏中写%00,00在计算机中相当于结束标识、计算机识别到十六进制00的时候会自动停止。...12.00截断: get会对网站url传参进行16进制解码,而post不会,所以在传参之后,直接用burp修改16进制 13.图片马: 对图片的内容进行检测, 并不是单单检测文件后缀名 图片马就是将一句话木马和图片合并在一起...相当于将文件重命名的时候,重命名为alva.php 这里经过测试,不用删除重命名之后的时间文件名也可以生效 靶场12-00截断绕过 这里也是00截断,其实跟靶场11的一样,get会去对url...,这时候用普通的图片马就会被直接处理掉,这里可以将一句话木马写在gif图片的头部。
3.header后的PHP代码还会被执行。例如,将浏览器重定向到冠威博客 代码如下 复制代码 < ?...php //重定向浏览器 header(“Location: http://www.jquerycn.cn”); //确保重定向后,后续代码不会被执行 exit; ?...若设置content=”秒数;url=网址”,则定义了经过多长时间后页面跳转到指定的网址。例如,使用meta标签实现疫苗后页面自动跳转到冠威博客。...若设置content=”秒数;url=网址”,则定义了经过多长时间后页面跳转到指定的网址。例如,使用meta标签实现疫苗后页面自动跳转到冠威博客。...若设置content=”秒数;url=网址”,则定义了经过多长时间后页面跳转到指定的网址。例如,使用meta标签实现疫苗后页面自动跳转到冠威博客。
:1.php[空格]5 点绕过,windows 不允许出现点结尾的文件名,会自动去掉文件名后面的点, linux 允许出现点结尾的文件6 流文件绕过,windows 中,::$DATA 符号后面的内容会被当成字节流数据...、&& 、 | 、 ||2、原理:在操作系统中, & 、&& 、 | 、 || 都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令...比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。...多后缀名解析漏洞(从后往前解析,一直解析到可识别的后缀)、罕见 b 后缀名解析漏洞、.htaccess解析漏洞命令执行漏洞:CVE-2021-42013IIS a 文件名解析漏洞,从前往后解析,遇到分号就截断...,忽略分号后面的内容例如:1.asp;.jpg b 罕见后缀名,例如:.asa、.cer、.cdx c IIS 5.X/6.0的文件夹解析漏洞,例如:将文件夹以1.asp命名,该文件夹中的所有文件都会被当做
,就会被截断,截断的字符串将以‘...’结尾,所以实际看到的字符要少三个 {{ value|truncatewords:3 }} 这也是截断,但这是按单词数来截断 {{ value|...{ k }}:{{ v }} {% empty %} 没有这个字典,或者字典为空 {% endfor %} empty的作用就是,当你循环列表或字典时,没有找到或为空时,就返回...title {% endblock %} 诗歌 小说</a
varchar小于定义长度时,还是按实际长度存储,插入多长就存多长,varchar可以设置的最大长度是varchar(65535)。...4、如果SQL MODE开启了严格模式(Strict SQL MODE),那么如果写入数据超过设置长度,则会报错,如果没有开启严格模式,那么数据会被截断写入,并且返回一个warning。
]test.com[/url] 后台会首先处理[video],然后内容就变成了 [url]test.com[/url] 然后会处理[url]...url]&1=1' (length=41) 然后在1420行,各个参数会被做相应的处理,由于我们必须保留=号以及/ 号,所以这里我们选择把内容放在fragment中。...如果我们在上传的xml文件中构造name为tttttttttttttttttttttttttt.php.css时,name在存入数据库时会被截断,并只保留前30位,也就是tttttttttttttttttttttttttt.php...这里的iframe标签的链接被encode_url重新处理,一旦被转义,那么[url]就不会被继续解析,则不会存在问题。 4.2 后台任意文件创建 ?...在判断文件名后缀之前,加入了字符数的截断,这样一来就无法通过数据库字符截断来构造特殊的name了。 5.
这样一来攻击者就很难构造储存型xss了,因为除了这些标签以外,其他的标签都不会被解析(所有的左右尖括号以及双引号都会被转义)。...]test.com[/url] 后台会首先处理[video],然后内容就变成了 [url]test.com[/url] 然后会处理[url]...如果我们在上传的xml文件中构造name为tttttttttttttttttttttttttt.php.css时,name在存入数据库时会被截断,并只保留前30位,也就是tttttttttttttttttttttttttt.php...重新处理,一旦被转义,那么[url]就不会被继续解析,则不会存在问题。...后台任意文件创建 在判断文件名后缀之前,加入了字符数的截断,这样一来就无法通过数据库字符截断来构造特殊的name了。
当访问 xx.com/phpinfo.jpg/1.php 这个 URL 时,$fastcgi_script_name 会被设置为phpinfo.jpg/1.php,然后构造成 SCRIPT_FILENAME...当访问 xx.com/phpinfo.jpg/1.php 这个 URL 时,$fastcgi_script_name 会被设置为phpinfo.jpg/1.php,然后构造成 SCRIPT_FILENAME...2)上传目录、静态资源(CSS/JS/图片等)目录,都设置好屏蔽 PHP 执行权限。...%00截断 条件:php 版本 < 5.3.4 filename=test.php%00.txt 1、上传时路径可控,使用 00 截断 2、文件下载时,00 截断绕过白名单检查 3、文件包含时,00 截断后面限制...(主要是本地包含时) 4、其它与文件操作有关的地方都可能使用 00 截断。
因为 GET 请求方法会被缓存起来。对同一请求会有性能的提升。只有当 URL 请求长度接近或超过 2048 个字节时才需要换成 POST。部分浏览器会 URL 超长截断。...然后用JS 处理这个字符串,并根据 mime-type 类型和传入其他的头信息,并解析出来。...他和 HTTP2 的静态推送有些类似,不同的是 HTTP2 静态推送的按照资源级别主动推送,无需 js 解析;而 Multipart XHR 将文件打包成一个,在浏览器端通过 JS 方式解析。...大量数据使用 POST ,超长 URL 会被截断。...信标方式(Beacons) 这种技术和动态脚本注入非常类似,使用 JS 创建 Image 对象,把 src 属性设置为上报的 URL ,这个其中包含了要通过 GET 传回的键值对数据。
这样一来攻击者就很难构造储存型xss了,因为除了这些标签以外,其他的标签都不会被解析(所有的左右尖括号以及双引号都会被转义)。...]test.com[/url] 后台会首先处理[video],然后内容就变成了 [url]test.com[/url] 然后会处理[url]...如果我们在上传的xml文件中构造name为tttttttttttttttttttttttttt.php.css时,name在存入数据库时会被截断,并只保留前30位,也就是tttttttttttttttttttttttttt.php...重新处理,一旦被转义,那么[url]就不会被继续解析,则不会存在问题。...4.2 后台任意文件创建 15.jpg 在判断文件名后缀之前,加入了字符数的截断,这样一来就无法通过数据库字符截断来构造特殊的name了。 5.
); 3、于是可以判断,当前端如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js...; 5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去...//语法: jsonp(url,opts,fn) url (String) url to fetch
这里我不用包含xx.php的文件,只要是文件的内容符合php语法规范,那么就会被web容器解析。 ? 那么如果不符合规范呢? ? 若不符合规范则它会暴露源代码。...> (allow_url_fopen() 要打开。)...我们用burpsuite就可以绕过,send torepeater 然后url decode。 ? 再次查看日志发现已经没有被转化成url编码了~~ ?...page=xx.jpg 包含图片就成为了: xx.jpg.php,但是这个文件是不存在的,所以就报错了。 (1)%00截断包含 但是这个并非不能绕过的,比如我们要说的%00截断。 ?...Web容器把问号之后的内容当做参数,而txt不在web容器里面解析,参数对访问1.txt的返回内容不影响,所以就实现了伪截断。
submit" value="Upload"> ``` ### 1.1 前端 JavaScript 检测 前端一般都是使用 js...会被替换为!...]http://127.0.0.1.com/a.jpg[/url]),当我们在 URL 后面添加。...apache 扩展名解析特性 在了解这个解析漏洞之前,我们要首先了解 apache 和 PHP 的三种结合方式: ### 3.1.3 %00 截断 这个多数被利用在截断路径,利用的条件是: -.../upload/shell.php%00,这样后面的内容就会被截断掉,这就导致了任意文件上传 还要注意的是 %00 是 url 编码,在以 POST 传参时应该使用 burpsuite 对其进行 url
include_file=zip://C:\wamp\www.php\1.jpg%231.php` 00 截断 gpc off && php < 5.3.4 长文件名截断 转换字符集造成的截断 伪协议 包含日志,环境变量 2.见 3.远程文件包含 allow_url_include 为 on ,allow_url_fopen 为 off 伪协议: ?...allow_url_include && allow_url_fopen 为 off 包含共享文件: ?...yu.php%00.jpg 4.上传路径可控 5.解析漏洞 Nginx yu.jpg/1.php Apache yu.php.xxx 6.验证方法 MIME, 客户端的 JS 验证,白名单,黑名单 7...,NULL 变成 \0, 提交 %00' 会被转义生成 \0\',这时候再提交把 0 替换成空,那么就剩下 \\',\\ 表示 \ 的转义,' 单引号也就成功出来了。
因为一张html页面里和大都是公共的头尾信息和js/css代码,对你以后做正文内容抽取不会影响(也可以以后做内容抽取时把头尾信息补回去就好)。...所以这样直接用set()保存URL是不建议的,除非你的内存有十几个G。 一个取巧的办法是截断URL。...就还需要想办法压缩URL的内存占用,可以使用BloomFilter算法,是一个很经典的算法,非常适用海量数据的排重过滤,占用极少的内存,查询效率也非常的高。...1.调试开多少个线程,多长时间拨号切换IP一次最优。 每个网站对短时间内访问次数的屏蔽策略不一样,这需要实际测试,找出抓取效率最大化的时间点。...可以这样做,但是我选了另一个度量单位,就是每总抓取120次就重新拨号。为什么这样选呢?
JavaScript函数声明方式 * 函数声明方式声明的函数会被解析器通过函数声明提升的过程即function declaration hoisting置于原代码数的顶部,所以即使在函数前调用该函数也可以正常使用...* 函数对象方法可以直观地理解“函数是对象,函数名是指针”这个概念,但是它会造成解析器两次解析,一次是普通的ECMAScript代码,一次是解析传入Function构造函数里的字符串,会影响js...对双字节、单字节非法字符(URL规定参数值中再次出现保留字为非法,比如?...主动释放对象,被释放后就找不回了。undefined:初始化未赋值的变量。...* * 通过length扩容,缩容(截断,被截断的元素还占用存储空间,但是找不回了,也不能被释放回收,还属于原数组对象当中,垃圾回收不能只回收数组的部分元素,需跟整个原数组一起回收)。
领取专属 10元无门槛券
手把手带您无忧上云