CSBasics - NJU_Program_Analysis_Note
记录一下上课+做实验时产生的问题、思考与收获
[1] Lecture1 Introduction
[1-1] what is Static Analysis?
Static Analysis is different with dynamic analysis, analyzers need to
construct static bird's view of the whole workflows. Besides, static
analyzers usually focus on the consequence of the analysis rather than
the process.
[1-2] What is a good Static
Analysis?
Before introducing what is a good static analysis, we need to find
out what is 'sound' and what is 'complete'.
sound: We describe a result...
blockchain - Damn Vulnerable Defi 靶场复现
继续刷题
[0] 环境设置
我是用 forge 搭建的靶场,貌似还可以用 npm
之类的搭建,这样做题就直接用 web3.js 交互就可以了。
根据官方说明搭建靶场环境。forge
可能由于网络原因会失败,多安装几次就好了
forge build之后,本地有这样几个文件夹比较重要:
src: 漏洞源码。要做的题目都在这里面
test:
题解。如果想要解题,必须运行forge test --mp test/<题目名称>/<题目名称>.t.sol -vv,-vv是为了打印
emit
log,方便我们调试。而我们的攻击poc就要写在上面这个.t.sol文件的test_()这个函数中。
[1]...
blockchain - Ethernaut智能合约漏洞靶场复现
接到了链上的项目,正好学习一下
0x00 环境搭建
我用的是这个靶场,需要下载MetaMask,下载完毕之后可以切换到Sepolia测试币,去这里开源挖币,就有测试币可以搭建Instance了(不过需要认证score,也很简单,只需要认证好github就能过)
0x01 题目
00 Hello Ethernaut
这个题目完全是新手教程,让我们与contract的info这个method进行交互,我们打开控制台按照他的意思一直contract.xxx("xxx")就行了
01 Fallback
漏洞类型:不算漏洞
take-away msg:fallback/receive 函数触发时机
Basic
这一关的名字是Fallback,fallback是一类函数,这类函数可以在合约接收到以太币时执行一些操作(Exploration里有更精确的定义)。本题中,当接收的币大于0并且币的发送方在发送这条消息之前已经对该合约有了贡献(发送过币),那就把这个合约的所有权移交给币的发送方。
也就是说,我们只需要 12await...
CSBasics - NJUOS_Note
记录一下上课+做实验时产生的问题、思考与收获
[M2] plcs
做完这个实验,收获概括来讲是
理解计算图与依赖关系,并通过它来实现并发
LCS的各种实现方法
加深对互斥与同步的理解,写出第一个并发程序
加深对条件变量实现生产者消费者模型的理解
提高编程素养
利用宏定义增强代码可读性
利用 assert 进行防御性编程
将大任务拆分成多个小任务
[M2-1] 并发编程
任何可能被多线程修改的全局变量,都应该上锁以后再处理
生产者负责生产而不是消费,逻辑要对
在现实生活中找一些实例来帮助理解并发程序
并发函数 1234567pthread_mutex_lock/pthread_mutex_unlock// 我认为这两个函数之间的代码被称作“临界区”// 上锁或解锁时暂停时间,但临界区还是会被interrupt// 用锁保护临界区的全局变量pthread_cond_wait// 睡眠自己并释放持有的锁
[M2-2]...
comp - 2024VNCTF_pwn_wp
没注意到今天还有一个 vnctf😭赛后复盘一下
pwn
shellcode
签到题,禁用了 execve 相关函数,还禁用了所有与 read 和 socket send
相关的函数,也就是 ORW 缺 R
12345678910111213141516171819202122line CODE JT JF K================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x11 0xc000003e if (A != ARCH_X86_64) goto 0019 0002: 0x20 0x00 0x00 0x00000000 A = sys_number 0003: 0x35 0x00 0x01 0x40000000 if (A < 0x40000000) goto 0005 0004: 0x15 0x00 0x0e 0xffffffff if (A != 0xffffffff) goto 0019...
Pwn - IO_File and ld.so exploit summary
IO_File 与 ld.so 利用总结
[1] IO_File
好文
PIG-007
glibc2.37
IO
[2] ld.so
[2-1]
_rtld_global._dl_ns._ns_loaded
[2-1-1] 原理
程序在调用exit()退出时,会调用(待调试),而我们可以通过修改
_rtld_global._dl_ns._ns_loaded.l_next->l_next->l_next
[2-1-2] 找偏移量
恢复调试符号请看Pwn
- Heap Exploit Summary 的 patchelf 部分
恢复调试符号以后,在 pwndbg 中输入 1234567891011# 找 &(_rtld_global._dl_ns._ns_loaded.l_next->l_next->l_next) # 与 &(_rtld_global) 之间的偏移量pwndbg> distance &_rtld_global...
comp - 2024hgame-wp
谁除夕和情人节还在加班写 wp 啊😭2024要脱离 game 级别!
目录
Week 1
Pwn
Week 2
Pwn
Rev
Week3
Pwn
Week4
Pwn
Week1
week1 在做项目,把这事给忘了,做 week2 的时候为了找灵感做了一下 week1
的 ezshellcode
Pwn
ezshellcode
alphanumeric shellcode 123456789101112131415161718192021from pwn import *from ae64 import *from LibcSearcher import *context(os='linux',arch='amd64',log_level='debug')context.terminal = ['tmux', 'splitw', '-h']ip =...
Pwn - Architecture other than LinuxC
总结一下异架构的相关内容,便于后续调用
目录
Different Language
python
Different Architecture
ARM
[1] Different Language
[1-1] python
[1-1-1] python 链接 动态链接库
12345# 在 main.py 中添加:sys.path.append("/absolute/path/to/packagename.cpython-37m-x86_64-linux-gnu.so")# app.cpython-37m-x86_64-linux-gnu.so 中的 37m 指的是 python3.7import packagename
[1-1-2] 用 pwntools 调试
1io = process(['python', 'main.py'])
[2] Different Architecture
[2-1]...
Pwn - Shellcode Summary
Shellcode 也是十分核心的技术🤔
Manual
linux
系统调用号表
manual:
pwntools.shellcraft
[0] 目录
编写 shellcode
shellcode 板子
现有工具
板子
shellcode
restrictions & bypass (限制与绕过)
Length restrictions
(长度约束)
seccomp 禁用
alphanumeric
shellcode (字母+数字构成)
例题
参考资料
[1] 编写 shellcode
[1-1] shellcode 板子
exploit-db
Shellcodes
database for study cases(已停止更新)
这个虽然停更了但是挺好用的,很适合找一些 length restrictions 的
shellcode
[1-2] 现有工具
[1-2-1] Pwntools
[1-2-1-1] shellcraft
Manual
速成...
Pwn - Heap Exploit Summary
总结一下 Heap 的相关内容,便于后续调用
Github:
ptmalloc 源码(只有 malloc 部分)
source code
compilation && all libc debs
[0] 目录
Patchelf的使用方式
详解 '申请与释放
chunk'
chunk Extend and
Overlapping
Use After Free
Double Free
Unlink
Series of Bin
7-1 Tcachebin
7-2 Fastbin
7-3 Unsortedbin
7-4 Largebin Attack
Series of House
8-1 House of Orange
8-2 House of Force
8-3 House of botcake
8-4 House of banana
8-5 House of pig
[1] Patchelf的使用方式
在本地调试堆题时,不同的 libc 版本会有不同的 heap...