Daily

不可视境界线最后变动于:2023年8月29日 晚上

属于pwn的时间:

第0周:6/7-6/13

  • 11: 为了ida成功把kali2020.3整莫得了, 不想去研究怎么复原了, 直接重装了个kali2021.2, 以后一定弄快照.
  • 12: 弄明白了cachelab的食用方法, 直接ctrlcv代码理解了下, 但是看起来还是有很多可以改进的地方, 暂时看不进去了.
    • typora装的时候apt-key出问题, 其实还能用几年, 更modern的解决办法在这(还没看).
    • 问题列表还是Markdown靠谱, 思维导图线太多了, 用不上结构的优势, 除了笔记还是用md吧.
  • 13: 今天计划看看那啥buuoj的题目: 没看懂从哪开始, 还在wiki中
    • typora linux版命令行启动好像有点问题
    • 啥玩意儿啊, 根本不知道怎么开始做ctf题目->搞懂了ssh连接到靶机, 结果做到第二题发现是web, 请求学不到家干脆放弃了.
    • 看了点讲座的内网穿透, 有丶意思, 可惜我没有这种需求

第一周:6/14-6/20

  • 啥也没干, 复习周

第二周:6/21-6/27

……………..

第一周:7/10-7/11

  • 10,11: 直接盲选了一手系统安全, 要开始学逆向之类的东西了.
    • 看了看洛神的攻防世界的题解, 看了第一道题我就下载了pwntools ida peda这三个工具, 用了下checksec看看文件的类型, 再试了试nc命令连接到服务器, 运行一下就得到了flag
    • 第二题是关于格式化字符串漏洞的, 看了老半天, 洛神直接写个很明显, 真不知道他写这个的时候是什么水平, 我还啥都不会呢. 哦对, 我看到一半他居然写了个python, 还是用的pwntools的接口, 人傻了, 明天入门python去, 然后再看看pwntools的python写法

第二周:7/12-7/18

  • 12:这周不做CG了, 开始研究CTF.

    • 今天先入门个python先.
  • 13: 今天打算学习pwntools的用法.

    • python看到了package, 看过了import, 各种基本类型的用法, 类还没看.
    • pwnlib.tubes, 这里有很多东西, 可以直接网页打开然后去搜函数, unpack()和pack()的作用是将数字打包成可输入的字符串
    • vscode装python还是挺简单的
    • %< number>$x 是直接存放到第number个位置的参数,同样可以用在%n,%d等等。
      但是需要注意64位程序,前6个参数是存在寄存器中的,从第7个参数开始才会出现在栈中,所以栈中从格式化串开始的第一个,应该是%7 $n.
      • 在%10n是啥以及为啥要加‘AAAA’这些问题上卡了半天. [0].
      • 除了%n,还有%hn,%hhn,%lln,分别为写入目标空间2字节,1字节,8字节。 注意是对应参数(这个参数是指针)的对应的地址开始起几个字节。[0].
  • 14: IDA东西好多, 也看了看pwntools的文档, 特么也太多了.(level2整完了, 明天看看文档告别硬编码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(先会看再说))

    • var_4 = dword ptr -4; 这是解释代码,可解释成var_4 是 esp - 4处的空间;
      var_0 = dword ptr 8; var_0 是 esp +8处的空间;
  • /bin/bash是个好东西, 如果能调用这个可以直接跳转到命令行模式, interactive()打开后就能发命令了

  • 将悬浮窗口复位: reset the desktop (md变成悬浮窗口就变不回去了??????????)

    • 芜湖, savedesktop还挺好用, 设置了一个我现在水平够用的default
  • shift+F12: strings window.(还有f6,shift+f6,alt+f3)

  • 汇编语言伪指令. a db 17 dup(?)的含义.

  • 奇怪的信息:

  • python: next()函数和search()的返回是一个可迭代的类型

  • 在32位程序运行中,函数参数直接压入栈中,(还能这样???????????????????????????????????)

    (64位汇编传参,当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。 当参数为7个以上时,
    前 6 个与前面一样, 但后面的依次**”从右向左”**放入栈中,即和32位汇编一样。)

    调用函数时栈的结构为:调用函数地址->函数的返回地址->参数n->参数n-1->…->参数1

  • 15: 上午还是IDA的使用, 下午再看文档. 下午也没看, .

    • return __readfsqword(0x28u) ^ v4; 这个是金丝雀值canary的检测
    • 重启大法好.(好个屁, 还是没解决)
    • 千万别把文件名称命名为模块名称, 不然会出错.
    • sendlineafter的 “\n”一定要看清楚了再加
    • 函数栈帧的构建过程, 会把ebp推到栈上.
    • 看看Jump菜单里的快捷键!
    • 刚进入函数时, 栈顶是返回地址!
  • 16: 今天不知道能做多少, 早上姑且整完了adworld的writeup, 下午晚上看情况, 开始buuoj,

    • 看了剩下的tutorial, 一些看不懂, 有用到再说吧

    • RWX权限: r代表读权限,w代表写权限,x代表执行权限

      相关的chmod命令

    • retn堆栈平衡或内存对齐 (适用于Ubuntu18及以上的版本).

  • 17: 今天在动车上姑且做到了第七题, 并且下载好了LibcSearcher库, 明天开始拿下第七题

    • 看懂了python2和python3中的字符串的区别(复习了Unicode和UTF-8), python3 加上的就是这两种类型不能混用
    • 整明白了eip寄存器(1, 2)和堆栈平衡的东西, 明天再写篇文档顺便整理整理越来越多的md文件.
  • 18:整了个blog, hexo+Github.

第三周: 7/19-7/25

  • 19: 终于弄完了github上的blog, 以后就这样发东西了

    • python3 -m pydoc -p 0 : 可以查看本地文档
  • 20: 白天看python的语法, 看到了formatted_string, 晚上继续做题BUUOJ看LibcSearcher

    • ROPgadgetDoc or anotherIntroduce
    • hide的文章可以通过网址访问
    • pwn查找字符串的方法.(指查找程序中的字符串|查找 libc 中的字符串之类的)
  • 21: 继续OJ

    • 虚拟机里vim的复制粘贴好像有点特别
    • 今天才做了两道题pwn+babyrop, 我觉得需要反思下到底哪里慢了
      • 主要还是想自己摸索, 结果好多东西看别人的学得更快, 又叒叕复习了一遍%n是修改指针指向的值(源自CGfsb), c语言函数有点不太熟悉(strlen就是, 没反应过来是以’\0’为止的, 以及strncmp返回值和第三个参数即长度为0时两个字符串相等), 今天看文档也用了不少时间(fmtstr_payload, flat, pack等), 总的说来学得还算不少, 不过感觉还是有点慢(`⌒´メ)
  • 22: 继续

    • linux 终端suspend问题: pressing the ctrl+z is to suspended current process [0].

    • python3 用pwntools什么东西都得加一个b, 绝了.
      “/bin/sh”没加也报错, 还有ELF.search返回的是一个可迭代的对象
      sendlineafter没加b也在那里给警告
      简单题多做几遍还能多几次收获, 哇, 哇

    • IDA 逆向常用宏定义

    • pwntools的context默认32位, 还是每次手动设定的好, 推荐使用:context.binary = './challenge-binary'.

      image-20210722202114278
    • 查找字符串->flag.txt->Ctrl+X, Jumptothereference->继续

      1
      2
      3
      4
      5
      6
      7
      //常见函数:
      int getc(FILE *stream) //返回字符的int类型值
      char *fgets(char *str, int n, FILE *stream); //从文件流中读取字符到str中
      FILE *fopen(const char *filename, const char *mode); //
      ssize_t write(int fd, const void *buf, size_t nbyte); //一般是write(1,buf,nbyte),stdout = 1
      unsigned __int64 sys_read(stdinput:0, buf, size)
      //习惯上,标准输入的文件描述符是 0,标准输出是 1,标准错误(standard error)是 2。
  • bss段原理: executable文件中只记录未初始化变量的起始和终止地址, 在运行时操作系统将这部分内存清零(通过匿名mmap映射.)

  • 可以直接sendline, 不一定要一直用sendlineafter.

  • 23: 还是继续

    • 复习了一下栈帧对齐
    • 发现自己对linux的系统函数不熟导致做题不清楚(包括/bin/sh和sh是一样的, 都在系统路径里), 准备重补CSAPP里的Linux函数
    • getegid等等
    • 明天补补CTF-WiKi上的东西, 感觉还挺有用的(因为最新一题要用到fastbin attack……….)
  • 24-25: 补补知识

  • 26-28: 划水+看CTF-WiKi上的heap内容

  • 29: 继续WiKi

    • MALLOC_ALIGN_MASK = 2 * SIZE_SZ -1
    • 我居然还在看WiKi, 关键是他的东西也太多了吧, 之前还以为可以跳过的, 结果全都得倒回去看原理和代码, 这波真的是大意了. 堆的相关内容真的好长
    • fastbin是单链表, 所以元素的用户数据段前八字节有数据, 且是fd
    • fd_nextsize, bk_nextsize是largebins的指针#define MIN_CHUNK_SIZE (offsetof(struct malloc_chunk, fd_nextsize))
    • 至少包含bk指针, largebins的特有指针可以不要
    • 奇了怪了, 看了半天才看出来fastbins里的链表头指针数组的数量是maxsize的字节数, 所以才有fastbin_index(chunksize(victim))这种用字节数定位下标的算法, 好像真的没有一句明白的话说明这玩意儿, 绝了, 看了半天源码才看出来……..
      还是乖乖看源码吧……..
  • 30:看懂了fastbinattack

    • nextchunck是指高地址的那一个
    • malloc_consolidate 函数可以将 fastbin 中所有能和其它 chunk 合并的 chunk 合并在一起。
  • 31:

  • 8/2 3: 做题

    • pwndbg和Pwngdb
    • 关于gdb.attach(p)的几句话
    • 查询各版本libc.so文件的main_arena_offset的小工具
    • 而且recv是从缓冲区获取数据, 必须把前面的都取出来才能够recv(4)
  • 8/4,5: 做题

    • 系统调用号在32位和64位系统是不一样的. 查询表
    • 关于libc_csu的内容在CTF_WiKi
    • additionally recursively dereferencing all pointers.image-20210804234240069
    • flat和pack只对数字生效, 对不足四字节或八字节的数据请自行填充完整
    • gdb.attach用法 io = gdb.debug('./hello', [gdb_scrip]) 注意要写路径
    • 已放弃gdb.attach(), 实在搞不明白怎么用
  • 8/6: 学习

    • gdb中默认关闭随机化, 使用show disable-randomization或set disable-randomization off关闭“禁止随机化

      关于ASLR和PIE详细内容, 前者是Linux系统特有打乱所有的东西, 后者是编译器加上的保护措施, PIE会打乱bss text data加载基址, 不过这是一个固定值, 当我们打开了Linux的ASLR 2才能够真正的随机.

    • 整理writeup

  • 8/7:继续

    • 看完了堆的全部基础内容, 还剩下各种利用方法没看
    • 了解了一波SROP, 尝试写了一题(其实是某题的第二种方法)
    • BUUOJ好几道都是做过的或者很相似的题目, 相当于复习了也比较基础
  • 8/8:继续

第六周: 8/9 - 8/15

  • 8/9:今天看GNU C Library源码(关于heap)

  • 8/10,11,12:继续源码

    • Typora不支持最新Mermaid语法的解决办法
    • 学了下mermaid的用法(或许将来能用到), 还有app.diagram.net的画图
    • 按住ctrl用鼠标点击多个地方可以同时编辑
    • 华庭的glibc解析中chunk size链表即为largebin的fd_nextsize和bk_nextsize
    • <span id=”jump”>跳转到的地方</span> 跳转本页锚点的方法
  • 8/13:搞定malloc.c中除了多线程的所有源码

    • emmmmm我是不是要补补多线程的东西, 总不能一直都不知道吧, 明天我去问问还能拖到什么时候学(bushi)
  • 8/14-15:写各种bin attack的分析文, 写完打算入坑ucore Lab1

第七,八周: 8/16-8/29

  • bin attack & easyheap
    • 出现了glibc版本问题, 需要再将源码分析和最新版本2.34比对一下
    • 直接执行.so文件来查看glibc版本
    • Gittalk插件
  • 补完了CSAPP上signal的部分, 不得不说内容真的是太多了

第九周: 8/30-9/5

  • 志愿者+shellab
    • getopt() strchr()
    • Ctrl+z 发送的是 SIGTSTP
    • Kali 上unsigned long int长8字节, 我在windows上用g++是4字节和int一样长
    • architecturelab还没做, 都不知道要不要弄了, 书上好多还没看又得要几天
    • 继续CSAPP, 怎么还没看完啊…….
    • 重大教训, 在Z-Library上找到了csapp的英文非扫描版, 终于不用在笔记排版上浪费那么多的时间了
    • 8/5 看到了处理器体系结构第三节

第十周: 9/6-9/12

  • CSAPP
    • process architecture看了一天半看不下去了, 还有剩下的Network & Concurrent Programming以后再找机会看吧
  • Rust
    • 看了五天的Rust Official Document, 相当于是应了肖老师的建议, 不过看了一大半之后还能继续做什么还没有思考, 不过大概率不去做网页组的事情了
    • 妄图和肖哥比确实是一种自不量力的行为, 我要好好反思一下自己要走的路
  • BUUOJ
    • 做个几题意思一下

第十一周: 9/13-9/19

  • 又看了一下checksec的保护机制
  • 准备了一手CCF CSP, 虽然没学算法的大家都是一个水平
  • 做个两题

第十二周: 9/20-9/26

  • IDA pro book感觉挺有用的, 抽个时间看看
  • 上面这本书中的一部分的博客: 名称与命名, 讲如何更改函数或变量名称
  • vim查找与替换
  • 面试V&N的pwn方向, 和当时的肖学长差不多水平, 但是现在的面试比较严格, 叫我再学两个月, 我现在退坑pwn去走一遍肖学长的learn list补补基础(编译原理和操作系统)
  • 太忙了, 搞综测, 又没周末, 实验又多, 下周再学吧

操作系统+编译原理

第十三周: 9/27-10/7+8+9+10(国庆全算进去吧)

  • 10/1-2 : 编译原理

    • 刚开始编译原理,操作系统的话看看有无必要同时进行
    • 编译原理概念过多, 暂缓几天, 现在先看操作系统
    • 这几天打算看看CSAPP的并行部分(tmd怎么还没看完, 笔记不做了就画个线好了)
  • 10/3 : 操作系统

    • 在弄ucore环境, 加入了新的vim命令, 包括这个.

    • ucore实验参考书

    • GCC内联汇编

      • 基本内联汇编
        "asm" 和 "__asm__", 如有多行每一行都要加上 "\n\t",
        实际上gcc在处理汇编时,是要把asm(…)的内容”打印”到汇编文件中,所以格式控制字符是必要的。

      • 扩展内联汇编 详见网站 好复杂, 用时再看

        1
        2
        3
        4
        asm [volatile] ( Assembler Template
        : Output Operands
        [ : Input Operands
        [ : Clobbers ] ] )
    • gdb基本命令以及窗口命令

    • 下午改学编译原理

  • 10/4 : 编译原理

    • ln命令|symbolic_link
    • 安装好PA环境, 开始cs143第一个实验
    • (看了学校的课程:数据库系统)
    • 软件安装问题
      • 芔, 根本没装好, 为了在kali上做实验整了半天flex安装, 一直给我提示缺少GNU m4, 我寻思哪里都没见过这东西啊, 找了半天m4也装了半天, 结果发现直接apt install就行了, m4的版本不重要, 重要的是flex低版本的源码级安装(也不知道有没用, 先装了再说)(后来还是用了apt install flex)
      • 文章里说的./configure && make && sudo make install就是在相应文件夹下执行就可以了
      • apt自动管理软件的依赖问题, 各种命令直接搜索即可
      • Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本
  • 10/5 : 编译原理

    • Ibus打出"安"需要按下A+J(an) , 真特么奇怪
    • Linux下!用法, 主要是传递最后执行的命令的参数,以方便的运行新命令(非常实用)
    • COOL文档看了一半, tour文档刚开头, 这种长文章确实耗时间, 晚上看完PA1吧, 就不自己写了
    • xodo不要拖动pdf文件查看, 会出现无法保存的情况
    • 看了一天的英文文档, 属实快累死了, 终于到了PA2
  • 10/6 : 继续苦逼编译原理

    • 有点其他事, 继续看了文档
  • 10/7-10 : 还是看文档

    • 课程看了两天, 实验相关只花了一下午看
    • #line 命令(还是没懂)
      1. #line 行号
        其中行号必须是1~32 767之间的整数,此指示导致程序后面的行被编号为n,n+1,n+2,…
      2. #line 行号 “文件名”
        其中行号和文件名说明来源的行号和文件名,指示后面的行会被认为是来自文件,行号由n开始。
        ​ #line指示一种作用是改变__LINE__,__FILE__宏的值。但是大多数编译器不支持#line。#line 主要用于那些产生C代码作为输出的程序,程序员并不常用#line。
    • 看了这么多天文档终于会写代码了, 好感动(╥╯^╰╥)

第十四周: 10/11-10/17

  • 终于整完了cool.flex, 开始看parse部分
  • flex的源码分析抽空看一看, 只写cool.flex还是忽略了一些细节
  • 救命啊, 这编译原理也太猛了, 概念多得离谱, 词法+语法分析是能够一周完成的任务吗???
    不过还能学下去就是了, 如果是实验的话应该会省略掉一些细节, 毕竟课程还是啥都讲, 从劣到优全都介绍一遍
    已经学不下去了
  • 学傻了, cool文档哪里看的过来啊

第十五周: 10/18-10/24

  • 我以为我看完文档了, 结果又看到产生式里面给我来一个error ';'人又蒙了, 一看Bison文档在第六章, 我就差这个没看呢, 不过后面的章节应该不是很重要了, 就算做我看完了吧:cry:
  • 21号, 手写数据库命令行, 练习一下纯命令形式的数据库管理, 以及查看文档的水平, 但没想到的是会错在书上的错误示例中:cold_sweat:
  • 周末用了一天时间写数据库, 比较忙
  • ?

第十六周: 10/25-10/31

  • 服啦, 还是不要想着三个星期整完编译原理了, 毕竟至少一个月打底了
  • 这几天还是在看视频. 就这视频是能几个星期看完的???还剩下PA45没做
  • 感天动地, PA4终于能看懂了, 周末尽量争取PA5开个头:ghost:
  • 把所有文件的关系理一遍终于看懂了PA4, 也对PA3和PA2有了更清楚的理解, 果然还是要把源码看一遍才懂写下去的都是些什么类型什么变量. PA5我还是先看看视频吧, 勉强算作一个开头
  • 一个小问题是kali中使用中文输入法的时候无法在vscode中用光标选中文本

第十七周: 11/01-11/07

  • 10/01-02: 听了两天的Stanford的课程感觉针不戳, 除了听力没有好到不用看字幕之外看的非常舒服, 不过全看一遍要花非常多的时间, 所以现在改为看PDF, 而PA5会尽快提上日程
  • vscode的快捷键真的是超乎想象, 有机会就去看一点
  • CSAPP没读完真是硬伤, 关键是哪有看那么快的啊.. 周六开始看网络编程部分, 后续可能补完处理器体系结构(没有然后了)
  • 看了一点汇编代码MIPS的manuals, 了解了下label是个啥(现在忘了)
  • 编译原理终于完成了, 下一阶段操作系统+中间代码优化
  • 开始一点点操作系统

第十八周: 11/08-11/14

  • 11/08:
    • 网上随便整了个序列号就通过了understand的验证, 这软件还真够直接的, 不过我更想在我的kali上弄这些, 先用着试试看. 这是windows的
    • rpm包的命名规范官网, →这里. 3:3.1被认为比2:3.2更新。
    • 好像第二次查硬链接和软连接的区别了, 起因是无法使用qemu而要使用qemu-system-i386或qemu-system-x86_64指令替换qemu指令. 可以利用软链接ln -s /usr/bin/qemu-system-i386 /usr/bin/qemu创建一个快捷方式一样的东西
    • 操作系统的kali环境算是弄好了一大半(我再也不敢说已经弄好了), 剩下的就是要熟悉一下各种软件的操作
  • 其余时间
  • python多版本问题 link: repaire或者python -m pip install -U pip 就行

第十九周: 11/15-11/21

  • windows下vscode莫名无法拖动文件标签, 快捷方式设为管理员启动然后再取消掉就没事了
  • 虚拟机里的vscode果然还是用的怪怪的, 换成windows下的写完再粘贴进去debug
  • 终于挂载成功了, 问题不是vmware-tools没装好, 也不需要加载ISO文件, sudo vmhgfs-fuse .host:/ /mnt/hgfs不成功不是因为vmtools的问题, 而是和报错说的一模一样, '/mnt/hgfs': No such file or directory. 真绝了, 新建个hgfs就完事了
    悲报, 可能每次重启我都要执行这一句命令…….:sweat:
  • C语言变量声明时加冒号的用法: C语言提供了一种数据结构,称为“位域”或“位段”
  • 16号Lab1暂时完成, 开始下一个Lab的学习
  • “:” (colon) and “.”(dot) in C struct 结构体中的冒号和点号
  • c语言结构体名称和结构体变量可以同名
  • 感觉gdb帮助也是有限, 一个调试还是要把代码看懂了再用gdb查看运行时变量的变化, 而且如果没有特殊情况还很难发现小错误

第二十周: 11/22-11/28

  • &((type *)0)->member: ANSI C标准允许值为0的常量被强制转换成任何一种类型的指针,并且转换的结果是个NULL,因此((type *)0)的结果就是一个类型为type *的NULL指针. 编译器还会对这种形式的宏定义做出优化, 只取出地址而不访问
    (type *)NULL的成员member.
  • 感觉是时候看一波网上的汇编教程了, 每天看一点就成, 免得看到一些指令还要一个一个搜
  • 学的少了, 不过考完了全部期中考, 可以有更多时间来做了
  • 周六
    • 整了正则替换, 像什么[0-9]*想了半天原来是0次到多次, 会匹配全文, 还是要熟练一下
    • 弄了一点模型机, 意思一下
  • 周天

第二十一周: 11/29-12/5

  • 看Lab3的视频中……
  • 花了剩下的几天时间写完了学校的cpu, 并且完成了板上的时序仿真, 等待下周二的实板测试

第二十二周: 12/6-12/12

  • 写CPU都适用的VIM, 找到了一个vim教程网站感觉挺有用 link, 剩下的配置在_vimrc里, 解决了复制到系统剪贴板的问题和保存会话的问题
  • 写了一周的CPU, 能运行程序了, 不过排个序都得要没有循环的八十多行的代码, 也是一绝
  • 周三开始继续学操作系统
  • 补了一下ucore的部分内容, 看了几天汇编语言, 对一些伪指令以及真实的汇编程序的结构有了认识, 对IDA反汇编的一些以前看不懂的东西也能读懂他的含义了
  • 周六现学python的文件操作, 学了一点os, random, shutil库的函数, 还是有需求推动学的快
  • 周天看CSAPP的处理器体系结构部分, 小有收获, 看的比较流畅

第二十三周: 12/13-12/19

  • 花了几天看了CSAPP的处理器体系结构章节, 大有收获, 主要是pipeline processor的设计思考过程一步一步非常详细, 可以说是锻炼思维能力了, 但这只是1980s的理论水平
  • 周四早上, 终于看完了Processor Architecture, 至于实验等假期再做吧, 继续开始操作系统内存管理部分
  • 周五, 操作系统Lab3, 安装了Windows default keymap, linux里的vscode勉强能用
  • 可能需要切换一下策略, 直接参照答案学习, 理解写出文档就算成功, 不然看了两天才补完Lab1中的challenge, 还以为是task switch…
  • 明天看看自动完成合并的diff和patch命令

第二十四周: 12/20-12/26

本周的任务是操作系统, 一下是除了这个之外的小东西

  • 典中典: 我以为我看懂了

  • STI指令: 响应可屏蔽的硬件中断, 在kern_init()中的intr_enable()执行, 就算没设置也能执行软中断

  • Typora崩溃了, 我也快崩溃了, 写了三天的东西莫得了, 自动保存直接断绝后路

  • 完善了一下用来备份的bat程序, 每十分钟备份一次(我就是要自动保存!

  • c/c++默认返回值是1, 我没写导致出错

  • 周三, 整了下快捷方式的快捷键; 学点patch和diff的补丁文件, 知识get!

  • 周四, 只能说那东西有点上头, 还是不碰为妙

  • 周末:

    • vscode的formatter用得顺手, 导致我diff+patch很难过T_T
    • patch只能使用带有-u或者-c参数的diff文件, 而且带有上下文, patch很容易fail
    • vscode修改为大括号sameline: "C_Cpp.clang_format_style": "{BasedOnStyle: Chromium, IndentWidth: 4}"
      clang-format参数

第二十五周: 12/27-1/2

  • 周一, 经典再现, 我果然没有看懂地址映射的四个阶段, 又重新看了一次ucore自带的一个设置好的页目录表和相应的页表
    又折腾了半天
  • 装了一个info包, 暂时只知道能看info ld
  • make grade在虚拟机共享文件夹里出错了, 诶想省事又有点麻烦的东西
  • 弄了一个多小时, 博客想加上汇编代码高亮, 没有成功, 和Typora的配合不是很好, 鸽了
  • Dirty COW的网站上有个东西好有趣
    • How do I uninstall Linux? Please follow these instructions.
  • VMware对于在虚拟机中选中的文本会自动复制到宿主机中
  • 周四, ucore开始快一个月了, 进展到了Lab6
  • 折腾了快一个小时, 结果发现需要update lab5的代码才能正确make qemu, 乌鱼子………为什么总在这种无意义的事情上浪费时间
    • 周五下午三点, 人已被气晕, exercise0怎么改都不行, 重新clone了肖佬的lab6, 绝了
    • 发现肖佬是把出错的那一句直接注释了, 未曾设想的道路
  • 元旦当天, 不进行格式化的合并就是舒服 && 尝试clash再次失败, 下次不弄了
  • 装了一个apt install graphviz, an open source graph visualization software
  • 深受翻译版所害, signaling process直接叫做信号进程

第二十六周:1/3-1/9

  • 开始lab8

  • print working directory = pwd

  • C语言宏定义中 ## 和#的作用

  • magic numbers

  • 这个highlightjs+hexo我不改变一下文件他就不动配置了, 搞得代码块白底白字, 还得手动在每个文件都加上一个空格.

  • do {…} while (0) 在宏定义中的作用: 能够正确的让多条语句按我们的意愿工作.

  • 尝试了一下ssh连接虚拟机, 只要执行一下几条命令即可, 使用了一下XShell, 要弹出qemu的窗口还要装东西……

    1
    2
    3
    4
    5
    apt-get update
    apt-get install openssh-server
    systemctl enable ssh.service
    vim /etc/ssh/sshd_config # 改成允许root用户登录
    /etc/init.d/ssh restart
  • 要用understand记得要注意编码问题以及及时重新分析所有文件(windows默认GBK编码

  • 周六, 虽然在复习周, 但是马上就要完成ucore了. 周天, ucore完成

  • 装上了ahk语法高亮, 硬是整了个小脚本


开始寒假(pwn.college+计网)

第二十七周:1/10-1/16

  • gVim是vim的一种, 指GUI Vim, 还有其他的模式可以通过 vim -参数 来指定
  • 考试周, 看了一点pwn.college的YouTube视频, 介绍视频感觉还挺多的, 是时候再写一篇blog了
  • 对了, 每天要复习一点前面的东西, 不然到时候就等于重新看了
  • 考完了, 考 完了, 考 完了, 16号开始一点计算机网络, 计算机系统, 和pwn.college
    • 找到了计算机网络书配套网站: 部分资源以及主页, 以及在Z-library上找到了英文第八版.
    • 第八版的改动
    • 别人的计网笔记
    • 研究笔记要怎么写用了一点时间, 干点别的去了

第二十八周:1/17-1/23

  • 17: 看计网, 明天开始pwn.college
  • 18: 找到了一个下载Github单个文件夹的网站, 以及把tree/master替换为trunk. 然后用:svn checkout [source]
  • 计网开始第二章, 第一章东西也真够多的
  • 看一点concurrent programing….还有先后关系, 先看network programming…呃呃, 还是看system I/O吧…
  • 19: CSAPP笔记全markdown的狠人
  • 掩码是个啥, Youtube快捷键
  • 看了CSAPP后几章和pwn.college.
  • 20: /dev/tty和pty等等
  • 还在ELF格式中挣扎.
  • 21: Xshell的警告信息, 不想看, 只要touch ~/.hushlogin这个文件就可以隐藏了, 删除后又显示
  • 看了一点computer networking
  • man手册还能装中文, 不想折腾了, 安排了apt install manpages-dev可以查看系统调用
  • 22: cc命令最终链接到gcc, 这是为了向后兼容
  • 连pwn.college慢的一批, 也为了计算机系统课装个Ubuntu了, 再弄个clash
  • 见识到了好多新的命令, linux有多的操作就写在Linux使用里吧.
    • 干脆把那个弄成清单, 然后具体细节写在每个WP里就可以了
    • runoob上的命令大全每天看一点得了, 至少混个眼熟
  • 23: 终于, 在ubuntu弄好了clash, 深深感到原理一个都不知道只会操作软件的痛苦….link
  • 看计网

第二十九周 1/24-1/30

  • 24: 继续很多的计网和一点pwn.college
  • 25: ASCII码中的控制字符就是按键盘上的Ctrl+字母符号来打出的,
    Caret(^) notation is a notation for unprintable control characters in ASCII encoding
    The actual meaning or interpretation of the individual control-codes is not prescribed by the caret notation, and although the ASCII specification does give names to the control-codes, it does not prescribe how software should respond to them.
  • 学了一波screen, 也不知道有啥用就是了… , 真香.
  • 快捷键没完没了了, 一个终端还有这么多
  • pwn.college做到了(?)
  • 26: 一点点pwn.college和科目四
  • 27: pwn.college+computer networking
  • 看了一篇PIPE&FIFO的文章, 看不下去了话真的太多了, 也是佩服一篇博客需要这么多字的. 还是linux manual管用.
  • 28-30 看计网和pwn.college.

第三十周 1/31-2/6

  • 1/31: 除夕夜, 还在看计网. 看的属实有点慢.
  • 2/1-2/2: 计网+春节.
  • 2/3-4: 看书, 进度315/775
  • 2/5: 连着看了几个小时看不下去了, 不重要的直接跳过不看了.

第三十一周: 2/7-2/13

  • 2-8: 下午五点, 前六章看完. 巩固下知识(除了算法)
  • 2-9-13: 终于看完了, (摸:fish:了一天)
  • 开始pwn.college!

第三十二周: 2/14-2/20

  • 14: 发现要自己写汇编代码, 之前看过的一部分还算用到了, 还好做了笔记不然和没看一样. 以前都是看现成的都没有自己写过.
  • python3.8特性: Assignment expressions: :==是补充关系并不是替换关系
  • deadbeef渊源Hexspeak有关系. 这个Hexspeak也挺有意思, 是用16进制数字来表示英文单词, 可用来编魔数.
  • 15: Linux的typora里双击或选中会自动删除文字居然是这个原因
  • 自己亲自动手写起汇编代码才发现这么多细节没有注意到, 要抓紧时间练练了, 这上面的题目还都比较基础嘞.
  • 16: 还在pwn.college
  • Undefined Behavior -> here and here
  • 17: 一点点的pc, shellcode injection又有好多的资料引用和视频, 全看完得几天时间(一天半就看完了)
  • 18: 看完了pc的shellcode module视频, 引用文章看个两篇就结束了.
  • 复习操作系统. ….到底需要一个何等庞大的基础知识体系啊……(tm拖了两天才要开始)
  • 看了一点disk image的相关wikipedia: disk image | loop deivce | device file
    • 还有Disk image和optical disc image区别:
      A disk image, in computing, is a computer file containing the contents and structure of a disk volume or of an entire data storage device
      An optical disc image is a disk image that contains everything that would be written to an optical disc
    • Once you’ve downloaded an ISO Image you can mount it as a loopback device.
    • It may be used to install an operating system onto a file system without repartitioning a disk.
  • 19-20: 回学校准备中, 不知道学了啥, 至少是复习了ucore

开学了!(pc+编译原理)

第三十三周 : 2/21-2/27

  • 21:复习CS143, 今天或许能复习完.
    • 答案是不能, 诶明天随便看看bison的东西吧. 然后再看看cscd70, 再然后看看LLVM IR Pass
  • 22: 如上所述, 主要看了CSCD70. 今天没有课.
  • What is complier’s front end 在课件里找到了, 一开始还去WiKi上查.
  • 23: 继续CSCD70(看完了lecture 1)
  • an induction variable is a variable that gets increased or decreased by a fixed amount on every iteration of a loop or is a linear function of another induction variable.
  • 不知道该不该看视频, 感觉优点在于能练习一点听力以及听一些问答, 缺点的话会慢一些, 不过这么一想倒是利大于弊了.
  • 24: 继续CSCD70. 第三个视频看了一半多
  • Number sign in #def. It turns out to be the mathematic sign.
  • 25: 看完第三个. 查了live variable analysis的作用.
  • 还查了计算机系统小班课的第二个问题: 不同操作系统, 不同编译器, 不同处理系架构对生成目标文件的过程有什么影响.
    • gcc由cc1, as, ld三个部分组成, 另外一个llvm把cc1模块化为三个部分, 然后正常汇编, 链接时可选optimization.
    • Clang只是一个front end.
  • 26-27: 查RFC中的ipv4和ipv6, 不知道在哪里有写. 还有C99待看
  • 复习补充linux命令(操作系统小班课)
  • 有空看下IBM网站, 上面好像挺多有用的博客资料啥的..
  • system programming in c or c++? -> link
  • 这两天都在做计网实验, 要写c99程序和测试程序, 边翻文档编写是慢了点. 不如说我敲代码好像一直都慢了点…..

第三十四周: 2/27-3/6

  • 27-1: How can I scroll back in GDB’s command window in the TUI mode?
  • vim range 范围 and this
  • debugging Infomation: native format | GCC 4.8 change to DWARF4 | -g -gstabs -gxcoff -gstabs+ | peda
  • 2-4: 装docker看视频和pwn.college.
    • docker的DNS解析错误无法sudo apt-get update, 解决办法 (还是不如换源有用) .
    • 看了几节多伦多大学油管上的英文视频还是挺有意思的, 就当锻炼了一下听力吧, 倒回来看哈工大视频. compiler的front end看的挺累的, 不过优化部分看起来意义更明了一些, 努力一下看下两三周弄得完不.
  • 5: 哈工大的视频相当紧凑, 不知道内容有没有少一些. 主要是英文没法两倍速, 要不然就听不懂了…..
    • What is orchestration? -> WiKipedia
    • What is the container? -> here
    • CMake vs. Make , and What is CMake? link
  • 6: 有点颓废.
    • 在看llvm的文档, 要不然这个过程是一无所知….. link
    • JIT and AOT(self-evident) | first class language?? | Archive file |

第三十五周: 3/7-3/13

  • 7: build system | 只能去看在线的llvm手册了.装好的docker还是别去执行unminimize这种命令了.
  • 8: docker的相关命令.
  • 9: 计网实验中. Return/Enter Key | Wireshark手册 | 每日单词进行中 |
  • 10:什么神奇计网, 水过得了, 除了浪费时间没啥意义.
  • 11: 啊啊啊我要学llvm, 怎么感觉前几天效率这么低呢.
    • 看了clang和llvm文档(比如-emit-code), 了解了一下如何写出一个pass. cmake写法待看.
    • 指导书里面的clang还有优化选项, 不明白这是在整啥, 去掉好像也没事. clang到底是前端还是编译驱动啊?
    • 取消windows防火墙阻挡ICMP报文. link
  • 12: 开卷.
    • 整了个zsh. link | C++作者网站 | RTTI, 没看懂 | first class也没看懂 | doxygen是个啥 | clash添加规则
    • 还在Assignment1, 把LLVM的东西看一遍哪有这么快啊.
  • 13: 又看了一天的文档+补掉课内的无聊作业. 把LLVM设计结构看了个大概, 有点通透的感觉了(

第三十六周: 3/14-3/20

  • 14: 怎么还在看文档. 弄了vscode编辑, 纯vim真是接受不能. woc好像快三周了, 我还没搞完, 还有makefile和cmake的语法没看呢.
  • 15: userland(user space) | FreeBSD | copyleft,GPL | Ninja |
    • 看了cmake&&make&&C++虚继承. 然后开始写代码.
  • 16: static member functions(stackover & cppref) |
    • replaceAllUsesWith()这个函数我看了半天, stackoverflow查了查llvm文档又看了看, 还去doxygen看源码, 终于看懂llvm是怎么组织这一对关系的了. 具体在CSCD70笔记里.
  • 17: 继续cmake和Assignment2.
    • 搜到一篇好文, vim的窗口使用, here
  • 18-20: pwn.college

第三十七周: 3/21-3/27

  • 21-23: capstone engine(一个反汇编引擎) | vfork&fork
    • pwn.college.
  • 24: concolic execution | Symbolic execution |
  • 25-26: 封校, 计网小班, 无了
  • 27: windows网卡必须是英文名才能代理 | POSIX 和 System V的linux系统调用关系|
    • pwn.college

第三十八周: 3/28-4/3

  • 28-29: 疫情疫情疫情 pwncollege | discord’s direct message (DM) | vim regex | BFD & objdump+readelf
    /proc(kernel doc) | dumping memory with gdb |
  • 30: elf启动流程(是时候看看程序员的自我修养了) |
  • 31-1: bash的manual可以一看 |
    • 看sandboxing的视频, 看了两遍感觉细节还是很多. 就像我小班课上和别人讲题目, 一些小操作我都没有去解释, 第一次见肯定会觉得信息量过大.
  • 2: tty terminal shell…&short explain&computer terminal | pwn.college-babyjail.
    • terminal在以前是一台实际的设备, 在今天的图形化界面系统中更多使用的是terminal emulator, 而不需要一台真实的terminal.
    • tty–teletype(writer): accessing the computer by sending keystrokes to it and receiving output back from it, printing it to a piece of paper.
    • gnome-terminal and konsole are themselves running on a tty, 包括graphical subsystem.
    • 为什么在termnal emulators里能使用^H(就是backspace)这样的ANSI escape code? 因为尽管hardware text terminals have become increasingly rare in the 21st century, the relevance of the ANSI standard persists because a great majority of terminal emulators and command consoles interpret at least a portion of the ANSI standard.
    • 直接看kp的终端设备类型简介
  • 3: babyjail | gcc编译选项:-masm=intelgdb选项:set disassembly-flavor intel | 找到了所有的视频

第三十九周: 4/4-4/10

第四十周: 4/11-4/17

  • 11: 没做啥
  • 12 13: history in screen | make的语法也太多了…….要对文档PTSD了 | 13看了点计网小班.浪费时间的东西.
  • 14: reverse engineering…. 我真的认真的只看汇编, 但是一想也没必要, 都用IDA pro了. 然后下载了pwnsh, 加上三个gdb插件安装脚本, 再熟悉了一下IDA的界面, 然后写个python脚本东查查西查查(list comprehension), 最后看了看视频, 知道了gdb调试set-uid的程序不能成功derandomize以及IDA添加struct类型等等来完善decompiled code, 用了整个下午和晚上. 好像是学了点东西…..
  • 15-17: reverse !
    IDA的远程gdb | pluginlist(一时半会儿用不到,先star)

第四十一/二周: 4/18-5/1

  • 18满课(…)19做了一点20-22IDA debug| reverse engineering
  • 23: memory error, 弄了pwndbg的多视图和tmux. 比screen好用, 还能整鼠标(
  • 26: 继续memory error, 7做到12
  • 27: 视频里真有一些没见过的用法….要不要花时间看呢?
  • 剩下几天做到了exploitation的第7题.

第四十二周: 5/2-5/8

  • 3: exp的第七题开始Yan85, 回顾了一下rev的18+19.
  • 4-5: 过了一遍mem, 看了rop视频, 在整heap.
  • 6-7: 在整rop. 还是有以前那几道ctf题里没见过的东西, 毕竟这课程会更系统一点.
    不同版本libc使用 |
  • 8:rop. 打算看两眼ROPgadget的实现, 了解一下python项目.
    • 试了下gdb的record和reverse exec.

第四十三周: 5/9-5/15

  • 9-10: rop
  • 11-12: race condition
  • 13: race + 补一下shell programming(详见linux使用), 都查到了POSIX的标准了.
  • 14-15: race, level1测试+shell编写, 结果level5直接卡住过不了. 下周看视频去了.
    • ………………….感觉还是得用python, 没有用shell的. os模块挺多函数. 不过shell看了下也不亏(大概)

第四十四周: 5/16-5/22

  • 16-17: race到8, 17号看office hour中的level8 socket, 感觉前面的socket相关都跳过了不太好…..
  • 18: 写了python的并行. vim安装了点插件.
  • 19: 继续race | pthread锁 | awk语言
    • 又不明所以地做完了level9, level10一个绕过semaphore又整不会了, 看视频去了.
  • 20: race完成+kernel一点视频
  • 21: LibcSearcher和python包安装更新,整理root文件夹 | pwn_kernel环境搭建+视频 | 看linux inside syscall part1 |
  • 22: pwnkernel, 内容很多.
    online manpage |

第四十五周: 5/23-5/29

  • 23: kernel vedio + online challenge usage
  • 24: kernel challenge to 6(half complete)
  • 25: Computer Network Lab5: root dns server on local machine. + 计系小班
  • 26-27: kernel大概做完了 | 了解一下CTFtime上的东西.
  • 28: 愚蠢的验收浪费一天时间. 本科像是个笑话
  • 29: advanced, vedio+note.

第四十六周: 5/30-6/5

  • 30:
  • 31-5: 复习+一点点advance.

第四十七周: 6/6-6/12

  • 6-7: 复习周.

开始暑假

重新计数, 因为大二结束了(小学期不是个东西, 所以不算)

第一周: 6/13-6/19

  • 13-16: 期末考试
  • 17: 重新看最后一章
  • 18: 发现代码中还是有很多细节, 仔细分析视频中, 并且对代码做了一点小修改.
  • 19: 在kali2021上的libc2.33中(比2.31多了tcache对齐检查和地址保护)实现了任意读写原语构造, 完全理解了示例代码中的每一行的操作. 不过在context.binary忘加上这里卡了挺久…….仍然在level1.
    scanf 和 printf 的空字节读写问题 | tcache poisoning.

第二周: 6/20-6/26

  • 20-23: 一些advance和小学期.
  • 24-26: 算是学完了pwn.college, 然后整点单片机编程, 再然后开整CTF

第三周: 6/27-7/3

  • 27-3: 单片机编程 + git的进阶使用(vscode GitLen+ Git CLI)
    写代码有点上头, xyw整了个离谱玩意儿我打算这两天看看.

第四周: 7/4-7/10

  • 4-6: 完善倒计时单片机, 顺带熟悉了一下git的各种功能.
  • 7: docker在ubuntu上的安装使用(最后也没整成, Desktop装不上或者设置打不开, 还是放弃了.)
    RESTful API | 装了个Ubuntu22.04 | 双系统整不明白,不装了
    明天继续docker命令熟悉(没了图形界面只能继续学命令行了)
  • 其余: docker compose syntax | xinetd(which means deamon) | .ddirectory name |
    Firmware, a special class of computer software used to control low-level hardware(like BIOS), held in non-volatile mem |
    升级了一下虚拟机硬件兼容性, 现在kali支持了KVM |

第五周: 7/11-7/17

  • 11: 又往单片机编程项目里加了点东西, 倒计时更完善(大杂烩)了
  • 12: kernel module programming | device.h都不知道在哪里,搜都搜不到哪里下载 |
  • 13: 继续 | 看了xyw的STC-OS |
  • 14: 弄明白90%的STC-OS | vim | CTF-WiKi in kernel
  • 15: kernel | ???
  • 16: kernel ROP(环境部分) 遇到了一点问题, 两个小时解决了.
  • 17: 继续ROP(代码部分) 修改python库代码错误

第六周: 7/18-7/24

  • 18: ret2user代码,

  • 19: strtol()到类型指定长度就会停下 | 调试
  • 20: 继续WiKi | MSR和gs/fs相关内容, 写在new_start里面 |
  • 21: 用svn checkout [/trunk]下载相应子文件夹 | 继续bypass smep | 把extract移动到bin下
  • 22: 查Intel手册, Double fetch
  • 23: fetch + userfaultfd, 看了半天的constgrep源码, 居然只是硬编码的宏定义. 还是用lookup_constants了.
  • 24: ????????????????????????????

第七周: 7/25-7/31

  • 25: 涉及到内核的macro好难查出来 | userfaultfd |
  • 26: kernel 收尾 | IO_FILE
  • 28: 复习堆利用的各种技巧.
  • 29:
  • 30: 复习heap利用.
  • 31: 继续 | linux specifications | LSB standard | HOOK

第八周: 8/1-8/7

  • 1: libc多版本(使用glibc-all-in-one) | 添加了chlibc到/bin中.
  • 2-3: large bin attack | Tcache
  • 7: heap

第九/十周: 8/8-8/21

  • 8: off-one-byte
  • 9-10: b00ks
  • 15: 终于看完了heapstrom2.
  • 18: pylance 添加import路径
  • 19: 看ret2dlresolve

第十一周: 8/22-8/28

  • 21: 小学期报告
  • 22-26: 小学期+ret2dlresolve+链接装载与库
  • 27-28: 32位

第十二周: 8/29-9/4

  • 29-30: 整理关于ELF动态链接的知识点
  • 31-1: 继续整理加上32位情况下的exp的写
  • 2: 32位partial的exp

大三第一学期

第十三周: 9/5-9/11

  • 3-4: 64位no RELRO的exp, 遇到一堆问题. 总算解决了. 4号下午整了vscode和chrome安装路径, 删掉旧版.
  • 怎么学的这么慢?
  • 5: 64 partial RELRO
  • 6: 64的终于完成了…… 不过并没有Wiki上说的那么多问题, 只有system对齐和伪造表的地址和栈空间的问题
  • 7-8: 7号没干啥, 上课. 8号 HITCON CTF 2020 START!!
  • 9: 看了看revenge of pwn, 还要研究pwntools的源码, 真不愧是misc类. 看一半转到kernel题Spark.
  • 10: 看懵了. 在IDA里分析ko的反汇编…..
  • 11: qiyz_ssyahu

第十四周: 9/12-9/18

  • 12: 属于是只能照着wp来理解一下到底怎么做题的….. 还没整完Spark. 恢复ko文件里的类型信息都给累死.
  • 13: 调试spark 终于完全恢复了ko文件的类型信息. 搞明白了流程. 这几个结构体真是可以从零开始猜测的?
  • 14: 这exp复杂程度又是第一次见了…. 四百多行, 用了userfaultfd+setxattr. 还没看呢.
    感觉可以每天看下how linux works.
  • 15: 看的内容同昨日
  • 16-18: 看书

第十五周: 9/19-9/25

  • 19-20: linux那本书.
  • 还搁这spark.
  • .

第十七周: 10/3-10/9

  • 345: 看完了spark. 进度最慢的一段时间.
  • 6: 昨晚问了skr, 我决定加入r3kapig战队. 没想到都不用面试直接进的. 然后发现CSR CTF马上要开始了, 看了看往年的题目.
  • 7: 看不懂, 居然还有以太坊的题目, 不过顺带看看以太坊是个啥.
  • 8-9: 还是注册了一个队伍, 不过只做出来了签到题….这CSR综合度太高了, 到处都是知识盲区, 不是传统PWN方向的题目.

第十八周: 10/10-10/16

  • 10: 看了看ASIS CTF的往年题目, 决定参加下周六的比赛试试….这次是有传统pwn题的, 好像无内核题目.
  • 11: 到了难度2/4的题目, 短短几十行却看不出有什么问题….
  • 12-16: 做完了strvec, 才想起来tcache就是heap前面那个0x290的chunk. 顺带体验了一下ASIS CTF 2022, 结果签到题都看半天, 第一个直接用了非预期解, 第二个都忘了%n$这个操作.
    顺带继续做完ASIS2021的pwn题, 顺便体验一下rev的题目.
    下一个打算做做sekai ctf的题目, 官方自带wp, 爱了, 就做个两年份的, 顺带看看其他类别的题目长长见识.
    见到了forensics & ppc类别的题目.

第十九周: 10/17-10/23

  • 17-18: 这两天都是readable的exp学习, 顺带如何使用提供的docker环境和部署脚本, 知道了其中一种非预期解, 但是没有跑通, 另一种队里的非预期解没懂, 还有预期解还需要看. 预计又要看个一周了, 学校还有一些其他的事情.
  • 19: 预期解+x32_abi解.
  • 20: x32abit听说ubuntu18可用 | 继续intended solution.
  • 21: 完成, 看了两眼babyscan, 原来是格式化字符串的内容, 差点忘了. 看了看jsy.
  • 22: 继续jsy. 没看两眼发现hackergame开了, 不出所料的没会几题, web math基本直接放弃.
  • 23: 看namespace. man page真的多, 但是全.

第二十周: 10/24-10/30

  • 24: (user)namespace + capabilities, 手册的东西真的多.
  • 25-26: 还看了credentials等等. 在题目那里整理了一下. 还是靠wp吧.
  • 27: 看rust, 准备入个rust-pwn的小门.
  • 28: rust
  • 29: 看了下hack.lu. 午夜开的比赛, 一觉醒来pwn题都没几个解出来的. 估计我也解不出来.
    烦的要命, kali的dpkg不支持zst压缩, 也不知道怎么在debian上弄2.34glibc, 为了运行程序只能转到ubuntu, dpkg是可以的.
    不过还要装proxychain patchelf chekcsec等等等真实够麻烦. sudo也打不习惯. 好的环境搭不起来再见hacklu.
  • 30: 研究placemat的汇编层面c++ class, 当做复习了一下类继承虚表啥的. 又是啥都没做出来的一次比赛.

第二十一周: 10/31-11/6

  • 31: hacklu讨论里有各题wp, 还不错又得看个几天了.
  • 1: 都在看placemat, 主要是c++的各种东西, 当然还有printf这种简单但又复杂的函数…………..
  • 2-6: C++ ABI 周末运动会.
    我居然看了这么多天

第二十二周: 11/7-11/13

  • 7: 没做啥
  • 8: 终于搞定placemat. 全凭自己弄了. 看看riot.
  • 9: dirtypipe环境搭建, 整半天linux编译, 打了两个patch才能用.
  • 10: 继续dirtypipe. 看了看cm4all team的关于如何发现该漏洞的blog.
  • 11-13: 继续dirtypipe.

第二十三周: 11/14-11/20

  • 14: 做完了dirtypipe的ppt, 主要是思考如何讲解. 除了原理还读了发现者的blog, 看了下是怎么发现的, 看了一堆东西比如zip zlib. 又看了几个exp实践了一下, 加上看到了x32 abi的编译选项解决了ASIS2022 readable的一种方法. 挺花时间的, 不过还算看了不少东西.
    看ordersystem, 麻烦记得有问题先重启
  • 15: 看ordersystem, 涉及到了反弹shell, 即reverse shell. 又开始看python bytecode.
  • 16: 继续字节码. python nested function |
  • 17: 又想开始复习一下编译原理了, 诶时间不太够 | underscore in python
  • 18: 整了点学校里没用的实验报告, 不过倒是看了一些路由器命令行配置 | 继续bytecode
  • 19-20: 没啥变化, 还真的看了一个星期啊.
    一知半解总是令人难受, 决定看完cpython的所有流程.

第二十四周: 11/21-11/27

  • 21: python internal
  • 22: 找了半天没看到啥有用的, rst插件全都出错, 什么sys.exc_info()放在with语句里也不知道做啥的, 把3.11源码弄成本地repo然后寻找call_method&load_method. 折腾一大圈, 不如看看test_test()的dis结果, , , , ,
  • 23: 转了一大圈, 重新来看手写的bytecode, 终于全弄明白里面每一步操作了, 接下来是复现
  • 24: python decorator用法:geeks/pydoc_func | functiontools.partial | what is func(foo)(bar)
    看了看pwncli的用法, 虽然好用但是又是一个学习成本负担, 我已经处在学习速度跟不上用的速度的状态了. 周末还有hitcon ctf, 这种难度我多半又是队里陪跑. 哎hack.lu的题还要看完吗?还有之前的seccon ctf还没看呢.
  • 25: 忙着复现, 自己写的时候又是一堆问题
    • 在windows上装了pwntools, 感觉应该不太能用吧…待研究.
    • 又是sendline被识别成noreturn, 手动在sendraw中加入return
    • hitcon直接出来些vm escape, browser之类的题目. 完全没看过啊喂
  • 26: 还tm的是复现
    • 看到群里有人说userfaultfd有个类似的技术叫做FUSE. 得, 又是个没见过的东西. 搜一下. Local Privilege Escalation (LPE)
    • 成功了. 我逐渐理解了一切.
  • 27: 为了hacklu的byor又继续开始house of apple. 又是一个大坑, FSOP都还没看. seccon也没看, hitcon更没看, sekai不知道啥时能看. 先不看了.
    • 去了下信安协会, 在考虑我真的想做研究么? 可能也不是很想做. 现在也该做些real-world的东西了, ctf题目真是一群职业老手搞出来玩玩的东西, 我一下做这种世界范围的比赛还是难顶, 而且每一个题目的方向的小入门都能看一两个星期.

第二十五周: 11/28-12/4

  • 28: 迷茫中, 正在复习编译原理打算继续学中间代码优化和插桩. cs143的笔记写得也太简洁了, 重看的时候基本和没有一样. 幸好还是记得大概的流程的.
  • 29: 复习, 补充笔记. 解决了typora和vscode由于gpu加速导致的显示模糊–参数加上--disable-gpu.
  • 30-1: 没啥特别的. 整了点学校的无聊报告.
  • 2: 整报告 | $@ $*区别 |
  • 3-4: 复习补充完了, 4号晚上开始CSCD70

第二十六周: 12/5-12/11

  • 5: llvm. 一个环境起不来, ubuntu docker莫名抽风, kali没法apt llvm-12. 我: ????? 发现只是docker context的问题.
  • 6: 纠结中. 没东西学让我很焦虑, 最直接的是在这里写不了一行字. 随便看点PE的格式和qemu逃逸(包括明天).
  • 7: ?
  • 8-9: 看点llvm加上qemu逃逸
  • 10: RCTF看两眼(只会看两眼, traits直接又劝退了) + modern C++这书可以看看, 因为一个allocator又去查资料了. 好吧和allocator无关.
    已经在马不停蹄的学C++20 qemu逃逸 rust了, 还有fuzz和一堆不知道其存在的技术
    modern C++有空就看一点吧…. 有点学累了, 学不完主要是, 还没什么成果. 下周去实习看看吧, 看起来怎么就一个星期..?
  • 11: 呃, 看了点qemu

第二十七周: 12/12-12/18

  • 12-14: 实习. 看书加上帮点小忙.

    装了pdf xchange editor, 换掉了xodo这个奇葩玩意儿. 天天给我整黑屏. 然后装装虚拟机, 搞定了32/64位软件版本问题(52pojiexp上直接就是32位的), 然后自己试试分析真实程序. ctf还是太玄乎了. 发现的问题还是写在malware-analysis里面.

  • 15-17: 都在看书, 简单的看了一遍. 六百页的书直接过了一遍.

第二十八九周: 12/19-1/1

  • 19-21: 宿舍颓废中
  • 22-25: 快恢复了但是意外的没动力学. 真是罕见.
  • 26-31: ?
  • 1: 看了看ASIS Final, 不出意料的没啥帮助, 想了想还是回顾下RCTF的C++ Reverse.

第三十一周: 1/2-1/15

  • 2: 看C++. 感觉cppreference上的可以过一下. 这个时候又回想起来modern cpp了, 赶紧捡起来一起看看.
  • 3-4: Diary C++逆向. 看了下某位一开始就学过的SGI STL, 稍微看两眼也不是完全不懂. 自己写两下代码对照着复现下C++源码.
  • 5-12:
  • 15: ?

第三十二三周: 1/16-1/29

  • 19: 看完了Diary, 慢得离谱.
  • 20: BFC, 又是C++逆向. 去年除夕夜在看计网, 今年除夕夜也得看点啥才行. 说不定就成我的惯例了呢(wwwwww)
  • 21: 除夕夜在看STL源码剖析, 不错.
  • 22: 看了点书, 到P113
  • 23-24: 看书
  • 25: 看红黑树和map的源码.
  • 29: 做bffc又见C++ ABI.

第三十四周: 1/30-2/5

  • 3031: 搞不明白暂时没整house of apple. 看看GAME.
  • 1-3: 看GAME中, 东查西查折腾半天没看明白. 还被gef抽风整傻了(一个多小时).
    • vmlinuz && bzImage
    • 看了一位带佬的博客只能感叹又全又清晰, 自己的kernel pwn分散在各个post就相形见绌了. 诶不整理也凑合吧.
  • 4: 继续GAME. 查了挺久的东西, tag类函数连文档都没有….
  • 5: 看完了GAME. 可以整整常用include. kernel题目还是有很多实现我没有整理过. 可能还要开好几篇文章. gef和pwndbg感觉也升级了一些功能, 还没来得及看看. pwndbg用顺了. 换一个挺麻烦. 更新感觉很nice, 果然要定期瞧瞧.

第三十五周: 2/6-2/12

  • 6: 整理下笔记, 主要是kernel pwn.
  • 7: 继续整理
  • 8: 仍然是. 补完了slab allocator是个啥. CTF-wiki上啥也没提我现在才知道这东西. 好久都没人更新了. 发现内存管理还有好多可看的. 有时间瞧瞧.
  • 9: 看书, linux的一些操作.
  • 10: 没干啥, 看了两页.
  • 11: 看博客, 电脑清灰+32G内存
  • 12: 看modern C++和linux内存管理.
    -rc in linux version is Kernel release candidates

第三十六周: 2/13-2/19

  • 13-15: 看cpp新标准.
  • 16: 看看肖佬的idekCTF2022 Coroutine.
  • 17-18: 继续看
  • 19: 开了两个CTF, js wasm risc-v全都不熟, 又是围观的一天.

第三十七八周: 2/20-3/5

  • 20-26: 复习, 装matlab等等ing.
  • 27: matlab装好了, 学习手册中
  • 28: 发现太多了, 一时半会学不完, 但是发现了作者源码. 那没事了
  • 1: 搞定网安课小复现. 过于简单了这下. 看点如何检测nsf5隐写的论文.
  • 2-3: 看论文, 查深度学习和浅层学习概念. qq使用时长有点超时了, 没用还是关了.
  • 4: 折腾了matlab选择组件+安装, 尝试下载代码, 发现xshell不能用(重启后解决), 下完了发现matlab显示有问题, 折腾半天发现要关闭FXAA…
  • 5: 炼丹.

第三十九周3/6-3/12

  • 6: 炼丹.
  • 7: 炼丹. 把实验验收可能用到的脚本写了, 大功告成, nsf5检测成功率99.84%.
  • 8: 思考人生中, 回顾Coroutine. 我还是更倾向于把manual全部看一遍. 看到暑期阿里云内推, 投了.
  • 9: 复习.
  • 10: 复习 + 招聘会参观.
  • 11: 菜的真实.
  • 12: 继续看

第四十周: 3/13-3/19

  • 13: 看了看web安全笔记这个网站, 安全运营啥的.
  • 14: 这个网站没有很多东西, 一下就过了, 一些命令和程序看了也用不到. 再回顾一下, 然后整下AFL Fuzz, 顾着思考人生了
  • 15: 复习下中间代码优化…..
  • 16-17: LLVM 康康网上面试题
  • 18: 面试题加上机器学习相关概念.
  • 19: 看了看linux内核管理的内容, 然后打算开始AFL的看.

第四十一周: 3/20-3/26

  • 20: 看了AFL++, 以及一点牛客上的消息
  • 21: 继续AFL. 看到gitmodules,
  • 22: 找了点内核cve的东西(晚咯), 看了看长城杯warmup例题, 这种简单题都写不利索了… 牛客浏览+n
  • 23: 啥也没干.
  • 24: 复习pwn_kernel, 长城杯, 就整出一道rev…
  • 25: NKCTF, 大半天整出三道题, only_read逆完编码然后发现一个栈溢出我居然除了爆破libc地址想不到怎么利用. 做到第二天五点遂放弃.
  • 26: 挣扎了几下nkctf后, 决定会看一下hackergame. 第一的也太全能了, 密码网安二进制全都会, 一道v8的题目都有现成exp套上去. 看完其他的赶紧学学v8漏洞, 虽然17年的还是有点久远.

第四十二周: 3/27-4/2

  • 27: 还算是学了点吧…
  • 28: 用了用gpt.
  • 29: 难受. 看到ret2dlresolve使用了fake_link_map, 是还没用过的东西.
  • 30: 看到python generator |
  • 31: 找了找能学的cve. 还是先看看TIPC的.
  • 1: TIPC | hack-a-sat 离谱的比赛
  • 2: 给学弟妹们整点东西.

第四十三周: 4/3-4/9

  • 3: 调戏chatgpt. 发现paper copilot, 又补点深度学习的东西.

  • 4 5: 复习下nkctf

  • 6: 看了看symbol execution和angr. jinja | whatisjinja

    Templates are an essential ingredient in full-stack web development. With Jinja, you can build rich templates that power the front end of your Python web applications.

  • 7-8: 看神奇论文 | 在angr示例里面看到自动化exp, 感觉又是一个大坑…

  • 9: 骑车 一个v8的洞, 记录一下万一想看了呢 | hackergame里面二进制文件比较好像又是一个坑.没得看了

第四十四周: 4/10-4/16

  • 10: 看点angr, 环境居然没装成功. 看计算机设计大赛的东西
  • 11: 整理简历 看AFL 设计文档
  • 12: 补了点论文的东西(浪费时间……)
  • 13: 尝试linux内核cve, 但是也没找到几个. 诶用用syzcaller吧, 至少搭个环境用用先… 打ctf有点耽误时间了这下…
  • 14: syz中.
  • 15: 复习zsh等shell编程中.
  • 16: 该死的llvm项目

第四十五周: 4/17-4/23

  • 17: 仍然是
  • 18: syz调试中. 终于能用了.
  • 19: 人给我跑废了
  • 20: 看syz文档中. 看Go语言特性中. 特别是接收器.
  • 23: 尝试fmtstr.

第四十六周: 4/24-4/30

  • 24: 纠结一道格式化字符串 买票ing
  • 25: angstormctf复盘.
  • 26-30: ?

第四十七八周: 5/1-5/14

  • 1-3: ?
  • 4-5: 研究JUCE文档
  • 6: 开始写GUI.
  • 7: GUI, 复习下考试
  • 8: 查了查漏洞挖挖掘
  • 9: 面试llvm优化, 一面就过了… 阿里系人才评估 GUI 无聊的论文报告
  • 10: GUI 流密码部分
  • 11: GUI完成三部分.
  • 12:

第..?周

  • 6/28: 人在实习, 没人带才是问题, 初创公司是这样的…看了ubuntu23.04的内容
  • 29: 看了msf的东西, auto forward port |
  • 今天是哪天已经不重要, 工作的东西没法写在网络上, 也算知道有些东西为什么那么难查了, 自己找是没有出路的. 已跑路, 最多写点通用的东西了.