0x00 前言JavaScript是一门灵活的语言,比php语言灵活,除了SQL注入,代码执行漏洞外,还有其他类型的安全问题,比如下面要说的nodejs原型链污染。
0x01 JavaScript 原型链与继承原型链与继承的介绍可以参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain#%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E6%96%B9%E6%B3%95%E6%9D%A5%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1%E5%92%8C%E7%94%9F%E6%88%90%E5%8E%9F%E5%9E%8B%E9%93%BE
在JavaScript中,没有引入类这个概念,通常是定义一个函数然后用new来创建实例。而JavaScript中的继承关系是靠一种叫做“原型链”的模式来实现的。
首先要了解是什么原型链与继承,含义是什么:
原型链是JavaScript中一种重要的 ...
0x00 Pickle作用:序列化、反序列化笔记参考:https://zhuanlan.zhihu.com/p/89132768
序列化(Serialization)序列化是指将 Python 对象转换为字节流的过程。pickle 模块提供了 dump 和 dumps 两个函数来实现序列化。
**pickle.dump(obj, file)**:将对象 obj 序列化并写入到文件对象 file 中。
**pickle.dumps(obj)**:将对象 obj 序列化为字节流并返回。
示例1:使用pickle.dumps12345678910import pickle# 原始数据data = [789, 'GYL', (118.118, 666), {'name': 'gyl'}]# 序列化为字节流serialized_data = pickle.dumps(data)# 打印序列化后的字节流print(serialized_data)
输出为:
1b'\x80\x04\x95,\x00\x0 ...
第33天:WEB攻防-通用漏洞_文件上传_中间件解析漏洞_编辑器安全知识点1、中间件安全问题
2、中间件文件上传解析
3、Web应用编辑器上传
详细点1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
中间件文件解析-IIS&Apache&Nginx-IIS 6 7 文件名 目录名1、文件名:x.asp;.x.jpg
2、目录名:x.asp/x.jpg
3、IIS7.X与Nginx解析漏洞一致
访问192.168.199.136:81/upload.asp
登录admin panfei806
验证平台是没有任何问题,但是因为是搭建在IIS6.0的平台,所以发生了这种漏洞
上传文件,抓包
上传正常的图片,保存的路径为http://192.168.199.136:81/20222238134313887.gif
发现路径可疑的值filepath=/
修改filepath的值,可以发现
根据IIS的解析漏洞,把f ...
第32天:WEB攻防-通用漏洞_文件上传_二次渲染_.htaccess_变异免杀知识点1 、文件上传 - 二次渲染
2 、文件上传 - 简单免杀变异
3 、文件上传 -.htaccess 妙用
4 、文件上传 -PHP 语言特性
前置知识后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码 ( 解析漏洞除外 )
如: jpg 图片里面有 php 后门代码,不能被触发,所以连接不上后门
如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还 有.user.ini&.htaccess
.htaccess文件只能用于apahce,不能用于iis和nginx等中间件
.user.ini只能用于Server API为FastCGI模式下,而正常情况下apache不是运行在此模块下的。
文件二次渲染1 、判断上传前和上传后的文件大小及内容
2 、判断上传后的文件返回数据包内容
CTFSHOW-文件上传-162 到 170 关卡
例题162 突破.过滤过滤 . () {} ; 等
解题思路:通过.user.ini包含png文件,png文件包含远程可执行文件
第31天:WEB攻防-通用漏洞_文件上传_js验证_mime_user.ini_语言特性知识点1、文件上传-前端验证
2、文件上传-黑白名单
3、文件上传-user.ini妙用
4、文件上传-PHP语言特性
详细点1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
本章课程内容1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析
前置后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)
如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门
ctfshow151查看源代码,看看是否有前台验证。
看到外部引用的JavaScript代码,进行进一步跟踪
发现过滤性代码:
鼠标放在上传图片中,然后右键元素,对进行修改,把png改为php,就可以进行文件上传php文件
上传php代码后,进行flag的读取。查找flag位置:x=system(‘ls ../ ...
第30天:WEB攻防-通用漏洞_SQL注入_CTF_二次_堆叠_DNS带外知识点:
数据库堆叠注入
数据库二次注入
数据库DNSlog带外注入(高权限)
数据库堆叠注入有的数据库支持多条sql语句一起执行
支持堆叠的数据库有:mysql、MSSQL、Postgresql等(ORACLE不能使用堆叠注入)
比如:select * from news where id=1;create table xiaodi like news; //一次执行多条sql语句
注入原理:将后面的sql语句修改为注入语句,从而实现对数据库的注入。
参考:https://www.cnblogs.com/backlion/p/9721687.html
堆叠注入是有条件的,不仅要看数据库类型,还要看能不能接受并成功执行
例题[强网杯 2019]随便注
过程为:
1234567891';show databases;1';show tables;1';show columns from `1919810931114514`;1 ...
第29天:WEB攻防-通用漏洞_SQL注入_增删改查_盲注_延时_布尔_报错SQL注入updatexml函数须记:查看数据库名,表名:
select group_concat(table_name) from information_schema.tables where table_schema=database())
查看列名:
select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’users’
查看数据:
select group_concat(username,password) from users
函数updatexml(XML_document,XPath_string,new_value)包含三个参数
一:XML_document是string格式,为XML文档对象的名称,例如Doc
二:XPath_string是路径,XPath格式的字符串
三:new_value,stri ...
第28天:WEB攻防-通用漏洞_SQL注入_HTTP头XFF_COOKIE_POST请求知识点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等
数据库类型决定攻击的手法 -payload不同
数据类型注入-payload考虑闭合,数据格式
提交方式-数据请求不同,注入的时候需要按照指定方式去测试,URL没有参数并不代表没有注入,有些数据会在数据包才能体现。http数据包任何一个地方只要被接受,都有可能产生漏洞
...
第27天:WEB攻防-通用漏洞_SQL注入_Tamper脚本_Base64_Json_md5等字符型注入点SQL语句:$sql=”select * from sy_guestbook where gtpl=’$g’”;
http://xxxxxx/xx.php?gtql=simple
注入时,需要考虑符号的闭合(单引号)。
搜索型注入点在字符型的基础上加入了通配符
SQL语句:select * from sy_guestbook where gName like ‘%$s%’;
http://xxxxxx/xx.php?search=演示
搜索型的注入点,需要考虑闭合通配符和单引号(’%)
编码型注入点数据以编码值传递
发送编码值,对方常会进行解码后带入数据再进行SQL执行,再注入的时候,我们也要尝试对注入的payload进行编码后提交
http://xxxxxx/xx.php?base=xxxxx==(base64)
宽字节注入转义函数:addslashes()
源码:
如果参数被转义,未处理转义注入时,用来闭合的单引号就被强制加上转义符\,这时pyload就会 ...