SEC-2022版-0024-WEB攻防-15-通用漏洞之文件上传&二次渲染&.htaccess&变异免杀
总览知识点:1、中间件安全问题2、中间件文件上传解析3、Web应用编辑器上传
详细点:1、检测层面:前端,后端等2、检测内容:文件头,完整性,二次渲染等3、检测后缀:黑名单,白名单,MIME检测等4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
本章课程内容:1、文件上传-CTF赛题知识点2、文件上传-中间件解析&编辑器安全3、文件上传-实例CMS文件上传安全分析
前置:后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还有.user.ini&.htaccess
中间件选用–朝java过渡,IIS即将被弃用
实践中间件文件解析-IIS&Apache&Nginx
IIS 6 7 文件名 目录名
文件名/目录名解析漏洞
文件名:x.asp;.x.jpg x.asp;.x.jpg一整个都是文件名,但文件会被作为asp文件进行执行。
目录名:x.asp/x.jpg x.asp是目录名, ...
SEC-2022版-0023-WEB攻防-14-通用漏洞之文件上传&二次渲染&.htaccess&变异免杀
总览知识点1、文件上传-二次渲染2、文件上传-简单免杀变异3、文件上传-.htaccess妙用4、文件上传-PHP语言特性
详细点1、检测层面:前端,后端等2、检测内容:文件头,完整性,二次渲染等3、检测后缀:黑名单,白名单,MIME检测等4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
本章课程内容1、文件上传-CTF赛题知识点2、文件上传-中间件解析&编辑器安全3、文件上传-实例CMS文件上传安全分析
实践-CTFSHOW-文件上传-162到170关卡前置:后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门
如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还有.user.ini&.htaccess包含:将某个文件的内容包含到另外一个文件当中去,例如:将png文件的所有内容包含到php文件头部或尾部。解析:将某个文件解析为指定文件类型,例如:png解析为php。
文件二次渲染:1、判断上传前和上传后的文件大小及内容2、判断上传后的文件返回数据包内容
实战题目 ...
SEC-2022版-0022-WEB攻防-13-通用漏洞之文件上传&js验证&mime&user.ini&语言特性
知识点:1、文件上传-前端验证2、文件上传-黑白名单3、文件上传-user.ini妙用(受环境限制)4、文件上传-PHP语言特性
部分不是通用的,但是思路相同,关键点在于环境差异,解决形式略微不同。
详细点:1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME(文件类型)检测等
4、绕过技巧:多后缀解析(如.php.jpg),截断,中间件特性(可能导致过滤代码失效),条件竞争等
本章课程内容:1、文件上传-CTF赛题知识点2、文件上传-中间件解析&编辑器安全3、文件上传-实例CMS文件上传安全分析
实践:CTFSHOW-文件上传-151到161关卡前置:后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门文件上传主要是上传PHP文件,让后台去使用PHP文件。解析什么后缀的文件就上传什么样的后门代码。
解题文件上传的思路:配合文件上传,把后门上传上去,获取后端权限。
151 152-JS验证+MIMEContent-Type: imag ...
SEC-2022版-0021-WEB攻防-12-通用漏洞之SQL数据库-二次/堆叠/DNS
知识点:1、数据库堆叠注入
根据数据库类型决定是否支持多条语句执行
2、数据库二次注入
应用功能逻辑涉及上导致的先写入后组合的注入
3、数据库Dnslog注入
解决不回显(反向连接),SQL注入,命令执行,SSRF等
4、黑盒模式分析以上
二次注入:插入后调用显示操作符合
堆叠注入:判断注入后直接调多条执行
DNS注入:在注入上没太大利用价值,其他还行
知识点展开二次注入-74CMS&网鼎杯2018Unfinish ★★★找回密码的逻辑:点击找回密码->抓到用户名->使用指定用户名(目标)找回密码(绕过登录验证,直接以某目标为准找密码)->一般网站->直接update更新指定用户数据update如果写入的是一个SQL注入……update user set password=xiaosedi where username='sql注入代码'在存入的数据当中写入恶意执行代码并且存入数据库,造成代码的二次读取生效。二次注入的原理: 插入恶意数据-->引用恶意数据 在第一次进行数据库插入数据的时候,仅仅只是使 ...
SEC-2022版-0020-WEB攻防-11-通用漏洞之SQL数据库-增删改查~盲注(布尔/延迟/报错)
// SQL语句// --增删改查 // --符合规则即执行// --执行成功后获取数据并且输出,否则不输出数据-->能不能观察到操作的数据的问题 方便做代码审计使用的宽字节注入:自动转义单引号
➢ SQL-盲注&布尔&报错&延时➢ 查询-select-xhcms-布尔盲注➢ 插入-insert-xhcms-报错盲注➢ 更新-update-xhcms-报错盲注➢ 删除-delete-kkcms-延时盲注
知识点:1、明确查询方式注入Payload2、明确查询方式注入产生功能3、明确SQL盲注延时&布尔&报错
详细学习知识点:1、明确查询方式注入Payload
- 知识点解构:明确查询的方式是前端显示还是非前端显示,非前端显示则采用SQL盲注注入Payload。SQL联合注入攻击:根据展示出来的内容,对URL传入参数并且获得回显的URL进行回显注入。 回显注入的前提条件就是:前端在你试图操作数据库的时候有对应的信息通过查询数据库回显过来。SQL盲注攻击: 概念理解: 和回显注入不一样,产生注入时,执行都在数据 ...
CTF-web-018-DVWA-File Inclusion
LOW源码<?php// The page we wish to display// 直接通过get传文件名的方式打开文件$file = $_GET[ 'page' ];?>
解题特殊函数:
include() 当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行include_once() 功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次require() require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行 。使用require()函数包含文件时,只要程序一执行,立即调用文件,而include()只有程序执行到函数时才调用 .require()在php程序执行前执行,会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。require_once() 它的功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次
文件包含漏洞:文件包 ...
CTF-web-017-DVWA-CSRF
LOW源码<?phpif( isset( $_GET[ 'Change' ] ) ) { // Get input $pass_new = $_GET[ 'password_new' ]; $pass_conf = $_GET[ 'password_conf' ]; // Do the passwords match? if( $pass_new == $pass_conf ) { // They do! // 连接数据库的关键字符串,这是 // 1.验证全局的连接字符$GLOBALS["___mysqli_ston"]是否存在 // 2.验证$GLOBALS["___mysqli_ston"]是否为true(三木运算符) // 1.是,则使用mysqli_real_escape_string对新密码进行转义,预防注入攻击 // ...
SEC-2022版-0019-WEB攻防-10-通用漏洞之SQL数据库-提交方式注入/功能与数据的正常运行与提交
知识点:1、数据请求方式-GET&POST&COOKIE等2、常见功能点请求方式-用户登录&IP记录等3、黑盒白盒注入测试要点-SQLMAP注入参数
补充点:黑盒测试:功能点分析白盒测试:功能点分析&关键代码追踪
1.数据库注入 - access mysql mssql oracle mongodb postgresql等2.数据类型注入 - 数字型 字符型 搜索型 加密型(base64 json)等3.提交方式注入 - get post cookie http头等4.查询方式注入 - 查询 增加 删除 更新 堆叠等5.复杂注入利用 - 二次注入 dnslog注入 绕过bypass等
➢GET&POST&COOKIE&SERVER➢实例黑盒-后台表单登陆框-POST注入➢实例白盒-ESPCMS-商品购买-COOKIE注入➢实例白盒-ZZCMS-IP记录功能-HTTP头XFF注入
部分语言接受代码块功能阐释数据提交/接收方式的决定因素:
数据大小
数据类型
三种交互式1.后台记录操作访问IP 代码获取访问者的IP地址 ...
SEC-2022版-0018-WEB攻防-09-通用漏洞之SQL数据库-脚本
Tamper脚本&Base64&Json&md5
注入类型PHP代码传递SQL语句时,可能遇到sql语句闭合sql注入的各个类型数字型 0~9 select * from `table_name` where id=1字符型 =>a-z 中文 标点符号 # 假设一个原始的sql语句是这样子的: select * from `table_name` where id='1' # 那么它可能存在一种被注入的可能:符号的闭合 使用 " 或者 ' 来闭合字符串,可以避免注入的代码被当中字符串来处理。 select * from `table_name` where id='1 ' or 1=1 order by 3 --+' 后面的单引号就会被注释掉,并且执行order by 3 1 ' or 1=1 order by 3 --+ # 注意:如果遇上类似于框 ...
SEC-2022版-0017-WEB攻防-08-通用漏洞之SQL数据库-Oracle/Mongodb/SQLMAP
知识点:1、数据库注入-Oracle&Mongodb2、数据库注入-DB2&SQLite&Sybase3、SQL注入神器-SQLMAP安装使用拓展
手工注入Oracle参考:https://www.cnblogs.com/peterpan0707007/p/8242119.html墨者靶场:SQL手工注入漏洞测试(Oracle数据库) 注入点位置:数据库登陆页面下的那个展示公告的地方,点进去会出现类似于公告的展示页面 测回显: " dual " 并不是一个特定的数据库或数据表,它实际上是 Oracle 数据库系统中的一种虚拟表。 在 Oracle 数据库中,dual 表是一个特殊的只读表,通常用于执行一些简单的测试或计算。人称凑数表。 and 1=2 union select '1','2' from dual 爆库: select table_name from user_tables:从user_tables表取出table_ ...