<feed xmlns="http://www.w3.org/2005/Atom"> <id>/</id><title>Savagel0ve</title><subtitle>A minimal, responsive and feature-rich Jekyll theme for technical writing.</subtitle> <updated>2024-04-11T14:34:02+08:00</updated> <author> <name>Savagel0ve</name> <uri>/</uri> </author><link rel="self" type="application/atom+xml" href="/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="/"/> <generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator> <rights> © 2024 Savagel0ve </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>魔幻差异</title><link href="/posts/UCAS-SOFT_SEC-%E9%AD%94%E5%B9%BB%E5%B7%AE%E5%BC%82/" rel="alternate" type="text/html" title="魔幻差异" /><published>2024-04-11T00:00:00+08:00</published> <updated>2024-04-11T00:00:00+08:00</updated> <id>/posts/UCAS-SOFT_SEC-%E9%AD%94%E5%B9%BB%E5%B7%AE%E5%BC%82/</id> <content src="/posts/UCAS-SOFT_SEC-%E9%AD%94%E5%B9%BB%E5%B7%AE%E5%BC%82/" /> <author> <name>Savagel0ve</name> </author> <category term="UCAS_LESSION" /> <category term="SOFT_SEC" /> <summary> 0x01 said it in front 实验环境 win11 x86_64 (一开始用mac启动pd用win虚拟机自带的x86仿真，在这个环境上进行调试，但是遇到很奇怪的调试问题，什么调试工具都不管用包括x32dbg windbg ida pro,遂放弃) 实验工具 windbg idapro 010editor 0x02 find differences 两个程序a1.exe和a2.exe bindiff一下很像，没有差别很大的地方，similarity都是1 这两个程序在汇编层面上的指令都是一样的，需要深一步找不同（pe结构） 简单写个脚本找一下内存上的不同 with open('A1.exe', 'rb') as f1: data1 = f1.read() with open('A2.exe', 'rb') as f2: data2 = f2... </summary> </entry> <entry><title>leave + ret 栈溢出</title><link href="/posts/UCAS-ADV_VULUN-leave_ret%E6%A0%88%E6%BA%A2%E5%87%BA/" rel="alternate" type="text/html" title="leave + ret 栈溢出" /><published>2024-04-08T00:00:00+08:00</published> <updated>2024-04-11T14:33:23+08:00</updated> <id>/posts/UCAS-ADV_VULUN-leave_ret%E6%A0%88%E6%BA%A2%E5%87%BA/</id> <content src="/posts/UCAS-ADV_VULUN-leave_ret%E6%A0%88%E6%BA%A2%E5%87%BA/" /> <author> <name>Savagel0ve</name> </author> <category term="UCAS_LESSION" /> <category term="ADV_VULUN" /> <summary> 0x01 why record 今天实验课上做了leave+ret栈溢出，课上没有做出来，课下想明白了，特此记录一下 0x02 原理分析 leave指令等将于这两条指令： mov esp, ebp pop ebp 即为 esp = ebp + 4 ebp = [ebp] 这里一直没想明白 因为没想到pop回导致esp+4(32位) 想明白这个就很容易了 esp = ebp + 4 =&amp;gt; esp 指向了ret_addr的位置 如果这里修改esp为shellcode的地址， 溢出就完成了 0x03 exp分析 #!/usr/bin/env python #coding=utf-8 from pwn import * import sys context.arch='i386' context.log_level='debug' context... </summary> </entry> <entry><title>基于RBAC的lsm模块开发</title><link href="/posts/UCAS-OS_SEC-lsm_RBAC/" rel="alternate" type="text/html" title="基于RBAC的lsm模块开发" /><published>2024-04-06T00:00:00+08:00</published> <updated>2024-04-11T14:33:23+08:00</updated> <id>/posts/UCAS-OS_SEC-lsm_RBAC/</id> <content src="/posts/UCAS-OS_SEC-lsm_RBAC/" /> <author> <name>Savagel0ve</name> </author> <category term="UCAS_LESSION" /> <category term="OS_SEC" /> <summary> 0x01 经过一周的各种实验环境的折磨，已经完成从花一天到20分钟速成的蜕变了，特此记录学习过程中踩过的坑和心得 （今天s送我铜锣烧 我很开心） 0x02 说在前面 求你别碰重新编译内核的方案（编译时间又长，动辄40G+的内存） 0x03 实验环境 实验环境： ubuntu20.04 16G 16CPU 50G （另一个课的实验机 中科院就是豪横） 实现方案： qemu + busybox 打包根文件系统（他不香吗） 关于busybox 打包可以看下面的文章 LSM内核模块 Demo 保姆级教程 关于lsm开发的好文章 LSM安全模块开发 Linux Security Module 框架介绍 基于Linux Security Module的基于角色的权限管理模块 LSM安全模块开发-文件打开2FA 0x04 我踩的一些坑 重新编译内核费时费... </summary> </entry> <entry><title>ransoware逆向分析</title><link href="/posts/ransoware-%E9%80%86%E5%90%91%E5%88%86%E6%9E%90-ransoware/" rel="alternate" type="text/html" title="ransoware逆向分析" /><published>2024-03-27T00:00:00+08:00</published> <updated>2024-03-27T00:00:00+08:00</updated> <id>/posts/ransoware-%E9%80%86%E5%90%91%E5%88%86%E6%9E%90-ransoware/</id> <content src="/posts/ransoware-%E9%80%86%E5%90%91%E5%88%86%E6%9E%90-ransoware/" /> <author> <name>Savagel0ve</name> </author> <category term="ctf" /> <category term="re，nese" /> <summary> 0x01 Write in front 该题为nese 3月升级赛逆向题。 欣哥发我让我做一做，那我就做一下，没想到一做做了半个月（欣哥吐槽说半个月都够他挖个洞了orz），不过还是解出了这道题，特此记录一下 0x02 CRC32 against debug 这里_DAT_0079ac6c是经过crc32整个.text段，所以直接下断点，会影响crc32真正的值（软件断点会在断点位置置换为int3（x86下）） 这里有两种办法得到_DAT_0079ac6c的值 直接还原crc32算法 用ida python或者ghidra python 算出来（我用的这个） 直接把断点下在库上（不是.text段上就行）或者直接不断，本题的特殊性子进程会自己raise(0x13),所以直接gdb 跟子进程 直接读（简单 高效） 具体的crc32算法原理可以见我上一篇文章。 这里贴出我算... </summary> </entry> <entry><title>深入理解CRC</title><link href="/posts/CRC-%E9%95%9C%E5%83%8F%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/" rel="alternate" type="text/html" title="深入理解CRC" /><published>2024-03-19T00:00:00+08:00</published> <updated>2024-03-19T00:00:00+08:00</updated> <id>/posts/CRC-%E9%95%9C%E5%83%8F%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/</id> <content src="/posts/CRC-%E9%95%9C%E5%83%8F%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/" /> <author> <name>Savagel0ve</name> </author> <category term="ctf" /> <category term="re" /> <summary> 0x01 引言 第一次逆向碰到CRC的算法，一开始看见不知道是在干嘛 还好有大佬指点 知道这是CRC 此处@这是大佬的博客 而且 我看了网上讲关于CRC的帖子 对镜像算法的实现都是引入逆转比特函数 显然不像我这道逆向题的代码 0x02 算法分析 本文不是面向CRC小白，你需要先了解CRC基本信息，可以看这些帖子： 我学习CRC32、CRC16、CRC原理和算法的总结（与WINRAR结果一致） 【脑冻结】CRC我就拿下了 如果你已经理解了CRC的工作原理，那么你应该知道CRC的计算方法：直接计算法，驱动表法，镜像驱动表(还有两种变体 不重要) 那么你也理解CRC的驱动表法的工作原理： #include&amp;lt;stdio.h&amp;gt; #define LUT_LENGTH 8 #define CRC_LENGTH 8 #define CRC_POLY 0x0... </summary> </entry> </feed>
