- 博客(14)
- 收藏
- 关注
原创 格式化字符串漏洞
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 93
原创 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 118
原创 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 143
原创 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 146
原创 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 98
原创 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 644
原创 babyrop2 疑惑及解决
简单的rop题通过printf泄露libc地址然后找到libc基址,从而找到one_gadget地址实现获得shell疑惑点是 泄露printf地址时,不输出泄露read地址数据正常
2021-04-07 16:40:15 182
原创 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 206
原创 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 236
原创 webshell初探,buu20
场景:buu 刷到20题, 使用了ret2lib拿到了flag但是网上的解法都是写webshell,那就写一个试试水总所周知:地址随机化,或者说模块的重定位 这里说的模块 包括dll,so,sys,可执行文件等只要这个文件中有重定位表,即可进行地址随机化,同时意味着如果没有基址,就无法调用的正确的函数,直接crash让我们再来看看call jmp,取全局变量等操作 要么是使用了相对偏移,要么使用了绝对地址相对偏移在 任何情况下,针对自身模块的操作总是正确的 //不扩...
2021-03-09 14:54:55 209
原创 ciscn_2019_c_1 ret2lib
发现栈溢出非常简单但是并没有system 等函数,只是没导入,但是模块(动态库)已经放入内存在本地环境 使用vmmap 可以看到存在glibc-2.27.so根据模块加载规则,同一个模块(动态库)在放入某进程的虚拟空间时, 起始位置会有一些偏差,但是函数对于基址的偏移是固定的也就是说,只要获得一个模块的某一个函数,就能获得模块基址,同时获得模块所有函数地址这里puts函数用的比较频繁,获得puts函数的地址即可 //即便是延迟绑定,在执行过后也能正常获得数据即目标为 puts(.
2021-02-25 15:06:54 179
原创 延迟绑定初略分析
.text 0x400b3f <main+23> call puts@plt <0x4006e0>即.plt 0x4006e0 jmp [0x602020]即 jmp 0x4006e6然后执行了 dl_runtime_rssolve_xsavec //写时修复当第二次调用时然后再分析PLT表PLT 其实就是为了执行 runtime_resolve_xsavec如...
2021-02-24 18:15:39 151
原创 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 126
原创 buu rip
简单的栈溢出,修改返回地址使得修改程序控制流,执行system("/bin/sh"),即shell程序写出第一版pocpoc = 'A'*15 + 'B'*8 + p64(0x401186) 执行 失败被断在0x7ffff7a332f6 <do_system+1094>: movaps XMMWORD PTR [rsp+0x40],xmm0查了一下intel手册大致为如果存在内存空间和寄存器之间传输时,128bit(64位)必须要进行对齐,看不明白,实...
2021-02-22 16:45:37 602 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人