自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 HCTF2018-admin-复现

session 详细了解学习的博客:https://blog.csdn.net/h19910518/article/details/79348051 写的真是好session_start()这是个无任何返回值的函数,既不会报错,也不会成功。它的作用是开启session,并随机生成一个唯一的32位的session_id,类似于这样:4c83638b3b0dbf65583181c2f89168...

2020-04-10 15:33:48 777

原创 2019 省赛lllheap unlink解法总结

在free函数时有个明显的UAF漏洞但是麻烦的是程序限制了创建的chunk的大小只能是

2019-12-10 21:31:20 269 1

原创 D^3CTF babyrop 经验总结

思路:调试时发现在栈中有一个libc_start_main的地址可以根据这个地址算出距one_gadget 的偏移得到这个偏移后再让libc_start_main这个地址加上这个偏移即可得到one_gaget的地址, 之后再用这个地址覆盖ret即可getshell, 需要注意的是要满足one_gadget的约束条件, 我选则的是偏移为0x4526a 处的one_gadget, 所以需要保...

2019-11-29 09:06:19 622

原创 2019火种CTF PWN writeup

1.lllheap思路:UAF漏洞,程序限制了chunk的大小为0x80-0x200 之间, 那么无法通过常规的fastbin attack来覆写malloc_hook , 但是可以通过改写global_max_fast 来扩大fastbin 的上限大小, 再往_IO_stdin 附近写入0xf1作为跳板, 伪造fake_chunk从而覆写malloc_hookexp:from pwn i...

2019-11-23 10:31:53 928

原创 pwnable.tw deate_note 经验总结

程序逻辑分析:程序逻辑比较简单, 漏洞点也比较明显, 在 add note函数中的index没有设置下限检查导致可以为一个负数, 从而可以覆写got表漏洞利用:最直接的想法是植入shellcode, 但是程序对输入做了检查, 输入的shellcode要求全是可见字符, 这就要求对汇编语言比较熟悉了编写shellcode通过学习其它人的wp与查找资料, 发现机器码是可见字符范围的指令有pu...

2019-11-16 17:57:21 429

原创 pwnable.tw seethefile 经验总结

关于伪造FILE结构体来getshell的题目, 又学到了点知识程序逻辑分析:程序的逻辑简单,简单的打开文件读取文件的操作, 但是对于flag进行了严格的过滤, 无法直接通过打开flag文件来读取flag, 在switch分支5处输入的name存在明显的溢出, 观察发现fp就在name地址下方, 可以通过溢出来控制fp指针, 接下来就是伪造fake FILE结构体了原理:fp 指针指向的...

2019-11-13 20:49:27 541

原创 2019 红帽杯 three 经验总结

这题感觉要对汇编语言要比较熟悉会更容易做出来…程序逻辑分析:前两个函数通过读取flag文件的内容, 并将存放flag的chunk的地址放入bss段中在程序中可以输入3个字节的指令, 之后再执行这三个指令, 所以目的是植入3个字节的shellcode来获取flag利用思路:通过调试发现在执行call eax 之前, ecx寄存器中存放的是bss段的地址0x80f6cc0, 而前面...

2019-11-11 12:24:58 1408

原创 2019 湖湘杯 HackNote 经验总结

静态链接的题目, 又学到了一点程序保护:保护全关程序逻辑分析:通过观察start 的汇编代码找到main函数的地址箭头

2019-11-11 10:53:01 965 3

原创 pwnable.tw Tcache Tear writeup

漏洞点:free后ptr变量没有置为零, 所以存在UAF漏洞在malloc chunk时,

2019-11-06 22:11:05 700 1

原创 2019 上海市大学生安全赛 boring_heap 经验总结

这题盯了一上午没发现漏洞点…, 然后就自闭了但是就算自闭, 学还是要学的…程序分析:常规操作都齐了1.add程序中限制了创建的chunk的size只能为0x20, 0x30, 0x40 其中之一2.update相当于edit, 不过可以制动...

2019-11-03 22:32:06 237 1

原创 pwnable.tw applestore 经验总结

做了这题后对栈的理解又加深了一点程序保护:程序逻辑分析:1.列出apple store 的商品2.通过创建一个size为0x20 的chunk来存放需要购买的商品的数据具体结构如下:str addrpricenext addrbefore addr创建完毕后插入以mycart为头节点的双向链表中...

2019-11-01 09:22:58 890 1

原创 pwnable.tw Silver_Bulllet write up

程序保护:程序逻辑分析:1.创建银弹在create_bullet 函数中输入得字符串得长度为银弹的power大小, 最大为0x30, 只能创建一次&s -> &s + 48 存放字符串&s + 48 存放power大小2.Power 提升如果银弹已被创建并且银弹的大小小于0x30, 那么可以提升银弹的power直至上限0x30漏洞点:漏洞点...

2019-10-30 15:00:33 206

原创 pwnable.tw dubblesort 经验总结

漏洞点:read函数读取的时候不会在数据末尾加上’\x00’ , 这就导致了可以泄露栈上的libc地址v9 没有进行边界检查, 导致输入的数据可以导致栈溢出写exp时碰到的问题:1.IDA 生成的伪代码变量的表示位置出现问题canary的值 显示是存放在esp + 0x7c 或 ebp - 0x10 上, 这两种应该都是指的同一地址, 但是实际调试的时候发现结果不一样一开始是按...

2019-10-29 15:23:49 846 1

原创 江西省省赛 线下 pwn writeup

基础rop题, 但是漏洞点发现的太晚, 写脚本的时候比较急,一些简单的错误没发现, 一句话就是菜分析:程序保护一开始看到程序里用了malloc觉得可能是个堆题,但是程序中没有释放chunk或对chunk中的数据进行操作的函数, 再根据程序开的保护确定是栈上的题而不是堆题漏洞点:关于输入数据的边界程序中严格限制了, 但是在传参的时候出现了漏洞size 定义的时候是有符号数, 只要输入...

2019-10-28 10:25:13 344

原创 pwnable.tw 3x17 经验总结

这题涨姿势了, 学到了不少东西, 对静态链接的题目也有了一点了解参考的wp:和媳妇一起学pwn之3x17(不得不说这名字真的sao… , 不过文章写的挺好的分析:由于程序是静态编译的, 把符号表给剥离了, 所以无法直接找到main函数, 可以先观察程序的入口点start在地址0x0000000000401A74处调用了一个函数, 而这个函数其实就是libc_start_main函数l...

2019-10-25 12:21:21 989 3

原创 2019 极客巅峰 pwn1 write up

程序逻辑分析:常规操作, 但是只能show和 delete一次note, 经过add操作后的note无编号, 所有操作都是针对ptr指向的chunk进行漏洞点:在edit内 可以造成8字节的溢出, 所以可以改写下一个chunk的size或改写top_chunk 的size漏洞利用:由于题目限制了show和delete的次数, 只能控制当前add的note的指针, 所以无法通过uaf ...

2019-10-22 21:29:46 455

原创 pwnable.tw calc 经验总结

代码写的少, 弄清楚程序逻辑都得盯好久…程序逻辑:如题目名字所写, 程序的功能就是实现一个简单计算器的功能相关函数介绍:1.get_expr函数功能为读取计算的表达式, 运算符只包括+ , - , *, /, %五种, 除了运算符和参加运算的数据之外的字符都不会被读取2.parse_expr函数功能为对表达式进行解析传入的参数a1 为表达式的地址a2 为calc函数中变量v...

2019-10-22 13:19:16 755

原创 RoarCTF easy_pwn writeup

漏洞点:在write note 中,如果再输入一次size的大小比创建note时的大小的差值为10, 则读入的数据会比chunk的size多一,也就造成了off-by-one漏洞漏洞利用思路:大体路线:**1.**修改chunk1 的size为0xf1**2.**修改chunk3的size为0xa1, 之后free掉, 再create一个size为0x20 的chunk,由于修改了ch...

2019-10-13 21:07:34 3049

原创 ByteCTF note_five 经验总结

每到接触新知识得时候总要花不少力气搞懂(汗,这题是关于改写global_max_fast 再通过fastbin attack来getshell, 总结一下学到的知识点和解题思路思路:这题限制了chunk的size, 大小为0x8f~0x0x400,在edit info 函数处存在 off-by-one 漏洞,通过这个漏洞可以改写chunk的size一开始的思路是创建几个chunk,然后通过修...

2019-10-10 17:54:24 833

原创 De1CTF weapon 经验总结

第一次接触通过利用_IO_2_1_stdout_ 来泄露libc地址的题目,中间碰到不少问题,在这里记录一下1.泄露libc由于程序限制了创建的堆块大小为0x60 以内,所以无法同通过创建一个大小能放入unsortedbin中的堆块,但是可以通过伪造一个大小符合unsortedbin中的堆块来泄露libc地址具体步骤:1.创建五个大小为0x20堆块 编号依次为0-5, 之后一次释放chun...

2019-10-04 13:07:42 783

原创 数字经济云安全共测大赛 amazon writeup

漏洞点:在进行free操作后没有把chunk指针置为0 所以存在UAF漏洞思路:泄露libc地址:泄露libc地址比较简单,由于题目限定输入的size范围要小于0x100, 所以无法创建一个大小可以直接放入unsortedbin中的chunk, 可以先填满tchachebin, 然后在free一个chunk,这个chunk便会进入unosrtedbin这是chunk的fd变指向了lib...

2019-09-26 09:45:50 375

原创 BUUOJ babyheap 经验总结

漏洞点:在fill()函数中 输入的content 大小是由我们指定的,没有检查边界,所以会造成堆溢出利用思路:泄露libc地址:这个程序的free()函数做的很彻底,标志位, 堆块大小,堆块指针全部置为0,并且malloc chunk的时候会把创建的chunk的数据区全部置0,这就不能向 已经free的chunk写入数据,free过的chunk也不能直接引用一开始想不到怎么泄露lib...

2019-09-25 00:46:21 328

原创 hackme.inndy.tw notepad writeup

一开始的时候盯了一会,没找到漏洞点…然后去找别人的博客看wp,发现了漏洞点在note_open函数中,在计算result的值的时候只做了上限检查,没做下限检查,这导致了后面的函数指针可以指向上一个堆块的内容解题思路:看别人的博客 是让堆块合并从而造成堆溢出,之后在利用printf格式化字符串漏洞泄露libc地址,从而getshell一开始打算也按照这样的想法做,但是写到一半发现还有另一种做...

2019-09-22 20:00:33 232

原创 pwnable.tw hacknote write up

程序分析:程序有四个操作:1.Add note2.Delete note3.Print note4.Exit1.Add note在bss段中存放note的指针,每一个note 包含两个堆块,add的过程中第一个堆块的数据区的开始四字节存放调用puts的函数地址(0x804862b),随后四个字节存放后面存放content 的堆块的地址2.Delete note漏洞点发生在Dele...

2019-09-08 10:53:44 273

原创 BUUCTF ciscn_2019_c_1 write up

分析:程序的逻辑比较简单,漏洞点在encrypt 函数中的gets函数中在encrypt函数中由gets函数输入数据,随后程序对输入的数据进行加密1.如果是小写字母跟0xD异或2.如果是大写字母跟0xE异或3.如果是数字跟0xF异或在这个循环中会破坏我们设置好的数据,但是可以通过两次异或运算又转换为我们设置好的数据二进制文件中没有出现getshell和system之类的函数,所以要通...

2019-09-06 08:59:57 4895

原创 hackme.inndy.tw very_overflow 经验总结

解题过程:看反汇编代码 看出该程序 是个笔记程序有添加,编辑,显示单个笔记,显示全部笔记 四个选择一开始我是想找溢出点,盯着add_note 想到创建很多个note 可以导致溢出随后过程中有两种想法,但是都不行1.使用ret2dl_resolve 的方法,但是发现单靠add_note 只能控制栈上一处空间的内容使用add_note 在内存中的存储形式是node->next(4字...

2019-09-04 14:32:19 205

原创 hackme.inndy rsbo2 经验总结

这题想用retdl-resolve 来解题,可是自己手写的脚本过不了,搜过其他的wp,发现有很多种解法,利用DynELF泄露libc地址, 或利用write直接泄露libc地址(题目给了libc),但是我就是想用栈迁移和retdl-resolve解题,但是搜到的wp几乎都用了roputils工具,这工具我不会用也没搜到什么教程,然后经过一段时间的无能狂怒之后最后决定求人不如求己,自己去看roput...

2019-08-07 17:44:50 302

原创 hackme.inndy.tw raas 经验总结

相关资料:Glibc内存管理如果有人看我的总结的话直接看资料就行了,堆之类的我也刚接触,不怎么熟悉UAF漏洞原理是 在释放较小的堆块的时候不会立马把这个堆块放到small bins当中,而会把这个堆块放到fast bins当中, 当需要再次分配堆块的时候会优先再 fast bins寻找合适的堆块,找到了则返回,如果没找到才会去small bins中寻找空闲的堆块。利用这个特性可以造成堆块重...

2019-08-05 12:13:34 217

原创 windows编程- 学习笔记3

1.MessageBox函数原型: int MessageBoxA( HWND hWnd , /* 句柄 */ LPCSTR lpText, /* 内容 */ LPCSTR lpCaption, /* 标题 */ UINT uType /* 类型 */ );用法:#include...

2019-07-27 11:47:52 162

原创 Linux socket 编程-学习记录

在同一台电脑上的不同应用程序之间进行 数据传输创建服务器端的流socket 的一般步骤1. 调用socket 创建一个socket#incldue <sys/socket.h>int socket(int domain, int type, int protocol); returns file descriptor on success. or -1 on error...

2019-07-19 22:52:49 112

原创 Jarvis Oj smashes 经验总结

解题思路:本题除了PIE 和 RELRO 其他保护都开了而ELF文件中告诉了你flag的位置,所以要通过某个漏洞去读取这个地址上的flag,在触发 CANARY 这个保护时, 程序会终止并且输出argv[0] 的内容,利用这点加上gets函数的无限读取可以覆盖argv[0] 处的内容,从而输出我们想输出的内容(本来在pwnable.kr 上做过类似的题目,但是过了太久忘光了,全程在想有没有其...

2019-07-18 16:52:51 204

原创 pwnable.kr loveletter 经验总结

解题思路:虽然程序开了CANARY保护,但是仔细观察在protect函数中存在缓冲区溢出," #&;`’"|*?~<>^()[]{}$\" 输入的名字中有其中之一的话该字符就会被拓展成一个3个字节大小的爱心,所以可以在发送的字符串中加入 ’ \ '字符来拓展字符串,从而造成溢出一开始我是想缓冲区全部由爱心填满,然后覆盖 v5 ,v7 的值然后把/bin/sh 命令写进去,...

2019-07-18 11:52:49 456

原创 pwnable.kr alloca -经验总结

本题思路:按常规方法想在main函数中溢出时不可能的,alloca分配的空间比能输入的字符大小size一直都要大(一开始我还以为size会有个值能大过alloca函数分配的栈空间,搞了半小时后发现我真是傻的不行),那么就无法从size入手程序中自带callme中可以getshell的函数,所以我们要控制程序的返回地址到这个函数中g_canary 模拟栈保护机制中的canary, 在分配的栈空...

2019-07-17 17:08:13 549

原创 安恒杯 7月赛PWN-unexploit 经验总结

通过这题发现自己的有很多知识点短板解题思路:read函数读取的缓冲区在 rbp-buf 也就是rbp - 0x8 处,那么控制了rbp的值指向我们可以写的区域(比如bss段)就可以在那个区域植入shellcode,再控制ret跳转到shellcode的地址就可以getshell了具体做法:把栈段切换到bss段,也就是让bss成为栈段开始进行溢出的时先把rbp的值覆盖为 bss_addr...

2019-07-16 11:15:30 933 1

原创 pwnable.kr dragon writeup

丢进IDA里进行分析程序的逻辑是:先出现小龙,50HP, 30 damage, 每回合恢复5点血量可选择人物牧师 或者骑士牧师的技能:1.给龙造成20点伤害,耗10点MP2.恢复50点MP, 耗0点MP3.一回合无敌,耗25点MP(非常250的技能)骑士的技能:1.给龙造成20点伤害2.给龙造成40点伤害,同时自伤20点HP(杀敌40,自损20,也非常250)这两个人物的技能...

2019-07-13 12:04:11 198

原创 pwnable.kr fsb 知识点总结

这题是关于格式化字符串漏洞的题目对于%n 写数据以前一直很模糊,不知道是往栈上写数据,还是以栈上的地址指向的地方写数据,好好想了这题后明白了,%n 是往栈上的地址指向的地址处写入数据比如:printf(“pwn%n”, &a);printf("%d\n", a);32位下 会先把&a 压入栈中,在压入format_addr,然后call printf此时栈上的情况为:...

2019-07-12 09:39:00 359

原创 ret2dl_resolve 知识点总结

ret2dl-resole 是通过伪造到 .rel.plt , .dynsym, .dynstr中表项中的偏移以及伪造这三个段中的数据结构来达到调用system 函数的目的这三个段的信息都可以在IDA中 DYNAMIC 段中找到DT_STRTAB -> .dynstrDT_SYMTAB -> .dynsymDT_JMPREL -> .rel.plt...

2019-07-11 17:12:35 416

原创 xctf 攻防世界-forgot writeup

根据ida反汇编的结果可以发现有两处溢出点,第一处溢出点没什么作用,只能观察第二处溢出点可以观察到箭头处是个函数指针,&v3 是v3在栈上的地址,&v3 + --v14 是根据&v3在栈上移动,上面的for循环是用来改变v14的值,根据溢出点函数指针v3到v12 ,变量v14都可以被我们控制,接下来再找找有没有system函数发现目标函数,接下来我的想法是利用缓冲...

2019-07-08 08:00:11 1779 5

原创 xctf 攻防世界-dicegame writeup

比较容易发现可以对buf进行缓冲区溢出,继续往下看可以发现获得flag的条件是循环50次,50次输入的v1值与随机数v2 都相等根据前面发现的缓冲区溢出可以发现我们可以覆盖掉seed种子值那么种子值可以被我们随意设置为一个任意值,我把它设置为0,有了种子值可以写一个c程序把50次产生的随机数都求出来有了随机数便可以编写exp了C程序:#include <stdio.h&...

2019-07-07 16:51:51 411

原创 pwnable.k asm 知识点总结

1.mmap 创建新的内存虚拟区域void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);start: 新的虚拟内存区域最好是从start 开始的一个区域length: 连续的对象片的大小为length 字节offset:从据文件开始处偏移量为offset字节的地方开始prot:...

2019-06-25 17:52:24 341

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除