源码分析
首先还是先看源码,发现和十二关的源码基本一样,唯一的不同在于获取上传路径那里使用的是POST命令。那么这一关我们的截断方法是0×00。
知识点
get请求通常是通过url地址请求,传递到服务器会自动解码,在url中%00表示ascll码中的0 ,而ascll码中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束,可达到截断的作用。
post请求不会在地址栏显示,不能使用%00截断,要使用0×00截断。0x开头表示16进制,0在十六进制中是00, 0x00就是%00解码成的16进制。这里要通过修改post数据为十六进制来实现截断。
get请求和post请求的区别:
原文链接:https://blog.csdn.net/youtufeitu/article/details/124306915
实验过程
上传木马文件jpg格式,并用burp进行抓包。可以看到save_path这里的位置与第十二关抓包得到的位置不同,也可以更好理解get和post之间存在不同。
在upload/之后输入要保存的文件名称类型+空格(可以在空格后输入a方便下面更改十六进制定位)。修改完之后点击Hex。
在右边一栏找到你所上传的文件名,a的ascll码是61,它前面一个就是空格对应的ascll码值,将它改为00。
修改完后forward上传文件,可成功上传
新建标签页打开图像
删去后面的部分,获得上传文件的url
最后使用蚁剑连接