buuctf
文章平均质量分 55
e-code
这个作者很懒,什么都没留下…
展开
-
格式化字符串漏洞
char a[100]scanf("%s",a)printf(a)根据32位下的传参规则让我们来看另一种情况char a[100]scanf("%s",a)printf("%s",a)所以在第一种情况下,输入%p%p 会打印 [esp+4] [esp+8]再往后看,记录一下printf("%40c%5$hhn",a,b,c,d,e)向 (%5=第五个参数) (n=写入) 0x40 宽度为(hh=1byte)即 mov byte ptr [esp+ 0.原创 2021-05-21 22:08:51 · 83 阅读 · 0 评论 -
children tcache
1 alloc 遍历 202060的指针数组,看是否存在空 //0-9 10个 申请 0x2010 的数组S (栈) 根据 size 申请一块内存(堆) 数据读入到S //__read_chk 有传入长度 strcpy S ->堆 //off by NULL 虽然开了保护,但是由于申请的空...原创 2021-04-26 16:17:28 · 105 阅读 · 0 评论 -
magicheap
1 create2 edit //存在溢出3 del4 exit4869 只要0x6020A0 大于0x1305 执行后门所以目标是修改该值利用unsort_bin attack弹出链表一项时需要进行front now nextfront -> next = nextnext-> front = front即unsort_bins[0] --> bk = unsort_bins[0] --> bk -...原创 2021-04-24 12:52:22 · 132 阅读 · 0 评论 -
hacknote
0x0804A050 指针数组 32位1.alloc malloc(0x8) == >chunk(0x10) struct note {函数地址,内容指针} malloc(size)2.del free(note.内容指针) free(note)3.print s[idx](s[idx])4.exitfree(fas...原创 2021-04-23 10:42:44 · 133 阅读 · 0 评论 -
stokf
1 malloc2 edit3 free4 print //TODO or …堆内存指针数组 0x602140利用unlinkunlink 发生情况当上一个chunk未使用 即 chunk1(unuse) chunk2(use) chunk3(use)//free chunk2时 ,向上合并当下一个chunk未使用 即 chunk1(use) chunk2(use) chunk3(unuse)//free chunk2时 ,向下合并当上下...原创 2021-04-22 11:41:32 · 88 阅读 · 0 评论 -
b00k
enter author name : ==>my_read(off_202018, 32)所以输入33字节数据或 传入换行 后,将 后一位设置为\x00read失败直接return//read 0(读到 EOF);-1(出错)可以修改 0x202040 - 0x202061 ,不考虑read出错时,最后一字节会变成\x00第一本b00k存储在0x202060 可以被修改一部分思路还是先泄露地址,然后修改 __malloc_hook先修改0x202040-0..原创 2021-04-22 10:39:02 · 620 阅读 · 0 评论 -
babyrop2 疑惑及解决
简单的rop题通过printf泄露libc地址然后找到libc基址,从而找到one_gadget地址实现获得shell疑惑点是 泄露printf地址时,不输出泄露read地址数据正常原创 2021-04-07 16:40:15 · 168 阅读 · 0 评论 -
ciscn_2019_s_3
pwn题目主要是为了获得flag文件一般使用 syscall(exec) 获得shell 或者使用open + read 获得文件内容syscall(rax= 0x3B, rdi = '/bin/sh', rsi = 0x0, rdx = 0x0) //execve 函数调用syscall system函数调用execve函数 因为封装过,调用参数有所变化,保护机制也有所区别该题能栈溢出,但是不知道栈地址发现正常输出(输入小于0x10的数据时),会讲rsi地...原创 2021-04-07 13:52:36 · 176 阅读 · 0 评论 -
babyheap_0_ctf_2017
漏洞就是劫持程序控制流先对程序进行分析alloc(Length) //struct a_malloc{int use_or_not; int Length;void*base;int un_use} ; struct a_malloc malloc_array[16];fill(任意长度)free(指定块)dump(输出对应chunk的Length)//可以填充任意长度的数据,即可以修改 chunk头目标 -->劫持程序控制流 --> 把__malloc_hoo...原创 2021-04-01 09:05:01 · 205 阅读 · 0 评论 -
webshell初探,buu20
场景:buu 刷到20题, 使用了ret2lib拿到了flag但是网上的解法都是写webshell,那就写一个试试水总所周知:地址随机化,或者说模块的重定位 这里说的模块 包括dll,so,sys,可执行文件等只要这个文件中有重定位表,即可进行地址随机化,同时意味着如果没有基址,就无法调用的正确的函数,直接crash让我们再来看看call jmp,取全局变量等操作 要么是使用了相对偏移,要么使用了绝对地址相对偏移在 任何情况下,针对自身模块的操作总是正确的 //不扩...原创 2021-03-09 14:54:55 · 193 阅读 · 0 评论 -
ciscn_2019_c_1 ret2lib
发现栈溢出非常简单但是并没有system 等函数,只是没导入,但是模块(动态库)已经放入内存在本地环境 使用vmmap 可以看到存在glibc-2.27.so根据模块加载规则,同一个模块(动态库)在放入某进程的虚拟空间时, 起始位置会有一些偏差,但是函数对于基址的偏移是固定的也就是说,只要获得一个模块的某一个函数,就能获得模块基址,同时获得模块所有函数地址这里puts函数用的比较频繁,获得puts函数的地址即可 //即便是延迟绑定,在执行过后也能正常获得数据即目标为 puts(.原创 2021-02-25 15:06:54 · 158 阅读 · 0 评论 -
pwn1_sctf_2016
栈图代码逻辑是读入0x20的数据 ,最后一位为NULL,所以有效数据为0x1F将其中所有的字符I 替换为字符串 you然后再拷贝到 ebp-3C位置由于0x1F*3 > 0x3C 所以可以栈溢出并且淹没返回地址,从而在ret 时劫持程序控制流此处注意点是idaF5不是特别准确,需要配合汇编进行函数的参数的确认poc = 'I'*21 + 'B'*1 + p32(0x08048f0D)...原创 2021-02-23 13:45:03 · 109 阅读 · 0 评论