Home

Leetcode record

leetcode刷题记录 第一题 题目 两数之和 难度 简单 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解答 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int...

Read more

Lab2

lab2 特权级管理 linux和μcore只使用0和3 段选择子 DPL 段描述符 中描述特权 门 RPL段寄存器 DS ES FS GS(寄存器最低两位) CPL 段寄存器 CS SS (寄存器最低两位) 操作系统对于特权的合法性检查 访问门时:CPL<=DPL[门]&CPL>=DPL[段](低优先级可以访问高优先级的代码) 访问段时:MAX(CPL,RPL)<=DPL[段](发出请求的一方优先级高于目标) 特权级切换 通过中断实现特权级转换 TSS(任务状态段)存储信息 TSS 全称task state segment,是指在操作系统进程管理的过程中,任务(进程)切换时的任务现场信息。 分配tss内存->初始化tss...

Read more

Lab1

lab1 启动顺序 1 相关寄存器设置初始值,cs寄存器初值为0xf000,ip寄存器初值为0xfff0,此时pc指针指向的内存地址为 base + offset = 0xfffffff0(0xffff0000 为cs寄存器隐含的值) 此地址为bios的eprom地址,通常为长跳转指令,跳转至1m的bios代码中执行 (注:视频中地址长度为20位,两个16位寄存器相加,即cs左移4位+ip,地址为0xffff0) 2 bios加载存储设备第一个扇区的512字节到内存的0x7c00处,pc跳转至0x7c00处执行代码(此512字节代码称之为bootloader) (注:由于bios能力限制,不能一次加载完整个的os代码至内存中,故分多次加载) bootloader的功能...

Read more

2018

2018 不知道什么时候开始流行写年终总结,可能是我这个年龄段的年轻人开始变得老成了,不过想一想好像自己今年也22了,好像确实在从哥哥向叔叔一步步迈进了。 我想2018年里面我还是经历了很多的,有很多东西想说的,但是真正说可以写出来的,可能到了眼前就忘了,剩下的可能就是一些不连续的奇怪的印象。 科大的记忆到了三月份就画上句号了,可能三年前那个二期士官给我别上肩章的时候打死也想不到我的退伍仪式就只是对着全队的战友吹了一通牛逼。回去的时候我就在想,真的结束了。 都说什么痛苦的经历到最后肯定会笑着说出来,是这样的,我看着科大的黄本子里页框的边边角角写满了当时的激进的想法,对连干,对制度,对自己,读着读着感觉自己又回到了大二时候躲在闷热的箱包房里一遍一遍对着我的平板练着口语。 我很不...

Read more

湘潭大学2018高校运维赛wp

justnote 很经典的选单程序,好久没遇到这么经典的堆题了。。 三个功能,add,delete,edit add: int insert_note() { __int64 content_addr; // [rsp+8h][rbp-18h] __int64 len; // [rsp+10h][rbp-10h] signed int i; // [rsp+1Ch][rbp-4h] for ( i = 0; i <= 31 && *(_QWORD *)(16LL * i + note_lst); ++i ) ; if ( i == 32 ) return puts("no more, no more"); cont...

Read more

hctf heapstorm

heapsorm 比赛的时候没做出来,想破了头也没找到怎么在只有0x20-0x40大小的fastbin的情况下利用offbynull来getshell,当时还以为真有这种方法没有学到 漏洞点很简单,就是个offbynull unsigned __int64 __fastcall sub_EE0(_BYTE *a1, __int64 a2) { _BYTE *v2; // rbx signed __int64 v3; // rdx _BYTE *v4; // rax bool v5; // zf char buf; // [rsp+7h][rbp-31h] unsigned __int64 v8; // [rsp+8h][rbp-30h] v8 = _...

Read more

xctffinal 2018

xctf final 2018 wp 1. reader 程序分析 程序代码量比较大,逆起来比较费劲 主要两个结构,book和paper 00000000 paper struc ; (sizeof=0x178, mappedto_7) 00000000 flag dd ? 00000004 size dd ? 00000008 content db 256 dup(?) 00000108 title db 32 dup(?) 00000128 description db 80 dup(?) 00000178 paper ends 00000178...

Read more

hack it ctf (3)

KAMIKAZE 本来我以为昨天那题目就够恶心了,妈的这个更恶心!!!恶心!!! 程序分析 unsigned __int64 add() { signed int n; // [rsp+8h] [rbp-48h] struct song *v2; // [rsp+10h] [rbp-40h] struct song *song_struct; // [rsp+18h] [rbp-38h] char nptr; // [rsp+20h] [rbp-30h] char buf; // [rsp+30h] [rbp-20h] unsigned __int64 v6; // [rsp+48h] [rbp-8h] v6 = __readfsqword(0x28...

Read more