资讯动态

国光sqlsec_upload-labs靶场渗透测试通关解析教程总结

发布时间:2026/8/8 6:12:03 来源:尧图企业网站定制
国光sqlsec_upload-labs靶场渗透测试通关解析教程总结文章目录国光sqlsec_upload-labs靶场渗透测试通关解析教程总结30001 前端JS验证绕过解题方法一在禁用掉JS后那么这些后缀限制的文件即都失效了因此你上传任何类型的文件都可以成功上传所以你后面的流程你应该都知道了上传一个木马文件进行远控即可那么这里我就上传一个phpinfo验证一下给大家看。解题方法二通过调用浏览器的JS断点调试程序修改变量值条件为.php绕过限制解题方法三按照正常流程上传png图片通过抓取数据包修改文件后缀为.php然后放行数据包解题方法四使用burpsuite拦截修改返回请求包增加php文件格式30002.htaccess绕过30003.MIME校验30004.文件头绕过MIME校验30005.文件名关键字移除30006.文件名关键字替换30007.%00 截断路径30008.空字符截断路径30009.黑名单绕过30010.条件竞争漏洞300011.特定快逃过二次渲染300012. /.绕过后缀检测300013.代码审计数组绕过30001 前端JS验证绕过通过检查检查网页源代码发现文件上传的限制条件由前端JS触发的由此禁用掉前端JS验证即可通过这一关前端JS验证都是纸老虎。在左侧边栏点击“隐私和安全”再点击“网站设置”。向下滚动至“内容”区域点击“JavaScript”。将顶部开关切换为不允许任何网站运行JavaScript。或解题方法一在禁用掉JS后那么这些后缀限制的文件即都失效了因此你上传任何类型的文件都可以成功上传所以你后面的流程你应该都知道了上传一个木马文件进行远控即可那么这里我就上传一个phpinfo验证一下给大家看。解题方法二通过调用浏览器的JS断点调试程序修改变量值条件为.php绕过限制很小众的方法在检测函数中打断点然后修改变量值绕过验证。首先在定义了允许用户上传的文件类型变量whitelist后面一行 (第 40 行) 加上断点接着选择 php 文件进行上传当浏览器执行到断点处 (第 40 行) 时会自动暂停此时 变量的值为.jpg,.png,.gif,.jpeg到控制台中将whitelist的值重新赋值为.php然后按 F8 (或者点击继续执行按钮) 继续执行即可成功上传 php 文件接下来就可以看到我们的文件上传成功了复制图片地址即可看到我们想看到的内容解题方法三按照正常流程上传png图片通过抓取数据包修改文件后缀为.php然后放行数据包解题方法四使用burpsuite拦截修改返回请求包增加php文件格式然后放行这个数据包回到页面当中通过检查源代码发现php的文件格式已经成功添加了后续就正常上传php文件即可。30002.htaccess绕过这一题只告诉了我们apache的这个htaccess配置文件除此之外没有告诉我们任何有用的信息于是进行了简单的测试上传php文件提示失败上传带有木马的jpg结果不解析最后上传shell.php使用burpsuite抓包修改后缀为php也提示失败。那么我们直接上白盒审计黑名单安全检查:○b l a c k l i s t a r r a y ( . . . ) : 定义了一个包含大量危险扩展名的数组这些通常是可以在服务器上执行的脚本文件类型。○ i f ( ! i n a r r a y ( blacklist array(...): 定义了一个包含大量危险扩展名的数组这些通常是可以在服务器上执行的脚本文件类型。 ○ if (!in_array(blacklistarray(...):定义了一个包含大量危险扩展名的数组这些通常是可以在服务器上执行的脚本文件类型。○if(!ina​rray(ext, $blacklist)): 这是核心的安全检查。它判断用户上传文件的扩展名是否不在黑名单中。■ 如果不在黑名单中调用 move_uploaded_file() 函数将临时文件移动到指定的上传目录。如果移动成功则将 $is_upload 标记为 true。■ 如果在黑名单中输出 JavaScript 代码 这通常会触发前端的一个弹窗提示“非法文件”。但仔细观察可以发现黑名单中并没有.htaccess 文件.htaccess 文件是 Apache 服务器特有的配置文件默认启用用于配置 Apache 服务器具体用法可以参看此文章https://xz.aliyun.com/news/7862我们可以利用到的.htaccess 文件指令是 AddHandler(SetHandler 指令也可利用但稍微长一些具体用法参看刚提到的文章)可以将特定的文件格式与特定的 MIME 类型进行绑定例如将.jpg 文件与 application/x-httpd-php 进行绑定这样 Apache 服务器在解析.jpg 文件时就会将其当作 php 文件进行解析。# 将 .phps .php3p .png .jpg .gif 当做 PHP 文件解析 AddType application/x-httpd-php .phps .php3p .png .jpg .gif刚刚上传的图片链接http://192.168.247.134:30002/upload/1.png可以看到我们上传的.htaccess配置文件已经将我们上传的带有木马的png文件解析成了php致使我们用蚁剑连接上来了。30003.MIME校验传 php 文件会失败将 php 格式改为 jpg 格式后能上传但是不解析查看后端源代码发现只有 MIME 校验[“image/jpeg”, “image/png”, “image/gif”, “image/jpg”]进行白盒代码审计之后我们就能发现可以通过上传php文件抓包修改MIME类型为application/octet-stream改为image/jpeg或者在上面格式之内的任意即可即可成功上传或者上传 shell.jpg 文件bp 抓包将文件格式改回 php也可以上传成功。原因是浏览器默认会根据文件格式来设置 MIME 类型jpg 格式匹配的是符合后端要求的 MIME 类型 (image/jpeg)因此符合上传要求而改格式为 php 是为了让后端将其解析为 php 文件从而执行 php 代码。30004.文件头绕过MIME校验尝试了一些最基本的php文件上传、改为图片形式上传均失败于是通过查看后端源码发现这一关是mime校验文件头校验允许的 mime 类型以及文件头如下MIME类型 image/jpeg image/jpg image/png image/gif 文件头及对应的文件格式 89504E47 -- .png FFD8FFE0 -- .jpg 47494638 -- .gif那么需要通知满足两个条件才能上传成功即满足MIME类型和文件头校验。通过bp 抓包将 mime 类型改为image/jpeg然后在十六进制编辑器中插入89504E47或者请求体最前面写GIF89a(GIF8也行对应47494638) 也可绕过30005.文件名关键字移除上传一个带有木马的php文件2.php可以成功上传但是访问的时候发现截断了后缀.php格式于是怀疑后端代码应该写了截断为空的代码于是我们可以思考一下代码的逻辑是逢php就会截断替换为空而且它这里没有写循环所以只会截断替换一次我们该如何成功绕过这个逻辑呢脑回路转了一会儿之后想到了一个思路构造2.pphphp上传后代码会把中间的php替换为空然后剩下开头的p和后缀的hp自然就拼接成php了。30006.文件名关键字替换沿用上一次的基础继续测试上传2.pphphp成功但是访问发现文件名被修改成了2.p hp(hp前面存在一个空格导致无法被解析说明后端没有直接移除关键字php而是将php替换成了空格查看题目给出的源码可以得知后端使用的字符串替换函数是 str_replace () 函数这个函数相较于上一题的 str_ireplace () 函数它会严格区分大小写因此php和PHP不会视为相同的字符串而 PHP 并不在黑名单中因此可以修改 shell.php 为shell.PHP绕过注意只有在 Windows 系统上大写的 PHP 格式会被视为和小写的 php 格式相同的 MIME (application/x-httpd-php) 进行解析处理而在 Linux 系统上大写的 PHP 格式会被视为普通的纯文本文件 (text/plain) 进行处理因此如果题目环境是 Linux 系统的话这个方法就失效了。但是这一题特意强调了人工修改成了 Windows 的特性 (不区分大小写)因此上传的 PHP 文件能被解析执行。如果不能执行则需手动进入靶机下载 vim然后编辑/etc/apache2/sites-enabled/app.conf文件在 IfModule 块中添加AddType application/x-httpd-php .PHP然后重启 apache 服务 (apache2ctl restart) 即可生效。30007.%00 截断路径因为这个靶场是国光师傅五六年前就创作出来的靶场然后博主近期是偶然之下看到了来做了一下发现目前第七关和第八关无法开启暂时还不知道原因所以7、8关博主现在还没做出wp不过大家可以参考国光师傅写的wp链接我放在文章最下方了30008.空字符截断路径30009.黑名单绕过简单上传了一个php文件提示无法上传并且还提示不允许上传的四种格式asp aspx php jsp但是我们仔细分析一下可以发现题目只提示了这四种格式然后其他格式没有提示那么有没有可能是黑名单过滤掉了这四种格式其他不在黑名单中的格式即可正常上传。能当作 php 脚本解析的格式除了 php 还有phtml, pht, php3, php4, php5正常上传一个php5文件发现上传成功并且成功解析了30010.条件竞争漏洞上传 shell.php 文件会提示只允许上传.jpg|.png|.gif 类型文件说明是白名单过滤模式分析题目给出的后端源代码可以发现后端是先将上传的文件保存到 UPLOAD_PATH然后判断文件后缀是否在白名单中如果在白名单中则将文件保留并重命名否则删除改文件简述代码逻辑定义一个数组里面有一些常见图片的后缀名提取文件名的最后一个.的后面的内容判断后缀是否是合法文件名里面的如果合法Get请求获取save_path拼接写入从上述分析可知通过GET请求来获取save_path参数的值, 也就是说这个值是可控的, 若我们将这个值修改成…/upload/1.php%00, 也就是在文件名后面添加截断符号%00 ,这样做的作用是将截断数据, Windows创建文件时会忽略后面 rand(10, 99).date(“YmdHis”).“.”.$file_ext这行代码, 这样写入的文件名就变成了…/upload/1.php由于在删除文件之前后端会先检查文件后缀是否在白名单中而删除文件之前的检查是需要时间的 (极短)可以利用这个时间差大量且快速的上传 webshell 文件并在删除文件之前快速访问该文件使该文件被执行。webshell 的代码如下?phpphpinfo();fputs(fopen(1.php,w),?php phpinfo(); eval($_REQUEST[1]);?);?由于在删除文件之前后端会先检查文件后缀是否在白名单中而删除文件之前的检查是需要时间的 (极短)可以利用这个时间差大量且快速的上传 webshell 文件并在删除文件之前快速访问该文件使该文件被执行。webshell 的代码如下只要访问了该文件就会显示 phpinfo 信息并在当前目录下生成一个名为 1.php 的文件内容为?php phpinfo(); eval($_REQUEST[1]);?。为了快速上传以及访问 webshell需要使用到 bp 的 Intruder 模块首先上传 webshell 并用 bp 抓包右键将其发送到 Intruder接着进入 Intruder 模块清空 payload设置 payload 类型为Null Payload然后在 payload 配置中选择无限重复最后点击开始攻击攻击过程中会不断上传 webshell此时如果进入靶机 (docker 容器)在/var/www/app/upload/目录下执行while true; do ls; sleep 1; done命令有可能看到 shell.php 文件被上传停止此命令后文件又会消失接着在浏览器中访问http://靶机IP:30010/upload/shell.php并用 bp 抓包右键将其发送到 Intruder 模块清空 payload设置 payload 类型为Null Payload然后在 payload 配置中选择无限重复最后点击开始攻击。攻击一段时间后在攻击面板中选择按长度降序查看最大的返回包渲染出的页面如果使 phpinfo 信息则说明 shell.php 文件被成功请求到了并且 1.php 文件被成功生成300011.特定快逃过二次渲染点击查看提示按钮后地址栏会出现文件本地包含那么可以上传图片马然后文件包含该图片马从而执行图片马中的 php 代码。上传使用 copy 命令制作的图片马 shell.png300012. /.绕过后缀检测选择要上传的文件后还需要填写文件上传后的命名文件后缀格式中填写了 php 就会导致上传失败。由于题目提到了 move_uploaded_file($temp_file, $img_path) 函数该函数的第 2 个参数 $img_path 是文件的保存位置也是我们填写的文件名。而该函数会忽略掉文件名中的/.因此可以在文件名后面加上/.来绕过文件后缀的检测。选择 shell.php 文件然后在文件命名处填写2.php/.接着将其上传并访问上传后的链接成功执行 phpinfo () 函数上传之后使用蚁剑访问测试成功300013.代码审计数组绕过这一关其实要进行代码审计由于时间问题我这里就不一一展示代码审计部分了大家可以去用ai帮助自己审计我这里直接演示通过教程选择 shell.png 文件并填写文件名shell.php上传并用 bp 抓包将表单中的save_name改成save_name[0]接着复制该表单并将save_name[0]改成save_name[1]并将赋值改为png然后发送该请求成功上传 shell.php 文件上传后的链接为http:// 靶机 IP:30013/upload/shell.php.png删除该链接中的.png后缀并访问成功执行 phpinfo () 函数参考文献国光的文件上传靶场知识总结

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价