• 截断上传


    截断的核心,就是chr(0)这个字符

    这个字符不为空,也不是空字符(""),更不是空格!

    当程序在输出含有chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致漏洞产生

    简单举个例子,看下面的代码
    <%
    path="upfiles/picture/"
    file="20121212.jpg"
    upfilename=path & file '最后的上传地址
    %>
    就这段代码中的path为上传的路径,file为生成的文件名,upfilename为上传后的地址,程序表面是没什么问题,但如果path可以由用户自定义(path这个参数往往是从表单或参数传过来的,能够自定义),所以就产生了上传路径截断漏洞

    比如我在表单中把路径改成了“upfiles/1.aspChr(0)”
    这样上传路径就成了 path="upfiles/1.aspChr(0)" chr(0)代表那个截断字符
    这时变量被输出时,就成了upfiles/1.asp
    而不是upfiles/upfiles/1.aspChr(0)20121212.jpg
    很明显,upfile/1.asp就成了she11



    把上面的代码修改一下:

    <%
    path="upfiles/1.asp" & Chr(0) 'asp中chr(0)表示截断字符
    file="20121212.jpg"
    upfilename=path & file '最后的上传地址
    response.write upfilename
    %>

    眼见为实,你会发现最后输出的upfilename确实是upfile/1.asp,变量输出是这样,上传时生成文件当然也会这样,这就是大家常听到的路径截断上传!

    上面这个例子非常简单,不妨亲手试一下,明白了它的原理,看到了输出的结果,你就会恍然大悟,原来截断是这么的简单!

    本文只讲了路径截断,当然截断的种类也有好几种,原理其实都一样。。。都是利用了这个chr(0)字符。

    至于实操,其它截断。。以后会和大家慢慢分享!
    连hook api 还有asp的函数都讲出来了。。你们想怎么样?顺便说下。截断上传的那个不是空格
    空格在HEX进制中的编码是20 而截断则是00    

  • 相关阅读:
    javascript判断浏览器类型与版本
    javascript动态创建VML
    getElementsByAttribute
    javascript替换字符
    javascript contains方法
    sql2005性能优化(在32位系统上突破2G内存使用量的方法)
    详解如何让WIN2003和SQL2005支持4G以上内存
    搭建Windows CE 6.0团队开发环境
    MS SQL Server启用对4G以上物理内存的支持
    USB 3G Wireless Modem(2010.10.28更新)
  • 原文地址:https://www.cnblogs.com/Jdrops/p/5374919.html
Copyright © 2020-2023  润新知