应用密码学实验笔记 应用密码学实验笔记密码学数学基础单元测试有限域运算 关于x-time的计算(有限域为GF($2^8$)): 在AES 算法中定义 m(x) 多项式(不可约多项式)为: m(x)=x8+x4+x3+x+1(十六进制的11B) x-time(x)就是计算x<<1(相当于乘2),如果移位前的最高位为1,就让移位后x取模m(x)一定要注意顺序。 123456789101112 2024-11-20 应用密码学 #AES
moe2024新生赛--pwn篇 moe2024新生赛–pwn篇[TOC] 1 二进制漏洞审计入门指北nc直取(不过一点点打印出来确实有点带感,让普普通通的命令行打印更加,唔,酷?…好吧,一点点打印只是因为与服务器有延迟,我还以为特地这么设计的呢,我是呆逼) 2 NotEnoughTime先是一点正则表达式的解释—来自gpt 这个正则表达式 r'[-+/*]?\s*\d+' 用来从给定的字符串中提取数字和前面的运 2024-10-23 pwn #pwn
羊城杯--heap复现 羊城杯–heap复现 首先是学会了IDA怎么重定义类型来让堆块的创建变得好看。(真的可以使得看起来很舒服,感谢bilibili的师傅们) 本题的利用是条件竞争堆,但是从其中学到了好多其他的调试及技巧。 main函数,创建了一个0x100的堆块,将各种数据的操作与传递都塞在了里面,并且不断创建。每次的创建进程及其他操作都是放在了子线程的堆里。 strtok函数: str 2024-10-23 pwn #pwn
secert number--NEWCTF secert number–NEWCTF保护全开,主要利用格式化字符串。 用时间戳做随机数种子,然后取随机数,要求猜这个随机数。 本地打法: 1234567891011121314151617dll=cdll.LoadLibrary('/lib/x86_64-linux-gnu/libc.so.6')seed =time.time()a=int(seed)dll.srand( 2024-10-23 pwn #pwn
moe-shellcode检测 moe-shellcode检测shellcode中检测不能出现syscall的机器码,即‘\x0f\x05’ 可以采取异或的方式来绕过 123456789101112131415161718192021222324252627282930313233from pwn import*context(log_level='debug',arch='amd64', 2024-10-23 pwn #pwn
stack_migration--NewStarCTF(WEEK2) stack_migration–NewStarCTF(WEEK2) 只开了NX,题目里给了栈的地址 总之,就是栈迁移啊栈迁移,还得迁移两次,还得用ret2libc。 最后看了官方WP,发现栈迁移一次就行了,libc是可以被带出来的。(不过也就当复健了一下两次的栈迁移。) exp: 12345678910111213141516171819202122232425262728293031323334 2024-10-23 pwn #pwn
利用I/O进行libc的泄露 利用I/O进行libc的泄露moe最后一题,无free,堆,存在索引的溢出,可以更改i/o的结构。 先从gdb看一下FILE的基本结构 1指令:p/x *(FILE*)&_IO_2_1_stdout_ _flags 的基础值一般为0xfbad0000(问就是规定的) 它被定义为MAGIC 1234#define _IO_MAGIC 0xFBAD0000#defi 2024-10-23 pwn #pwn
New-Star-Week 3-pwn stack migration revenge New-Star-Week 3-pwn stack migration revenge开了NX和full relro 只溢出了8个字节,典型的栈迁移,这次迁移到bss段上。(以前做过的都是栈上的,特此记录。) 只要认真计算,可以不使用pop_rbp就完成条件。 首先要栈迁移到bss段上,所以要想办法对让read往bss段里输入,这时候要直到,read对buf的确定是rbp-0x50,也就是 2024-10-23 pwn #pwn
NewStatCTF--week3-pwn srop NewStatCTF–week3-pwn srop主函数只有一个输出,一个输入,存在栈溢出 存在syscall函数,没有适当的可以改rdx的别提ret2csu,太麻烦了 所以用srop(而且题目就叫srop) 先改了rbp,然后跳转到主函数的这里 1payload = b'A'*(0x30)+p64(bss_addr)+p64(main_addr) 可以往下不可以 2024-10-23 pwn #pwn
GuestBooK--pwn GuestBooK–pwn 先利用read与puts,填充掉canary的最后一位,把canary打印出来,用这种不一样的字符方便接收和检验 1payload = b"A"*(0x20-0x8-1)+b"B"+b'C' 然后需要利用strcpy输入两次,第一次把最后一位不对的canary以及后门函数地址输入进去,第二次把canary最 2024-10-23 pwn #pwn