• 截断上传原理(转载加自己实验)


    截断上传大家一定不陌生,可能你也看过很多动画教程,人家都能顺利的上传成功,而但自己操作时却总是失败,为什么会这样?

    其实我一开始接触“截断”这个概念时感到很神奇,也觉得很茫然。神奇的是它竟能突破上传限制,茫然的是什么情况下才可以用?哪些上传能截断,哪些又不能。。。带着这些问题,我试着去找上传,试着用NC去截断,可从来就没有成功过。。。慢慢的就对这个概念模糊了!

    后来,我在拿一个站时,遇到了困难,可用的地方就只有上传,于是被逼着再去研究截断。。。经过那次的成功才发现,截断原来是那么的简单。。。摸清原理之后,它就不那么神奇了。

    也许你曾经用阿D,明小子。。的上传上传过SHE11,其实这些工具也是用“截断”来上传的,而如果每次都盲目的用它来上传,甚至连为什么都不知道,那说实话,就算你用它来拿再多的站也没任何进步!。。。懂得为什么才是最重要的,灵活变通,活学活用才能不断的成长!

    下面和大家分享一下我给截断的一些学习经验:还是那句话,高手请飞过!

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

    先说一下这个字符,这个字符不为空(Null),也不是空字符(""),更不是空格!

    当程序在输出含有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)字符。

    至于实操,其它截断。。以后会和大家慢慢分享!

    (以上原理部分为转载,地址华夏联盟www.hx95.com,网址http://bbs.hx95.com/read-htm-tid-19597-fpage-5-skinco-wind.html)

    以下部分为我自己实验的内容

    首先准备一张带有一句话木马的jpg图片

    把jpg图片的二进制和一句话的ascii合并到一起,生成ben2.jpg
    copy baidu.jpg/b + 1.asp/a ben2.jpg

    使用java抓包工具burpsuite

    1.首先在firefox中设置好代理

    ip为127.0.0.1,端口为8080

    2.打开burpsuite,进入proxy

    3.尝试使用burpsuite截断上传,把带有一句话木马的ben2.jpg直接上传

    4.点击burpsuite中的proxy的intercept is off,使它变成on

    5.发现有个filepath,值为uploadfiles/,

    6.把上传路径修改为uploadfiles/ben2.asp .jpg,注意.jpg前有一个空格

    或者把它修改为uploadfiles/ben2.asp      注意.asp后有一个空格(经试验可以成功将带有一句话木马的ben2.jpg上传)

    只要在上传路径后面加一个截断符就可以实现截断了

    正常上传的结果是“域名/uploadfiles/图片文件名.jpg”

    最后的结果是通过截断上传把文件上传并将其改为“域名/uploadfiles/ben2.asp”

    7.之后转到hex,把空格对应的二进制的20改为00。   注意,20是空格的二进制码,00是截断符的二进制码。

    8.点击forward上传

    9.右键上传页面,查看源代码,得到上传文件的地址为uploadfiles/ben2.asp

    10.使用菜刀连接,连接字符串为   域名/uploadfiles/ben2.asp

  • 相关阅读:
    吸取前人教训,每个程序员都曾犯过的经典错误,你可千万要避免
    程序员帮助妹妹攻破C语言,整理超详细规划,快来看!
    2020年总结:程序员爱用开发工具 Top 100
    程序员为了拿到N+1辞退金,使计让公司辞退自己,网友评论画风突变!
    回顾2020的爷青结:有哪些记忆里的应用正在消逝!
    菜鸟看过来!新的一年,这几点雷区别再踩了
    年龄从不是学习的界限,84岁高龄奶奶自学编程,受苹果公司CEO邀请参加全球开发者大会!
    TIOBE 2月编程语言排行榜出炉:C语言冠军宝座稳定,前十名有什么变化?
    用TensorRT和Numpy编写的Yolov5推理。在【Nvidia Jetson】设备上运行,无需依赖任何pytorch / torchvision
    Example app/api for exposing yolov5 model via flask
  • 原文地址:https://www.cnblogs.com/cookies9/p/3371094.html
Copyright © 2020-2023  润新知