跟着小迪第一天
跟着小迪学习第一天
名词解释
POC:全称’ProofofConcept’,中文’概念验证’,常指一段漏洞证明的代码。EXP:全称’Exploit’,中文利用,指利用系统漏洞进行攻击的动作。Payload:中文有效载荷,指成功exploit之后,真正在目标系统执行的代码或指令。Shellcode:简单翻译’shell代码’,是Payload的一种,由于其建立正向/反向shell而得名。
网站搭建前置知识
域名 子域名 DNS http/https 证书
web应用框架架构
理解不同web应用组成校色功能框架
开发语言,程序源码,中间件容器,数据库类型,服务器操作系统,第三方软件等开发语言:asp,php,aspx,jsp,java,python,ruby,go,html,javascript等程序源码:根据开发语言分类;应用类型分类;开源CMS分类;开发框架分类等中间件容器:IIS,Apache,Nginx,Tomcat,Weblogic,Jboos,glasshfish等|支撑网站运行,各有不同的功能数据库类型: Access,Mysql,Mssql,Orac ...
vulnhub DC-1
┌──(root㉿kali)-[/home/kali]└─# arp-scan -lInterface: eth0, type: EN10MB, MAC: 00:0c:29:e7:49:b2, IPv4: 192.168.205.128WARNING: Cannot open MAC/Vendor file ieee-oui.txt: Permission deniedWARNING: Cannot open MAC/Vendor file mac-vendor.txt: Permission deniedStarting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)192.168.205.1 00:50:56:c0:00:01 (Unknown)192.168.205.2 00:50:56:f7:4f:9c (Unknown)192.168.205.129 00:0c:29:04:0c:de (Unknown)192.168.205.254 00: ...
js原型链污染初探
Learn from:https://wiki.wgpsec.org/knowledge/ctf/js-prototype-chain-pollution.html
先放一张图
js 是由对象组成的,对象与对象之间存在着继承关系每个对象都有一个指向它的原型的内部链接,而这个原型对象又有他自己的原型,直到 null 为止整体看来就是多个对象层层继承,实例对象的原型链接形成了一条链,也就是 js 的原型链在 js 中每个函数都有一个 prototype 属性,而每个对象中也有一个 **proto** 属性用来指向实例对象的原型而每个原型也都有一个 constructor 属性执行相关联的构造函数,我们就是通过构造函数生成实例化的对象
由于对象之间存在继承关系,所以当我们要使用或者输出一个变量就会通过原型链向上搜索,当上层没有就会再向上上层搜索,直到指向 null,若此时还未找到就会返回 undefined
这幅图的原型链是
cat->Cat.protype->Object.prototype->null
原型链污染通常出现在对象,数组的键名或者属性名可控,同时是赋 ...
Python原型链污染
leran from :https://pazuris.cn/2023/07/27/Python%E5%8E%9F%E5%9E%8B%E9%93%BE%E6%B1%A1%E6%9F%93/
Python原型链污染这个知识点应用的范围比较小,仅当题目中出现utils的merge或Pydash模块中的set和set_with函数才会用上
首先经典回顾一下python的类与继承:
在Python中,定义类是通过class关键字,class后面紧接着是类名,紧接着是(object),表示该类是从哪个类继承下来的,所有类的本源都是object类
可以自由地给一个实例变量绑定属性,像js
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把类内置的属性绑上
注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例 ...
Pickle反序列化
Learnd From: https://goodapple.top/archives/1069
什么是Pickle?pickle是Python中一个能够序列化和反序列化对象的模块。和其他语言类似,Python也提供了序列化和反序列化这一功能,其中一个实现模块就是pickle。在Python中,*“Pickling”* 是将 Python 对象及其所拥有的层次结构转化为一个**二进制字节流**的过程,也就是我们常说的序列化,而 *“unpickling”* 是相反的操作,会将字节流转化回一个对象层次结构。当然在Python 中并不止pickle一个模块能够进行这一操作,更原始的序列化模块如`marshal`,同样能够完成序列化的任务,不过两者的侧重点并不相同,`marshal`存在主要是为了支持 Python 的`.pyc`文件。现在开发时一般首选pickle。pickle实际上可以看作一种**独立的语言**,通过对`opcode`的编写可以进行Python代码执行、覆盖变量等操作。直接编写的`opcode`灵活性比使用pickle序列化生成的代码更高,并且有的代码不能通过pickle ...
php反序列化 + GC回收机制
f 复现的时候gc回收机制发现不会 写出来当笔记了
学习from:https://xz.aliyun.com/t/11843?time__1311=Cq0xuD0DnD203GNem%3DQaqiI3Y5p2GbD
直接拿isctf的题目来进行练习
天命人<?phperror_reporting(0);\# 帮天命人搜集法宝,重获齐天之姿!class Wuzhishan{ public $wu="俺老孙定要踏破这五指山!<br>"; public $zhi; public $shan; function __get($j) { echo "此地阴阳二气略显虚浮,加上刚刚带入的阳气,或可借此遁逃!<br>"; $yin="s214587387a"; $yang=$_GET['J']; if (md5($yin)==$yang&&md5($yin)==md5($yang)){ echo &qu ...
php 伪协议
首先来看一下有哪些文件包含函数:
Copyinclude、require、include_once、require_once、highlight_fileshow_source 、readfile 、file_get_contents 、fopen 、file
有哪些伪协议:
Copyfile:// — 访问本地文件系统http:// — 访问 HTTP(s) 网址ftp:// — 访问 FTP(s) URLsphp:// — 访问各个输入/输出流(I/O streams)zlib:// — 压缩流data:// — 数据(RFC 2397)glob:// — 查找匹配的文件路径模式phar:// — PHP 归档ssh2:// — Secure Shell 2rar:// — RARogg:// — 音频流expect:// — 处理交互式的流
2.1 php://filterphp://filter用于读取源码,php://input用于执行php代码
Copy?page=php://filter/read=con ...
提权
UGO首先简单了解下UGO
U(User):文件主人(比如你创建的文件,你就是U)
G(Group):文件所属的“小团队”(比如财务部的文件,G就是财务组)
O(Others):既不是主人也不在团队里的其他人
举个栗子🌰:你写了个工资表文件,U是你自己(能改),G是财务部(只能看),O是其他部门(完全没权限)
1、概述
文件权限设置:设置赋予某个用户或组能够以何种方式访问某个文件
权限对象:属主u、属组g、其他人o、所有人a(u+g+o)
权限类型:读(r=4)、写(w=2)、执行(x=1)
所谓的ugo提权其实是修改其权限
例如用chmod命令(比如chmod o+w 工资表.txt就是让其他人也能修改这个文件)
那么当管理员有时候配置不当 将/etc/passwd 文件 权限改成o+r,那么我们作为普通用户的话就能够看到密码的哈希值,给普通用户的脚本加上u+s(SUID),运行时就变root权限
这种通过改UGO权限扩大访问范围的操作,才是“利用UGO机制提权”的本质
Linux suid提权什么是suidsuid(s ...
session伪造
flask的session伪造1.sessiond作用由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能。用户第一次请求后,将产生的状态信息保存在session中,这时可以把session当做一个容器,它保存了正在使用的所有用户的状态信息;这段状态信息分配了一个唯一的标识符用来标识用户的身份,将其保存在响应对象的cookie中;当第二次请求时,解析cookie中的标识符,拿到标识符后去session找到对应的用户的信息
2.flask session的储存方式第一种方式:直接存在客户端的cookies中第二种方式:存储在服务端,如:redis,memcached,mysql,file,mongodb等等,存在flask-session第三方库flask的session可以保存在客户端的cookie中,那么就会产生一定的安全问题。
3.flask的session格式flask的session格式一般是由base64加密的Session数据(经 ...
Java反射机制是什么?
好久没更新自己的blog 这一个月确实太多事情了 放下了自己ctf的学习进度 话说还是边做笔记变学习有效率
Java程序运行原理Java程序运行原理其实本质上就是Java虚拟机与跨平台原理
Java程序的运行过程就像“翻译官带着菜谱去不同国家的厨房做饭”,核心是跨平台执行和自动管理内存。
1.写代码→翻译成通用菜谱 (编译)·你写的代码:用Java语法写好的java文件,比如一个“西红柿炒蛋”的菜谱(代码)·编译成字节码:用javac命令把代码翻译成.class文件(字节码)。这相当于把中文菜谱转成“国际通用菜谱”(字节码),任何国家的厨房(操作系统)都能看懂。
关键点:·字节码不是机器码,而是一种中间格式,类似“通用菜谱”,需要二次翻译。·跨平台的关键:每个国家(操作系统)配一个翻译官(JVM)就能用同一份菜谱
2.厨房开工→JVM加载并执行·启动JVM:运行java命令时,相当于请来翻译官(JVM)进厨房。·类加载器搬食材:JVM的“搬运工”(类加载器)把菜谱(字节码)和食材(类信息)搬到厨房的不同区域:。方法区:存放菜谱步骤(类结构、静态变量)。。堆内存:放炒菜用的锅碗瓢盆(对 ...