[CPPUISA] file-upl0ad

知识点

file_put_content函数对正则的绕过
图片马的执行

审题

这是一道CPPUISA上架设的题目 出题人为0akarma
进入题目 映入眼帘的是一个邮箱的输入框 随便输入一些字符可以看到回显

左下角:Your f* put content is 123 f* put content 猜到大概后台的语句是file_put_content函数 而这个函数有一个有意思的地方 如果我们传入的是一个数组的话 可以绕过后台的正则筛选 也就是能绕过一些waf 这个知识点很像BUU里面的[RoarCTF 2019]Simple Upload题 在这里就不再赘述了

图片马

我们虽然不能控制我们在输入框里面的语句 但是看到了地址栏里的?text=123 在这里我们可以人为的控制 把输入的text变成一个数组 这样跳出了一个上传按钮

提示我们只能上传jpeg格式的图片 我们的目的肯定是要上马连接的 这里涉及到图片马 图片马可以理解为把原来一句话马的php格式改为Jpeg 但是服务器的不会将Jpeg格式的文件自动解析为php 这样他就算传上去了也只是一张图片 这里介绍一个文件叫.htaccess 如果我们能上传一个内容为AddType application/x-httpd-php .jpg的.htaccess文件 那么服务器可以将识别到的jpeg文件按php执行

verify

上传.htaccess之后上传图片马 也上传成功了 没有在这一关卡我们 然后我发现我上传的图片马 名字被改了

前面加了几个字符 而看了下f12 有个verify选项 而且这个选项是当前年月日加几个字符 大概率是之前有遇到过的gmdate函数 这个函数会返回一个和当前时间相关的值 也就是一个变值 猜过去前面加上的字符就是这个verify
但是这里有一个易错点:到底是点击上传按钮前的verify还是上传后的verify?
答案是上传前的 获取到了当前的时间 返回了这个verfiy值 这个值在刷新页面之前就显示在了网页前端里 我们点击上传 页面会刷新 会得到一个新的verify值 但是随着文件的上传 传入的却是旧的verify值 所以应该是旧的verify_ma.jpg

临门一脚

最后一个小问题 上传目录的问题 这题没有给你关于目录的回显信息 一般就是默认目录 尝试一下upload或者uploads这种七七八八的在加上刚刚上传的文件名 终于得到了一个空白回显的页面 也就是我们的马被正确执行了 postman链接 拿到flag

EOF