摘要:
什么是Shellcode: shellcode是我们写入到程序的一段可执行代码,通过执行这串代码我们可以拿到靶机的shell,从而可以干你想干的事。不过现在的题目一般都对可以写入的位置做了限制,既可写不可执行。但如果是一道专门的shellcode题,则会在某一段加入可写可执行的权限,或则利用mpro 阅读全文
摘要:
题外:学pwn快三个月了,从刚开始的师傅领进门到现在的个人修行,期间经历了太多的辛酸,在2019年10月12日晚9:40分,我终于做出了我的第一个堆题(原谅我这个菜鸡的不易),这道题是关于unlink的利用,特写此博客记录自己的所得。(笔者的环境是64位系统) Unlink原理: 假设申请了两个大小 阅读全文
摘要:
(一):partial write 开了PIE保护的程序,其低12位地址是固定的,所以我们可以采用partial write。但是我们不能写入一个半字节,所以选择写入两个字节,倒数地位进行爆破,范围是0到f,例如: 列表里是第二位字节可能的值,使用循环进行爆破。 (二):泄露地址 PIE 保护机制, 阅读全文
摘要:
前言: 最近刚学堆,特写此文巩固一下知识(水平有限,本文可能有错误,望读者留心)。 堆的结构: 在Linux中,堆是使用glibc的ptmalloc2的分配方式,而malloc本质上都是通过brk或mmap实现的。通过brk分配的堆其起始地址在数据段的结尾处,而通过mmap分配的堆起始地址则在数据段 阅读全文
摘要:
2019年8月6日: 注意数组下标越界造成的漏洞 地址可以分批输入 system("sh")也可以执行 例题:攻防世界 pwn 高阶 stack2 js shell 例题:攻防世界 pwn 高阶 monkey 2019年8月9日: ret2_runtime_resolve 大致流程: 修改 .plt 阅读全文
摘要:
查看原题代码: 知道我们只要使输入的值等于 key1()+key2()+key3() ,就能拿到flag key1() 题目提供的汇编代码: 核心代码为: 意思是把pc寄存器的值传递给r3寄存器,再把r3寄存器的值传递给r0,然后r0寄存器的值作为函数的返回值 在ARM汇编指令中,寄存器pc的值为当 阅读全文
摘要:
这题只要多调试几次就会发现其产生的随机数是固定的一个值,那么就可以通过这个随机值和0xdeadbeef反推出我们要输入的数据, 最后附上这题的flag:flag:Mommy, I thought libc random isunpredictable… 阅读全文
摘要:
使用ssh passcode@pwnable.kr -p2222登录到远程服务器, ls -l 查看目录下的文件, 先运行一下passcode,发现没啥,就直接打开原代码, 观察知重点是在登录函数,只要我们输入值的符合条件就可以拿到flag。但是由于 scanf()函数少了一个 ‘&’ 符号,所以这 阅读全文
摘要:
拿到文件,先运行一下,输出: 用python查看文件是否有什么保护, 发现文件加了壳(Packed with UPX),所以使用 upx flag -d 进行脱壳,根据题目提示知道要二进制分析,所以把脱壳后的文件用IDA打开 双击上图红色箭头指的 flag 再双击箭头指向的灰色文字 拿到flag 阅读全文
摘要:
连接到远程服务器:ssh input2@pwnable.kr -p2222 查看题目所给的代码,根据题目的要求我们要给出所有符合条件的输入才能拿到flag,本来想在输入上动点歪脑筋,结果输入有字节数的限制,然后再查看一下程序是否有保护 发现有栈溢出和数据执行保护,就绝了走捷径的心思。 查看代码知道有 阅读全文