博客从jekyll迁移至hexo
butterfly
在2020年快要过去的时候,我打开了自己那个风格早就过时的博客准备重构,原先的博客是长这个样子的。
为什么要迁移自己的博客呢?
其一是因为,比较Hexo和jekyll的文档就能明显感觉到Hexo比jekyll更加现代,而且Hexo的中文文档也比较完善;
其二是因为,年底自己想把今年的博客细致地整理一下,同时希望能够在博客中添加一些额外功能,比如说说、相册、工具箱等等。
先简单介绍一下迁移前后的框架:
jekyll: 一个基于ruby的博客框架,不会在本地渲染静态页面,需要将整个页面上传至github.io,由github.io去渲染。
Hexo: 由node.js构建的博客框架,会在本地渲染静态页面,再上传到github.io上。
为什么要搭建个人博客?
现在大多数人都用手机看朋友圈、微博、抖音等等,而且会不自觉的深陷其中,蓦然发现时间就已经过去了几个小时,刷的时候很开心,可是刷完之后却分外空虚,变得很丧。会发现自己像是个透明的躯壳,脑袋空空,但又双叒叕不愿意改变。
我也偶尔会这样,因为这些APP给你一种“被喂食”的感觉,直接将一个个新奇事物呈现在我们面前,不需要 ...
Linux /dev/null详解
/dev/null 和 /dev/zero的区别1./dev/null:表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件
1.1 将无用的输出流写入到黑洞丢弃。
curl -Iwww.baidu.com 2>/dev/null | head -l 错误信息定位到黑洞
1.2 清空文件
cat /dev/null > /home/omc/h.txt
1.3 在书写定时任务总,规范的写法就是将所有定时任务脚本结尾加上>/dev/null 2>&1,让所有的输出流(包括错误的和正确的)都定向到空设备丢弃。
00 01 * * * /bin/sh/server/scripts/mysqlbak.sh >/dev/null 2>&1
2./dev/zero:当我们使用或者读取他的时候,她是会提供无限连续不断的空的数据流
2.1覆盖其他的文件信息
2.2产生指定大小的空文件,如交换文件,模拟虚拟文件系统
Shell重定向&>file、2>&1、1>&2的区别
在shell里:
0表示标准输入
1表示标准输出
2表示标准错误输出
> 默认为标准输出重定向,与 1> 相同
2>&1 意思是把 标准错误输出 重定向到 标准输出.
&>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中
例如:
注意,为了方便理解,设置一个环境使得执行grep da *命令会有正常输出和错误输出,然后分别使用下面的命令生成三个文件:
grep da * > greplog1
grep da * > greplog2 1>&2
grep da * > greplog3 2>&1
查看greplog1会发现里面只有正常输出内容
查看greplog2会发现里面什么都没有
查看greplog3会发现里面既有正常输出内容又有错误输出内容
本地搭建ctf-wiki
# 1. clone
git clone git@github.com:ctf-wiki/ctf-wiki.git
# 2. requirements
pip install -r requirements.txt -i https://pypi.douban.com/simple/
# generate static file in site/
mkdocs build
# deploy at http://127.0.0.1:8000
mkdocs serve
GOT表 PLT表
GOT PLT
linux pwn canary
canary0x1 简介canary是什么?来看看ctf-wiki上的详细解释
Canary 的意思是金丝雀,来源于英国矿井工人用来探查井下气体是否有毒的金丝雀笼子。工人们每次下井都会带上一只金丝雀。如果井下的气体有毒,金丝雀由于对毒性敏感就会停止鸣叫甚至死亡,从而使工人们得到预警。
我们知道,通常栈溢出的利用方式是通过溢出存在于栈上的局部变量,从而让多出来的数据覆盖 ebp、eip 等,从而达到劫持控制流的目的。当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让 shellcode 能够得到执行。栈溢出保护是一种缓冲区溢出攻击缓解手段,当启用栈保护后,函数开始执行的时候会先往栈底插入 cookie 信息,当函数真正返回的时候会验证 cookie 信息是否合法 (栈帧销毁前测试该值是否被改变),如果不合法就停止程序运行 (栈溢出发生)。攻击者在覆盖返回地址的时候往往也会将 cookie 信息给覆盖掉,导致栈保护检查失败而阻止 shellcode 的执行,避免漏洞利用成功。在 Linux 中我们将 cookie 信息称为 Canary。
Canary 不管是实现还是设计 ...
pwntools使用
pwntools 官方文档
CTF攻防世界 pwn新手题 cgpwn2
下载文件后改名为cgpwn2
进行通过file判断附件文件类型
$ file cgpwn2
cgpwn2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=86982eca8585ab1b30762b8479a6071dbf584559, not stripped
checksec一下,检查一下保护机制,栈不可执行保护
$ pwn checksec cgpwn2
[*] '/root/Desktop/ctf-world-pwn/cgpwn2/cgpwn2'
Arch: i386-32-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: No PIE (0x80 ...
CTF攻防世界 pwn新手题 string
下载文件后改名为string
进行通过file判断附件文件类型
$ file string
string: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=4f9fd3e83d275c6555ec7059823616ffc2f1af1b, stripped
checksec一下,检查一下保护机制,打开了RELRO、Canary和NX,那就没办法做栈溢出了
$ pwn checksec string
[*] '/root/Desktop/ctf-world-pwn/string/string'
Arch: amd64-64-little
RELRO: Full RELRO
Stack: Canary found
NX: NX enabled
PIE: ...