pwn学习笔记(8)-初识沙箱
初识Pwn沙箱 沙箱机制,英文sandbox,是计算机领域的虚拟技术,常见于安全方向。一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造成任何危害。
安全计算模式seccomp(Secure Computing Mode)在Linux2.6.10之后引入到kernel的特性,可用其实现一个沙箱环境。使用seccomp模式可以定义系统调用白名单和黑名单。seccomp机制用于限制应用程序可以使用的系统调用,增加系统的安全性。
在ctf中主要通过两种方式实现沙箱机制:
prctl系统调用;
seccomp库函数;
1、prctl函数初探 prctl是基本的进程管理函数,最原始的沙箱规则就是通过prctl函数来实现的,它可以决定有哪些系统调用函数可以被调用,哪些系统调用函数不能被调用。
下面是/linux/prctl.h和seccomp相关的源码:
1234567891011121314151617181920/* Get/set process seccomp mode */ ...
python原型链污染
python原型链污染 后面会有跟着Article_kelp慢慢操作的,前面先面向题目学习。
背景: 国赛遇到了这个考点,然后之后的DASCTF夏季挑战赛也碰到了,抓紧粗略学一手,学了JavaScript之后再深究原型链污染。
简介: python 中的原型链污染是指通过修改对象原型链中的属性,对程序的行为产生以外影响或利用漏洞进行攻击的一种技术。
在 Python中,对象的属性和方法可以通过原型链继承来获取。每个对象都有一个原型,原型上定义了对象可以访问的属性和方法。当对象访问属性或方法时,会先在自身查找,如果找不到就会去原型链上的上级对象中查找,原型链污染攻击的思路是通过修改对象原型链中的属性,使得程序在访问属性或方法时得到不符合预期的结果。常见的原型链污染攻击包括修改内置对象的原型、修改全局对象的原型等
这个知识点应用的范围比较小,仅当题目中出现utils的merge或Pydash(5.1.2)模块中的set和set_with函数才会用上。
merge(没遇到过具体题型,先简单说下): 首先是下面这个程序,可以再merge打个断点,debug试试看:
...
arcaea闲谈
1、关于我对这些谱面的评价: 我只会挑一些我印象比较深的谱面来说。
<1>9+:(1)sulfer(硫磺):
9+首pm的歌,神谱无需多言,大量的地面交互以及天地交互虽然给不少花紫人带来了巨大的挑战,但是,身为一首9+,它给我们带来的不只是交互力的提升,还有任我们疯狂压榨的ptt,在我花紫以及红框时期,这谱给我的ptt带来了至少0.2的提升妥妥的榨汁机。
<2>10:(1)sheriruth(黑魔王):
谱确实不错,但是,耐不住我在花紫甚至没到花紫的时候高强度越级导致了手癖,最后一直收不了。
总的来说下吧,前面的交互很不错,要求一定的协调性,以及要求一定的底力。在我严重手癖的情况下感觉尾杀稍微有点脑裂以外,其他的整体很不错,神谱。
(2)<3>10+:(1)Cyaegha(绿魔王):
神谱。前面双押海虽然很让人脑裂,但是,只要习惯外加背谱来打的话,就会发现,并没有那么难了,并且这谱后面爽到极致,尾杀部分难度甚至感觉不如某些10.0,纯纯的爽谱,在爽谱中排名前列。
how2heap_zh
由于Pwn的堆方向感觉异常抽象,所以,我想着通过how2heap这个项目来入门heap。但是,由于有的程序不知为何调试总是出问题,不过,我会慢慢来解决的,所以这个文章也是处于慢慢更新的状态。
glibc版本:最新
源码:
123456789101112131415161718192021222324252627282930313233343536#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ fprintf(stderr, "尽管这个例子没有演示攻击效果,但是它演示了 glibc 的分配机制\n"); fprintf(stderr, "glibc 使用首次适应算法选择空闲的堆块\n"); fprintf(stderr, "如果有一个空闲堆块且足够大,那么 malloc 将选择它\n"); fprintf(stderr, "如果存在 use-af ...
Pwn刷题记录(不停更新)
1、CTFshow-pwn04(基础canary) 好久没碰过pwn了,今天临时做一道吧,毕竟刚联合了WSL和VSCode,想着试着做一道题看看,结果随手一点,就是一个很少接触的,拿来刷刷:
先查看下保护:
1234567root@MSI:/home/g01den/Temp# checksec pwn[*] '/home/g01den/Temp/pwn' Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)
除了NX之外,似乎就只有 Canary了。反编译看看:
有用的只有vuln函数:
1234567891011121314unsigned int vuln(){ int i; // [esp+4h] [ebp-74h] char buf[100]; // [esp+8h] [ebp-70h] BYREF u ...
pwn学习笔记(0)-事后补充
Pwn环境部署:1、背景: 首先是在最开始的时候装环境此次碰壁,搞得没心思写这篇博客,其次,又因为虚拟机本身的问题,导致我对虚拟机有很强的不满,所以我最开始没有写这篇博客,但是,转念一想,为什么我必须得执着于 虚拟机呢?不是同样都是Linux吗,为啥我不直接采用 WSL 来部署 Pwn 环境呢?所以,这里我选择了重装了下 Pwn 环境,不过,因为我装好很大一部分之后才想起来记录博客,所以我只会把前面的内容简单记录一下,不进行二次实操了。
WSL的安装我就不详细进行说明了,这个挺无脑的。
2、基础工具:<1>Vim: 我想,大部分的 Ubuntu 似乎都已经装好了,不过似乎听说有的没有,不过贴一个源码过来:
1sudo apt install vim
<2>git: 老样子,一把梭
1sudo apt install git
<3>GCC:1sudo apt install gcc
<4>python3-pip:1sudo apt install python3-pip
<5>qemu: QEMU是 ...
反弹shell
反弹shell:简介; 反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机。
正向连接: 假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。
反向连接: 反弹shell通常适用于如下几种情况:
目标机因防火墙受限,目标机器只能发送请求,不能接收请求。
目标机端口被占用。
目标机位于局域网,或IP会动态变化,攻击机无法直接连接。
对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的。
对于以上几种情况,我们是无法利用正向连接的,要用反向连接。
反向连接就是攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,即为反向连接。
利用netcat反弹shell: 目前,默认的各个linux发行版本已经自带了netcat工具包,但是可能由于处于安全考虑原生版本的netcat带有可 ...
部分CVE复现Web(1)
Apache HTTP Server 路径穿越漏洞CVE-2021-41773 首先,先来看一下这个漏洞的官方描述:
CVE-2021-41773 是在 Apache HTTP Server 2.4.49 中对路径规范化所做的更改中发现了一个缺陷。攻击者可以使用路径遍历攻击将 URL 映射到预期文档根目录之外的文件,如果文档根目录之外的文件不受“要求全部拒绝”的保护,则这些请求可能会成功,如果还为这些别名路径启用了 CGI 脚本,则可以允许远程代码执行。
漏洞条件: 配置目录遍历,并且开启cgi mode 2.Apache HTTPd版本为2.4.49/2.4.50 3.存在cgi-bin和icons文件夹
穿越的目录允许被访问,比如配置了Require all granted。(默认情况下是不允许的:Require all denied)
注意:这里的/icons/必须是一个存在且可访问的目录
漏洞复现: 首先,需要在虚拟机里下载一个docker,可以通过
1apt install docker.io docker-compose
来安 ...
数据结构-3、栈、队列和数组
3.1、栈3.1.1、栈的基本概念:1、栈的定义: 栈是只允许在一端进行插入或删除操作的线性表。首先,栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作,如下图:
栈顶(Top)。线性表允许进行插入删除的那一端。
栈底(Bottom)。固定的,不允许进行插入和删除的另一端。
空栈。不包含任何元素的空表。
假设某个栈 $S=(a_1,a_2,a_3,a_4,a_5)$,如上图所示,则 $a_1$为栈底元素,$a_5$为栈顶元素。由于栈只能在栈顶进行插入和删除操作,进栈次序依次为 $a_1,a_2,a_3,a_4,a_5$,而出栈次序则与入栈次序相反。由此可见,栈的操作特性可以明显地概括为后进先出(LIFO)。
栈的数学性质:n 个不同元素进栈,出栈元素不同排列的个数为 $\frac{1}{n+1}C^n_2n$ 。上述公式称为卡特兰数,可采用数学归纳法证明。
2、栈的基本操作: 栈的基本操作:
123456InitStack(&S) //初始化一个空栈。StackEmpty(S) //判断一个栈是否为空,若栈 S 为空则返回 t ...
hexo部署服务器
背景:笨办法: 我在经过无数次的尝试之后,发现无论我怎么操作,都存在一个问题,就是git无法成功推送到服务器,这个就很难办了,所以,个人感觉只有使用一个本办法才能操作了,如下:
首先,老办法,将我们的hexo推送到GitHub上,之后等一会儿,能看了之后再说,
然后,我们在目标服务器上运行以下代码(前提,创建一个/Temp目录):
1234567cd /Temp/blogrm -rf *rm -rf /var/www/html/*git clone https://github.com/g01den1/g01den1.github.io.gitmv ./g01den1.github.io/* /var/www/html/cd /Temp/blogrm -rf *
最后,似乎只能通过这样的本办法来进行推送了,别的办法就没了,不过可能只是因为我太菜了,所以才导致了这个的问题,之后再解决吧。