做题记录
文章平均质量分 58
北岛静石
以后新博客的更新会先放在自己的notion:https://www.notion.so/3b69777783774061b97d84cfba3e3684?v=b44f836f6de44ae598aa6af39b4e87ef
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
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 · 2187 阅读 · 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 · 2758 阅读 · 6 评论 -
羊城杯和天翼杯的补充
YCB2021-how2heap:当数组被填满的时候, 再进行删除会出现相同相同指针, 导致uaf同时也存在数组负索引未检测的问题, 因此got表等也是可以被free的后面就是修改got表, 使得指向onegadget的地址就行了(这题当时没做出来主要是因为没发现uaf, 而且在本地仅靠负索引就可以做出来了, 但是在远程由于全局变量的改变, 导致负索引free等操作受限, 所以打不出来, 而且记录的这种做法很巧妙, 反正让我现在做也不一定做得出来, 记录下来主要是为了告诉自己got表可以尝试写入on原创 2021-09-30 01:23:04 · 1561 阅读 · 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 · 1736 阅读 · 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 · 6676 阅读 · 0 评论 -
21 09 05学习总结(qwb_2018_core kernel rop)
21.09.05学习总结(qwb_2018_core kernel rop)Column: September 1, 2021Tags: kernel study, learning experience大概是好久之后更新的一篇blog了, 之前都在忙忙碌碌的打比赛呢, 痴痴的看着短视频, 莫名其妙就会让时间流走呢(笑, 最近不会再这样了)qwb_2018_core, 唔, kernel还不是学的很好呢, 先注释一遍吧, 加强理解:#include <string.h>#includ原创 2021-09-05 13:59:37 · 1514 阅读 · 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 · 221 阅读 · 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 · 271 阅读 · 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 · 206 阅读 · 0 评论 -
强网杯2021 pwn部分wp
baby_diary:本题考查2.31的off by one, 漏洞处如下:在sub_146e中会将输入数据的ASCII码相加再相加相加…直到变成一个byte的数字, 然后加到输入数据的后一位上, 因此我们可以尝试控制输入的内容, 从而控制下一个chunk的size大小在确定完溢出点后, 我们便开始准备伪造chunk了, 由于要满足p->fd->bk == p, p->bk->fd == p以及prevsize == size, 我们需要申请一个largebin的chunk原创 2021-06-18 01:29:26 · 1452 阅读 · 1 评论 -
4 21之前做题杂记
4.21之前做题杂记Tags: Pwn前几天的基础题都丢在这里了(也不一定是基础题, 做完没印象的也有):bambobox:#!/usr/bin/env python# coding=utf-8from pwn import *sh=process('./bamboobox')sh=remote('127.0.0.1', 9997)elf=ELF('./bamboobox')libc=ELF('/lib/x86_64-linux-gnu/libc.so.6')#context.log_原创 2021-04-21 19:30:40 · 186 阅读 · 0 评论 -
4.13做题随记(axb_2019_heap, ciscn_2019_final_5)
4.13做题随记Column: Apr 14, 2021Tags: Pwn相关文件链接axb_2019_heapciscn_2019_final_5axb_2019_heap:保护检查:利用思路:banner()中存在明显的格式化字符串漏洞, 因此可以用来泄露栈地址, libc地址以及pie产生的偏移get_input()中有单字节溢出, 可以修改下一个chunk的inuse位, 从而unlink因此只要获得偏移后unlink到¬e任意读写到malloc_hook, 写原创 2021-04-14 13:59:08 · 277 阅读 · 0 评论 -
how2heap的unsafe_unlink(包含stkof和wheelofrobots)
unsafe_unlinkTags: Pwn, learning experience例子:先讲解一下how2heap中给出的例子: 它最终的效果是让全局变量ptr上存储的值变为ptr-0x18, 其unlink过程可以被分解成为如下步骤: (1)寻找堆溢出, (2)伪造chunk, (3)执行unlink(1)寻找堆溢出就是找一个溢出点之类的漏洞使其修改两个连续chunk中的第二个chunk(2)伪造chunk, 除了在第一个chunk中布置fake_fd和fake_bk外, 还要在第二个chu原创 2021-03-25 23:45:34 · 304 阅读 · 0 评论 -
2021_1_10寒假100pwn(2/100)
0rays招新赛_2020_PIE:题目: 题目地址思路: 由于strcpy存在\x00截断, 所以前两次分别可以获得canary和__libc_start_main+231的地址, 然后第三次输入要输入一个地址并且会输出地址上存放的值, 猜测本意是想让我们获得main函数之类的地址来获得PIE的基址, 但是由于本人还没有深入了解__libc_start_main函数, 所以就单纯输入之前获得的地址来避免读取原创 2021-01-11 14:19:34 · 135 阅读 · 0 评论 -
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 · 232 阅读 · 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 · 146 阅读 · 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 · 126 阅读 · 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 · 166 阅读 · 1 评论 -
2020-11-09学习记录:攻防世界pwn之echo_back
今天就算是世界毁灭,我也要更新博客,容我先睡一觉原创 2020-11-09 04:33:19 · 360 阅读 · 1 评论
分享