Dev log -Printing Assistant

Background The time was 2019, a time when I’ve got familiar with all the bits and bytes of how things work in our wholesale store. By the way, we do women’s fashion. I tried my best to improve the overall efficiency, making it easier for the clerks to handle different tasks. One thing caught my…

echo造成的base64结果错误

问题描述 原始字符串为 mcinventoryv4er9ll1!ss,使用如下方式在命令行直接编码 echo 'mcinventoryv4er9ll1!ss' | base64 得到的结果是 bWNpbnZlbnRvcnl2NGVyOWxsMSFzcwo= 而正确的编码结果应该是 bWNpbnZlbnRvcnl2NGVyOWxsMSFzcw== 问题原因 经过尝试,可能是由于字符串末尾不可见的换行字符造成的问题。也是因为不同版本 echo 的实现造成的。 解决方法 直接在命令行编码的时候,使用 echo -n 'mcinventoryv4er9ll1!ss' | base64 即可得到正确的编码结果。 或者使用 printf 'mcinventoryv4er9ll1!ss' | base64 即可得到正确的编码结果。 另外,在这篇文章中,还提到了各种 shell 背后的引用会造成的其他问题。 因此建议使用行为更加稳定的 printf 来进行字符串的编码操作。

0x300-从头开始写操作系统-内核

目录 回顾 今日目标 必要工具的安装及介绍 工具一览 工具介绍 GCC Hosted Environment Freestanding Environment Linker C 语言编译(gcc 的临时文件) 预处理或预编译(Pre-processing) 编译(Compiling) 汇编(Assembly) 链接(Linking) Objdump Nasm Ndisasm Cross-compiler C 与汇编 局部变量 条件判断 循环 函数调用 指针 加载内核 手动编译 指定内核入口 extern 指令 Makefile 基本规则 特殊变量 默认目标与临时文件清理 宏、匹配规则与通配符 新的代码结构 新的 Makefile Debug 内核代码 QEMU 与 GDB 总结 参考链接 回顾 上一篇文章,我们讨论了以下内容: 读取硬盘所需的参数设置,硬盘数据的地址由 CHS 提供,我们需要将柱面,磁头,扇区信息写入相应的寄存器…

2020-06-10-进度更新

“从头开始写操作系统” 的系列文章进行到了内核阶段。写作已经开始,正在组织思路。这一章节,如果只是看代码,那么就会忽略很多的细节。我准备从编译工具开始入手,讲一下为什么在内核这个阶段会涉及和之前不同的工具链;接着,我会讨论 C 代码与汇编的关系,从一个什么都不做的 C 程序,到有局部变量,到有方法调用,到有指针,从这几种情况入手分别通过反汇编,来学习 C 语言与汇编的相互关联。 OS-From-Scratch 的作者在书中说,学习和深入 C 最好的步骤不是从比他更高级的语言如 Java,Python 入手,而是应该从比他更加低级的汇编入手,才能真正了解 C 的特性,才能真正充分发挥 C 的高效。 另外,Hacking – The Art of Exploitation 一书也正在不断阅读当中。选择这本书是偶然,但是却和现在正在进行的操作系统编写非常契合。书的前两章针对 GDB,C 与汇编做了大量的讲解,作为 OS-From-Scratch 的补充非常不错。 周五会出行,所以内核这篇文章,预计将在下周三发布。

2020-06-07-近期进展以及后续计划

看了一下之前的动态。博客结构的调整找时间一定会做。现在在成长期会感觉思路有点乱,因此反映在博客结构上。 另外,半个月来的进展还是很多的。现在主要精力放在了从头写操作系统的那个系列文章上,现在已经进行到内核阶段。这次一定会借助博客之力,把操作系统这块弄懂。 除了操作系统这块,还在不断地写 WebApp 和逆向两个主题地文章。但是感觉 WebApp 方面有点乏力,目前没有很好的练习资源了。HTB 太随机,并没有标出来哪个 box 是 WebApp 的练习,也没有太多的针对性。 今天开始我会找一点 CTF 来继续 WebApp 的主题。 逆向这块,还是继续从 narnia 中不断学习。narnia 结束之后,同样也是找一些逆向的 CTF。 HackTheBox 准备重新开启,写作模式改变一下,要从 log 性质,改成总结性质。将可以学到的东西总结出来,这样的文章才更有意义。 Keep it up!

0x200-从头开始写操作系统-进入32-Bit Protected Mode

目录 回顾 今日目标 BIOS 读取硬盘数据 硬盘 读取硬盘数据的参数 硬盘参数小结 调用中断读取硬盘数据 32-Bit Protected Mode 关于 32-Bit Protected Mode 什么是 32-bit Protected Mode? 为什么我们需要 32-bit Protected Mode? 32-bit Protected Mode vs 16-bit Real Mode 32 位模式下的字符打印 告别 BIOS 32 位模式下的显示设备调用 Memory-Mapped Device(Memory-Mapped I/O) VGA 模式(Video Graphics Array) VGA 模式内存 32-bit Protected Mode 输出字符 全局描述符 什么是 GDT 及 GDT…

代码向导

Hi, everyone. Happy learning and hacking. Code List OS-From-Scratch: 1. Simple Boot Sector 2. Boot Sector Print 3. Boot Sector Function 4. Boot Sector Memory 5. Boot Sector CMP 6. Boot Sector Stack 7. Boot Sector Segmentation 8.Boot Sector Disk Read 9. 32Bit Protected Mode Print 10. 32Bit Protected Mode Switch 11. C to ASM…

0x03-逆向-BoF基础的基础

目录 今日目标 深入 BoF BoF 的前世今生 BoF 的种类 BoF 的应对策略 为什么程序会有栈? 为什么 EBP 和 EIP 会在 BoF 中被覆盖? 栈帧(Stack Frame)以及方法调用 NOP 总结 参考链接 今日目标 今天细看了一下 narnia2(不知道这是什么的小伙伴看我前篇),是个栈溢出的练习。所以,Buffer Overflow,BoF,是今天的主题。这篇文章的标题是基础的基础,我们会把基于栈的溢出深入再深入地探讨一下。网上由很多关于栈溢出地基础例子和文章,想必大家也看过很多了。 带着下面几个问题,我们开始这篇 BoF 基础的基础。无论大家能不能回答这几个问题,看下去,总有一些新的收获。 BoF 的前世今生大家了解多少?BoF 有多少种类型? 都说栈溢出,首先,为什么你的程序会有栈? 漏洞叫做栈溢出,EBP,EIP,或者 BP,IP 是寄存器,一个在内存,一个在 CPU,为什么那些文章总说 EBP 和 EIP 会被覆盖,难道栈溢出还能溢出到 CPU ? 那些文章都提到 nop (\x90),nop 到底是什么?为什么要用 nop? 深入 BoF 我们先了解一下 BoF 的一小段历史,BoF 的种类,以及计算机科学家在与…

0x01-XSS基础实战-XSSGame 6集全

目录 这是什么? 今日目标 Level 1 Level 2 innerHTML innerHTML的安全问题 Event Level 3 location.hash Level 4 Level 5 Level 6 Protocol-relative URLs DataURLs 总结 参考链接 这是什么? XSS 系列开篇。WebApp 渗透测试是一个大话题,之前的 SQL 系列之后还会继续深入。本篇的 XSS 系列也一样,在后续的工作学习中,不断记录。 我不再讲 XSS 的基本原理,网上有太多的教程。 最权威的学习资料,列举在下面: OWASP XSS Attacks Rapid7 Cross Site Scripting Portswigger Cross Site Scripting OWASP,Rapid7,Protswigger(Burp Suite)三大家。 另外,W3School 是必备的学习资料。 如果对于 XSS 的基本概念不太熟悉,建议先阅读这三篇文章,再继续下面的内容。 今日目标…

0x120-从头开始写操作系统-启动扇区与内存的关系及内存寻址的应用

目录 回顾 今日目标 Boot Sector 与内存的关系 打印任意内存位置上的内容(以 16 进制输出) 物理寻址的应用 找到 Boot Sector 在内存中的前两个字节的位置 寄存器 寄存器的种类 通用寄存器 段寄存器 指针寄存器 索引寄存器 控制寄存器 段和段寄存器小结 完成任务 程序拆解及必要汇编指令 org 指令 jmp 指令 times 指令 pusha popa 指令 条件控制指令 其他必要的汇编指令 总结 参考链接 回顾 上一篇,我们讲到了以下内容: 16-bit Real Mode 是 x86 系列 CPU 的一种工作模式,所有 x86 系列 CPU 启动时,都处于 16-bit Real Mode 16…