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
# ...
反弹shell
# 反弹 shell:
# 简介;
反弹 shell,就是攻击机监听在某个 TCP/UDP 端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机。
# 正向连接:
假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标 ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web 服务、ssh、telnet 等等都是正向连接。
# 反向连接:
反弹 shell 通常适用于如下几种情况:
目标机因防火墙受限,目标机器只能发送请求,不能接收请求。
目标机端口被占用。
目标机位于局域网,或 IP 会动态变化,攻击机无法直接连接。
对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的。
对于以上几种情况,我们是无法利用正向连接的,要用反向连接。
反向连接就是攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,即为反向连接。
# 利用 netcat 反弹 shell:
目前,默认的各个 linux 发行版本已经自带了 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-com ...
数据结构-3、栈、队列和数组
# 3.1、栈
# 3.1.1、栈的基本概念:
# 1、栈的定义:
栈是只允许在一端进行插入或删除操作的线性表。首先,栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作,如下图:
栈顶(Top)。线性表允许进行插入删除的那一端。
栈底(Bottom)。固定的,不允许进行插入和删除的另一端。
空栈。不包含任何元素的空表。
假设某个栈 S=(a1,a2,a3,a4,a5)S=(a_1,a_2,a_3,a_4,a_5)S=(a1,a2,a3,a4,a5),如上图所示,则 a1a_1a1 为栈底元素,a5a_5a5 为栈顶元素。由于栈只能在栈顶进行插入和删除操作,进栈次序依次为 a1,a2,a3,a4,a5a_1,a_2,a_3,a_4,a_5a1,a2,a3,a4,a5,而出栈次序则与入栈次序相反。由此可见,栈的操作特性可以明显地概括为后进先出(LIFO)。
栈的数学性质:n 个不同元素进栈,出栈元素不同排列的个数为 1n+1C2nn\frac{1}{n+1}C^n_2nn+11C2nn 。上述公式称为卡特兰数,可采用数学归纳 ...
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 *
最后,似乎只能通过这样的本办法来进行推送了,别的办法就没了,不过可能只是因为我太菜了,所以才导致了这个的问题,之后再解决吧。
数据结构笔记-2、线性表
# 2.1、线性表的定义和基本操作
如有侵权请联系删除。
# 2.1.1、线性表的定义:
线性表是具有相同数据类型的 n (n>=0) 个数据元素的有限序列,其中 n 为表长,当 n = 0 时线性表是一个空表。若用 L 命名线性表,则其一般表示为:
L=(a1,a2,a3,...,ai,xi+1,...,an)L=(a_1,a_2,a_3,...,a_i,x_{i+1},...,a_n)
L=(a1,a2,a3,...,ai,xi+1,...,an)
式中, a1a_1a1 是唯一的 “第一个元素”,又称表头元素;ana_nan 是唯一的 “最后一个元素”,又称表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱。除最后一个元素外,每个元素有且仅有一个直接后驱。
由此,线性表的特点是:
表中元素的个数有限。
表中元素具有逻辑上的顺序性,表中数据有其先后次序。
表中元素都是数据元素,每个元素都是单个数据。
表中元素的数据类型都相同,这意味着每个元素都占有相同大小的存储空间。
表中元素具有抽象性,即仅讨论元素间的逻辑关系,而不考虑元素究竟表示什么内容。
...
随机二次元图api相关
# 爬虫获取所有图片:
# 背景:
最近做一些 Web 题,发现了些网页的背景会随机出现,每一次刷新都会出现不一样的图,感觉有点意思,试着研究下,当然,肯定不是研究咋弄的这个,而是,api 里的图怎么爬取:
# 首先:
接口文档如下:
之后直接上源码:
1234567891011121314151617181920212223242526272829303132333435363738import requestsimport osdef pe(): for i in range(1,3400): url = "https://img.loliapi.cn/i/pe/img{}.webp".format(str(i)) print(url) resp = requests.get(url) if resp.status_code == 404: break if os.path.exists("./img/pe/img{ ...
【2024】LitCTF
# Misc:
# 1、涐贪恋和伱、甾―⑺dé 毎兮毎秒:
题目描述:laosebi,无脑 LSB 隐写,全取最低位的 LSB 隐写,拿到 flag。有大佬直接 zsteg 秒了,在这里提一下
# 2、你说得对,但__
下载下来是一个图片,通过 foremost 分离图片,得到四张图片,每一张都是一个二维码的一部分,拼出来扫一下就行了,完事儿:
1LitCTF{Genshin_St@rt!!}
# 3、原铁,启动!
好离谱的题,不过题目的提示很明显了,我没发现,我的问题,原铁,再加上题目描述,推测应该是原神和崩铁的通用字体,直接上网站里对照这来,https://genshin.pro-ivan.com/genshinfonttranslator/demo/,最后发现前半部分是原神,后半部分是崩铁的字体:
1LitCTF{good_gamer}
# 4、盯帧珍珠
题目给了一张 jpg 图片,放到 010 里面发现文件头为 gif 格式的,修改后缀后使用工具分离得到一堆图片,在其中可以发现组成 flag 的部分(我的 010 出了问 ...
【2023】LitCTF
# LitCTF2023(复现)
# Web:
# 1、我 Flag 呢?
ctrl+u 读取源码,在最后发现了 flag:
1<!--flag is here flag=NSSCTF{3d5218b9-4e24-4d61-9c15-68f8789e8c48} -->
# 2、PHP 是世界上最好的语言!!
右边那个框下面是 RUN CODE ,结合题目是 PHP,推测为 RCE,先输入 echo 123; 看看会发生啥:发现左边输出内容出现了 123,那么,直接 system (“cat /flag”); 成功拿到 flag:
1flag=NSSCTF{b26d3851-52f5-4a80-9e69-6417baf49d68}
# 3、导弹迷踪
js 游戏题,先看源码,这里看 game.js:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616 ...
JavaWeb基础(一)-IO操作
# Java I/O 工作机制:
注:简要笔记,示例代码可能较少,甚至没有。
# 1、Java 的 I/O 类库的基本架构。
Java 的 I/O 操作类在包 java.io 下,大概有将近80个类,这些类大概可以分为如下四组。
基于字节操作的 I/O 接口:InputStream 和 OutputStream 。
基于字符操作的 I/O 接口:Writer 和 Reader 。
基于磁盘操作的 I/O 接口:File。
基于网络操作的 I/O 接口:Socket。
# 1.1、基于字节的 I/O 操作接口
基于字节的 I/O 操作接口输入和输出分别是:InputStream 和 OutputStream 。InputStream 的类层次如下:
输入流根据数据类型和操作方式又被划分为若干个子类,每个子类分别处理不同操作类型。OutputStream 的类层次结构也类似,如下图:
# 1.2、基于字符的 I/O 操作接口
下图是写字符的 I/O 操作接口涉及的类,Writer 类提供了一个抽象方法 write(char cbuf[],int off,int le ...