精华内容
下载资源
问答
  • 00截断

    2019-10-01 08:56:30
    0x00截断 and %00截断 0x00截断 用途 00截断用于文件上传时的绕过 example: 只支持.jpg/.png/.bmg 格式上传 ,这时候我们的 一句话.php 无法上传 , 这时候就可以使用00截断的方式绕过上传。 ...

     

    0x00截断  and  %00截断

     

    0x00截断

     

    用途

    00截断用于文件上传时的绕过

    example:

    只支持.jpg/.png/.bmg 格式上传 ,这时候我们的 一句话.php 无法上传 , 这时候就可以使用00截断的方式绕过上传。

     

     

     

     

     

    过程

     1.php  ?  1.php.jpg  ? 1.php00(hex).jpg

    我们只需要把我们准备好的一句话木马文件名修改为这种格式xx.php.jpg,在文件上传的时候使用Burp抓包 修改php后面一位字符 hex 为00 就OK了

     

     

     

     

    原理

    系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。

     

    限制条件

     PHP<5.3.29 ,且GPC关闭

     
     

     

    %00截断

     

    %00截断与0x00截断是一样的   

    只不过是用于 url 中的截断



     

    转载于:https://www.cnblogs.com/unixcs/p/11157064.html

    展开全文
  • CTF 00截断

    2020-12-08 21:18:30
    PHP 5.2 00截断上传的原理 ...C语言中学过字符串的结尾会有00作为字符串结束的标志 在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束 ...%00截断有两

    00截断上传的原理

    php解释器是C语言编写的
    C语言中学过字符串的结尾会有00作为字符串结束的标志
    在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束

    0x00,%00,/00之类的截断,都是一样的

    条件

    %00截断有两个条件php版本小于5.3.4和magic_quotes_gpc为off状态。 如果这时我们将magic_quotes_gpc改为on那么就不能截断了,因为开启magic_quotes_gpc后%00会被加上一个反斜杠转义掉

    解读代码

    后端验证代码

    if (!empty($_POST['submit'])) {
        $name = basename($_FILES['file']['name']);//$_FILES['myFile']['name'] 客户端文件的原名称 
        $info = pathinfo($name);//pathinfo()获取文件的后缀
        $ext = $info['extension'];
        $whitelist = array("jpg", "png", "gif");
        if (in_array($ext, $whitelist)) {
            $des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext;
            //move_uploaded_file—将上传的文件移动到新位置
            if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) {
                echo "<script>alert('上传成功')</script>";
            } else {
                echo "<script>alert('上传失败')</script>";
            }
        } else {
            echo "文件类型不匹配";
        }
    }
    

    d e s 在 连 接 的 时 候 最 前 面 连 接 的 是 des在连接的时候最前面连接的是 des_GET[‘road’],而$_GET[‘road’]这个参数又是我们可以编辑指定的,所以可以构造出00截断

    $_FILES数组内容

    $_FILES[‘myFile’][‘name’]     客户端文件的原名称

    $_FILES[‘myFile’][‘type’]      文件的 MIME类型,需要浏览器提供该信息的支持,例如"image/gif"

    $_FILES[‘myFile’][‘size’]      已上传文件的大小,单位为字节

    $_FILES[‘myFile’][‘tmp_name’]   文件被上传后在服务端储存的临时文件名,一般是系统默认,可以在php.ini的upload_tmp_dir指定,但用 putenv() 函数设置是不起作用的

    $_FILES[‘myFile’][‘error’] 和该文件上传相关的错误代码,[‘error’] 是在 PHP 4.2.0版本中增加的,下面是它的说明:(它们在PHP3.0以后成了常量)
      注:

    1. 文件被上传结束后,默认地被存储在了临时目录中,这时必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。所以在删除之前要用PHP的copy() 函数将它复制到其它位置,此时,才算完成了上传文件过程。
      
    参考:https://www.cnblogs.com/xzj8023tp/p/8719792.html
    https://www.cnblogs.com/52php/p/5660087.html

    pathinfo()获取文件的后缀

    pathinfo()函数返回的是一个包含了文件信息的数组,数组中有四个元素,分别是dirname、basename、extension、filename。

    Array (
        [dirname] => /www/mywebsite/images
        [basename] => myphoto.jpg
        [extension] => jpg
        [filename] => myphoto
    )
    

    注:pathinfo()、dirname()、basename()都可以获得文件的路径

    做题

    在这里插入图片描述
    在这里插入图片描述
    或者
    hex编码修改 更改相应的字节 0x20->0x00【20是空格】
    https://blog.csdn.net/qq_26090065/article/details/81458937

    CTFhub双写绕过

    <!--
    $name = basename($_FILES['file']['name']);
    $blacklist = array("php", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf", "htaccess", "ini");
    $name = str_ireplace($blacklist, "", $name);//把字符串 $name中的字符$blacklist(不区分大小写)替换成空
    -->
    

    经过测试发现这个函数只匹配第一个

    展开全文
  • 00截断原理

    2020-07-17 10:09:00
    0x00截断原理: 0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。这个可以用在对文件类型名的绕过上。 但要...

    0x00截断原理:

    0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。这个可以用在对文件类型名的绕过上。

    但要注意是文件的16进制内容里的00,而不是文件名中的00 !!!就是说系统是按16进制读取文件(或者说二进制),

    遇到ascii码为零的位置就停止,而这个ascii码为零的位置在16进制中是00,用0x开头表示16进制,也就是所说的0x00截断。

    %00是被服务器解码为0x00发挥了截断作用。

    参考链接:https://www.seotest.cn/jishu/45571.html

    展开全文
  • 文件上传绕过之00截断

    千次阅读 多人点赞 2019-05-26 21:37:35
    00截断是文件上传时的bypass手段之一,很多人知道这种绕过方法,但却知其然不知其所以然,对于其原理以及什么场合下适用并没有很好的了解,本文就来谈一谈00截断是怎么工作的,在什么场合下适合使用它 1. 【00截断...

    00截断是文件上传时的bypass手段之一,很多人知道这种绕过方法,但却知其然不知其所以然,对于其原理以及什么场合下适用并没有很好的了解,本文就来谈一谈00截断是怎么工作的,在什么场合下适合使用它

    1. 【00截断原理】

    • 谈到00截断我们都会想到,有什么0x00截断,%00截断,也有人对两个东西分析一大堆,那么它俩有什么区别呢,什么场合适用哪一个呢?这就要从00截断的原理说起:
      其实截断的原理也很简单,无论0x00还是%00,最终被解析后都是一个东西:chr(0)
      chr()是一个函数,这个函数是用来返回参数所对应的字符的,也就是说,参数是一个ASCII码,返回的值是一个字符,类型为string。
      那么chr(0)就很好理解了,对照ASCII码表可以知道,ASCII码为0-127的数字,每个数字对应一个字符,而0对应的就是NUT字符(NULL),也就是空字符,而截断的关键就是这个空字符,当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃
    • 这种情况常出现在ASP程序中,PHP 版本<5.3.4时也会有这个情况,JSP中也会出现。
      那么就可以知道00截断的原理了,在后缀中插入一个空字符(不是空格),会导致之后的部分被丢弃,而导致绕过的发生。如:在文件1.php.jpg中插入空字符变成:1.php.0x00.jpg中,解析后就会只剩下1.php,而空字符怎么插入的呢?通常我们会用Burp抓包后,在文件名插入一个空格,然后再HEX中找到空格对应的16进制编码“20”,把它改成00(即16进制ASCII码00,对应十进制的0),就可以插入空字符了。PS:这里的空格纯粹只是一个标记符号,便于我们找到位置,其实这里是什么字符都无所谓,只不过空格比较有特异性,方便在HEX中查找位置

    2.如何利用00截断

    • 知道了基本原理之后,我们还要分析它怎么起作用,如果按照上述的做法来做,则00绕过只能绕过前端验证,因为如果是后端验证,那么即使后缀被截断了,处理之后为.php,还是会被后端验证拦截,所以不是什么情况下00截断都有用的,不过这里至少可以确定,在绕过前端验证可以用。在文件名中插入空字符进行00截断,只适合前端绕过,后端绕过无效。
      那么如果我们想在后端绕过也用00截断呢,这里就不能对文件名进行截断了,比如文件后缀检测代码如下时

    在这里插入图片描述

    • 如果在Burp中直接改filename,根本无法起作用,因为截断的只是后缀名,只能绕过简单的前端验证,到后端碰到上图的代码,在提取上传文件后缀的时候后缀还是.php,肯定会被拦,也就是说这里00截断没有发挥任何“绕过”后端验证的作用。
      这里想绕过,必须要知道文件上传的条件:

    1.后缀检测,合格则进行上传路径拼接
    2.拼接路径和文件名,组成文件上传路径

    • 这里决定文件上传后被保存在文件夹中的真实后缀名的是文件上传路径,因为上面一大堆代码只不过是对后缀名进行各种处理和验证,这里相当于一个过安检的过程,最后决定文件到底是什么名字,什么后缀名,要看**“文件上传路径”**
      在我的一篇博客“文件上传漏洞靶场关键源码分析”中提到过这个问题,决定最后上传文件的真实后缀名的是拼接路径的方法,而不是那个校验了半天的后缀最后被处理成了个什么东西,这只是一个单纯的安检过程,不一定是最后final的后缀名,比如下图

    在这里插入图片描述

    • 这个源码中的文件路径是上传路径和文件名拼接的,也就是说也许上面的后缀被处理了半天能通过安检了,但是最后上传后的文件后缀却不一定这个被处理了半天的“后缀”,不明白的可以去看看我的上一篇博客。这里拼接的是$file_name这个变量,它和后缀名变量
      $file_ext是不同的, $file_name没有经历那一堆安检处理,只是从它身上截取出了一个
      $file_ext变量拿去安检,因此这里用 $file_name来拼接路径的话,还是有可能蒙混过关的,比如这里就可以构造
      xxx.php.空格. 来进行绕过。 扯远了,回到00截断,说了这么多,也就是说想使用00截断绕过后端验证,除非两个条件之一:
    • 1.路径拼接像上图的代码一样,直接使用的 $file_name这个文件名,而不是 $file_ext和其他什么东西来拼成一个文件名字,这时文件名中还是包含截断字符的,路径拼好之后可以被截断成想要的.php。
    • 2.文件路径可控,比如我可以修改路径拼接的path时,比如抓到的包中存在path: uploads/,就可以直接把路径构造成uploads/xxx.php%00,先构造一个存在截断字符的后缀“等着”真正的文件名,或者后缀名,因为不管它是啥,都会被截断而丢弃,因为这里已经到了“最后阶段”,不会再有安检过程了,这里截断之后的结果就是最终上传的结果,比如下图中,抓到的包里发现了路径,那么使用上面的方法直接改它,就可以成功上传aa.php文件,不管被处理后的文件名是什么,在这里被截断才是真正的“截断”,因为这是在安检(后缀名校验)之后进行的截断,直接决定真实的文件后缀名。

    在这里插入图片描述

    3.【0x00h和%00】

    • 它们最终的结果都是一样的,都代表着chr(0),即空字符,只不过使用的位置不同,0x00代表16进制的空字符00,需要在HEX中改为00,进行截断,而%00是URL解码之前的字符,它被解码成16进制ASCII码之后实际上也是0x00,所以它们最终都对应的是空字符,这里%00可以用在URL中如xx.php?filename=test.php%00.txt,也可以直接插在Burp包中的路径中,如path=shell.jsp%00.txt
    展开全文
  • 00截断原理分析

    万次阅读 2018-08-06 20:24:30
    0x00,%00,/00之类的截断,都是...%00截断 下面是用 URL 编码形式表示的 ASCII 字符 在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束 比如 ...
  • ctfhub 00截断

    2020-09-04 23:29:19
    这个00截断和我之前遇到的不太一样 之前是在文件后缀加上00截断 我们先看看源代码 if (!empty($_POST['submit'])) { $name = basename($_FILES['file']['name']); $info = pathinfo($name); $ext = $info['...
  • 利用00截断上传webshell

    2020-08-20 20:38:17
    1) 理解00截断上传 WebShell 的原理 2) 学习00截断上传 WebShelI 的过程 [实验原理] 利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。 假设文件的上传路径为 [ ...
  • 文件上传之00截断

    千次阅读 2019-10-02 00:20:55
    文件上传之—00截断 1.什么是00截断 事实上0x00,%00,/00这三类阶截断都是属于同种原理,只是表示不同而已 下面是用 URL 编码形式表示的 ASCII 字符 在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符...
  • 一、php00截断在php5.3.4中php修复了0字符,但是在之前的版本中00在php中危害较大。...上传时路径可控,使用00截断2.文件下载时,00截断绕过白名单检查3.文件包含时,00截断后面限制(主要是本地包含时)4....
  • 00截断拿shell

    千次阅读 2018-03-11 17:28:09
    00截断拿shell就是程序员在写代码的时候针对上传过滤的不是很严格,从而产生00截断上传shell打个比喻,url为:http://www.xxx.com/png/1.php.png,原理就是通过抓包的形式将.png换成00.再上传的时候,当文件系统读取...
  • 在web上传中的过程中,最常见的绕过方式—-00截断00截断的核心在于chr(0)这个字符,chr(0)是字符串的结束符,在ascll码中,它表示的字符是Null,也就是 空 。当程序输出包含这个chr(0)的变量时,chr(0)...
  • 关于00截断原理的一些思考

    万次阅读 多人点赞 2018-06-02 11:15:50
    在做CTF web题时,遇到了几道有关00截断的题目,但是有 %00截断和0x00截断,一时很是懵逼。最后自己做了些实验,发现两者是同一个原理,这里拿出来给大家分享下。一,0x00截断0x00是十六进制表示方法,是ascii码为0...
  • 靶场地址:http://whalwl.site:8025/ 解题准备:了解URL和POST方式的00截断姿势 解题思路: 1、方法:抓包 2、在十六进制中进行00截断 3、记录上传路径 4、成功访问 5、 蚁剑成功连接 ...
  • php是基础c语言实现的,C语言中认为0x00是结束符号,文件上传之所以可以00截断,是因为白名单判断的时候是判断后缀,在进行路径拼接的时候用的其他值,然后在进行move_uploaded_file的时候,这个函数读取到hex值为00...
  • CTFHub 文件上传 - 00截断 文件上传漏洞“%00截断”绕过讲解": https://www.fujieace.com/penetration-test/file-upload-00.html 截断原理: 0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式...
  • 今天是个好日子啊好日子啊~~然后大佬就问了00截断的条件,我直接断片。。。 00截断条件: PHP版本小于5.3.4 php.ini中的magic_quotes_gpc设置为Off %00截断原理: www.xxx.com/abc.php%00.jpg => ...
  • 00截断文件上传CTF例题详解题目解法 题目 解法 抓包进行尝试php文件果然不行 jpg文件可以上传成功 这里因为有文件路径,那么使用%00截断的时候,让他生成了一个2.php的文件,然后将3.jpg的内容写了进去 这里...
  • 绕过权限拿shell 00截断 可以在网上找到这些利用过程,本过程是实战经验,建议在主机的主机上使用。
  • CTFHub 文件上传-00截断

    千次阅读 2020-03-05 13:26:01
    CTFHub 文件上传-00截断 00截断有限制,php版本得低于5.3,并且GPC得关闭,一般在url上。 两种,%00和0x00,后台读取是遇到%00就会停止。 举个例子,url中输入的是upload/post.php%00.jpg,那么后台读取到是upload/...
  • 【文件上传】00截断详解

    千次阅读 2020-02-03 16:35:10
    00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到了一个字符串的结束...
  • 1、%00截断的应用场景 01 直接截断文件名 info.php%00.jpg #注意:Burp里面需要选中%00,键入ctrl+shift+u,转换后才生效。 02 IIS6.0目录解析漏洞:创建目录可控 qwsn.asp%00原来的目录名字就被阶段了 #注意...
  • 原理:%00,0x00,/00都属于00截断,利用的是服务器的解析漏洞(ascii中0表示字符串结束),所以读取字符串到00就会停止,认为已经结束。 使用%00截断有两个条件 php版本小于5.3.4 magic_quotes_gpc为off状态 ...
  • %00截断问题

    万次阅读 2014-01-05 14:21:22
    %00截断应该是比较经典的攻击手法,但是这个到底是不是漏洞,我也不知道,只是简单记录一下常见的%00利用场景。   一、php 00截断 在php 5.3.4中php修复了0字符,但是在之前的版本中00在php中危害较...
  • 文件上传 %00截断攻击

    千次阅读 2018-08-22 22:23:00
    %00截断攻击 0x00实验 <html> <head> <title>upload 0x00截断</title> </head> <body> <?php $filename = $_FILES["file"]["name"]; echo $filename; ...
  • 文件上传漏洞%00截断

    2021-02-20 10:42:02
    诸如前端、黑白名单绕过暂且不表,下面就用%00截断试试水。首先要熟悉下函数:move_uploaded_file(file,newloc); (文件名字,新文件位置) 原理是数据包中存在 path: uploads/,那么攻击者可以通过修改path的值来...
  • CTFHub_Web_00截断

    2020-08-10 22:19:40
    00截断的原理 http://www.admintony.com/%E5%85%B3%E4%BA%8E%E4%B8%8A%E4%BC%A0%E4%B8%AD%E7%9A%8400%E6%88%AA%E6%96%AD%E5%88%86%E6%9E%90.html 从中可知00截断的限制 1.php版本必须小于5.3.4 2.magic_quotes...
  • 上传 bp抓包 php 5.2版本的00截断,应该在上传路径截断 访问 http://challenge-c93b95717911341d.sandbox.ctfhub.com:10080/upload/5.php 蚁键连接
  • %00截断的猜测

    2018-02-11 11:24:00
    近来无事,研究下网络安全,看到了%00截断这个东西,百度下发现网友对与如何操作解释的很详细,但是原理却没有仔细解释,所以根据现象,我猜测了一下原理,大致如下: php5.3以下存在此漏洞,上传图片时,传入shell.php肯定...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,074
精华内容 13,229
关键字:

00截断