摘要: 盲打 BROP 技术,第一次遇见,虽然 buu 上给了源码,但还是记录一篇盲打技术博客。 "Pwn 盲打(Bilnd Pwn)的一般解决思路" 阅读全文
posted @ 2020-03-02 21:29 PwnKi 阅读(538) 评论(0) 推荐(0) 编辑
摘要: [TOC] 逆向分析 create 函数 + heaparray[i]:存放 chunk 的地址。 + read_input(heaparray[i], size):向 chunk 写入 size 大小的内容。 edit 函数 + read_input(heaparray[v2], v0):向 ch 阅读全文
posted @ 2020-03-02 15:45 PwnKi 阅读(2574) 评论(5) 推荐(2) 编辑
摘要: 对于 SROP 技术只是了解过,实战还是第一次,记录一下原理以及 pwntools 相关工具的用法。 "4eriri ciscn_2019_es_7" "【技术分享】Sigreturn Oriented Programming攻击简介" "pwnlib.rop.srop" 阅读全文
posted @ 2020-03-02 09:55 PwnKi 阅读(552) 评论(0) 推荐(0) 编辑
摘要: "Buuctf pwn1 详细wp" "picoctf_2018_shellcode" "十一月百度杯pwnme" "gyctf_2020_borrowstack" 阅读全文
posted @ 2020-03-02 08:17 PwnKi 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 常规检查 看题目提示就知道是 shellcode 题,看保护,果然 NX 防护没开启,这就意味着栈上的代码是可以执行的。 逆向分析 文件函数众多,而且不能 ida f5 直接反编译,那只好手撸汇编代码 直接从数据流分析,主函数有两个可疑点,分别是 080488FF call vuln 与 08048 阅读全文
posted @ 2020-03-01 22:43 PwnKi 阅读(678) 评论(0) 推荐(0) 编辑
摘要: exp 脚本 这题没有 system ,但是有 int 80h 系统调用,所以我们只需要栈溢出 rop 技术设置系统调用参数即可执行 execve("\bin\sh",0,0) 拿 shell 内容来源 "cmcc_simplerop" 阅读全文
posted @ 2020-03-01 21:33 PwnKi 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 这道本来是一道盲打题,但是 buu 给出了二进制文件,那就成了简单的格式化字符串漏洞题,不过还是记录一下盲打的流程跟 pwntools 的格式化字符串漏洞自动化工具怎么使用。 "pwnlib.fmtstr" "buuctf刷题" /) "Pwn 盲打" 阅读全文
posted @ 2020-03-01 18:06 PwnKi 阅读(848) 评论(0) 推荐(0) 编辑
摘要: [TOC] 逆向分析 add 函数 + notelist[]:存储 chunk 的地址。 + notelist[i]:chunk 的第一个内容为 print_note_content 函数地址。 + v1[1] = malloc(size):chunk的第二个内容为指向 content chunk 阅读全文
posted @ 2020-03-01 11:04 PwnKi 阅读(627) 评论(0) 推荐(0) 编辑
摘要: exp 脚本 栈溢出,有 system 函数, rodata 段有 cat flag ,那就不需要拿 shell ,直接栈溢出 rop 调用 system('cat flag') 即可 阅读全文
posted @ 2020-02-29 20:03 PwnKi 阅读(435) 评论(0) 推荐(0) 编辑
摘要: exp 脚本 C++写的程序,逆向分析有点费劲。注意到 password_checker 有 call rax 指令,倒推 rax 的来源,在 main 函数中把 rax 的来源覆盖为漏洞函数的地址即可 get shell 感谢 keer 师傅的指点! 阅读全文
posted @ 2020-02-29 19:40 PwnKi 阅读(1132) 评论(0) 推荐(0) 编辑
摘要: exp 脚本 有 puts 函数,有栈溢出,第一次栈溢出 rop 用 puts 泄露 got 表,回到漏洞函数再次栈溢出 rop 执行 system('/bin/sh') 阅读全文
posted @ 2020-02-29 14:24 PwnKi 阅读(476) 评论(0) 推荐(0) 编辑
摘要: [TOC] 逆向分析 new 函数 + records[v2]:存储 chunk 的地址,大小皆为 0xCu 。 + v3:存储 rec_int_print 函数地址用于打印存储的值和类型。 + (v3 + 4):存储 free 函数地址,用于释放 chunk 。 + (v3 + 8):存储用户输入 阅读全文
posted @ 2020-02-29 13:30 PwnKi 阅读(838) 评论(0) 推荐(0) 编辑
摘要: exp 脚本 先 rop 用 write 泄露 got 表地址,计算 system 和 /bin/sh 的偏移,回到漏洞函数再次 rop 调用 system('/bin/sh') 阅读全文
posted @ 2020-02-29 00:09 PwnKi 阅读(1021) 评论(0) 推荐(0) 编辑
摘要: exp 脚本 真的是 baby 难度,直接栈溢出跳转到后门函数 阅读全文
posted @ 2020-02-28 22:42 PwnKi 阅读(1166) 评论(4) 推荐(0) 编辑
摘要: [TOC] 常规检查 逆向分析 create 函数 + (&unk_202040 + 4 i):置 1 记录 chunk 已创建 + (&unk_202044 + 4 i):存放 chunk 的大小 + qword_202048[2 i]:存储 chnk 的地址 write 函数 + sub_E26 阅读全文
posted @ 2020-02-28 22:23 PwnKi 阅读(1121) 评论(0) 推荐(0) 编辑
摘要: [TOC] 利用思路 由于之前 house of spirit 时候已经逆向分析过,这里不再重复 + 伪造一个空闲 chunk。 + 通过 unlink 把 chunk 移到存储 chunk 指针的内存处。 + 覆盖 chunk 0 指针为 atoi 的 got 表地址并泄露。 + 覆盖 atoi 阅读全文
posted @ 2020-02-27 17:54 PwnKi 阅读(1242) 评论(2) 推荐(1) 编辑
摘要: [TOC] 简介 之前在复现自己做出来的题时,一样的思路发现拿不了 shell 了,后来发现是栈迁移的坑。 问题 假设 32 位系统中,漏洞函数可以任意写入 0x00000000。 现在我们已经用双 leave 迁移栈,然后运用 rop 技术泄露 got 表地址,如下: 当我们泄露完地址,从返回地址 阅读全文
posted @ 2020-02-27 17:19 PwnKi 阅读(232) 评论(0) 推荐(0) 编辑
摘要: [TOC] 原理 我们在利用 unlink 所造成的漏洞时,其实就是对 chunk 进行内存布局,然后借助 unlink 操作来达成修改指针的效果。 古老的 unlink 假设现在有物理空间连续的两个 chunk(Q,Nextchunk),其中 Q 处于使用状态、 Nextchunk 处于释放状态。 阅读全文
posted @ 2020-02-26 21:07 PwnKi 阅读(269) 评论(0) 推荐(0) 编辑
摘要: [TOC] 常规检查 逆向分析 add 函数 我们可以看到,top chunk 到 chunk 0 的偏移为 0x60 ,使用 house of force 技巧,我们需要绕过 request2size(req) 宏,这里由于 0x60 是16字节对齐的,所以只要减去 SIZE_SZ 和 MALLO 阅读全文
posted @ 2020-02-26 17:43 PwnKi 阅读(796) 评论(0) 推荐(0) 编辑
摘要: [TOC] 原理 House of Force 是一种堆利用方法,但是并不是说 House of Force 必须得基于堆漏洞来进行利用。如果一个堆(heap based)漏洞想要通过 House of Force 方法进行利用,需要一下条件: + 能够以溢出等方式控制到 top chunk 的 s 阅读全文
posted @ 2020-02-25 21:02 PwnKi 阅读(325) 评论(0) 推荐(0) 编辑