![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络攻防
文章平均质量分 70
liucc09
这个作者很懒,什么都没留下…
展开
-
攻防世界 pwn babyheap writeup
分析这题题目中显示是Wellcome To the 2.27 Heap World,而且只能申请7个chunk,理论上应该是一道libc2.27 tcache的题,但因为在交互过程中触发了fastbin的double free错误,所以攻防世界上应该是把这题部署在了libc2.23的环境中,但无所谓,下面libc2.27和libc2.23的解法都会给出。libc2.27解法首先我们要泄漏libc的地址,tcache肯定是无法泄漏libc的,因此我们考虑使用unsorted bin来泄漏,这题有off原创 2021-01-19 15:50:06 · 501 阅读 · 1 评论 -
*CTF2021部分题目解题思路及exp
babyheap这是pwn里面唯一的传统heap题,使用的是新的libc2.27,chunk被free到tcache后bk位置会被写入一个地址,再次free时如果bk有这个地址会和tcache里的所有chunk挨个比较,发现一样的就报double free tcache 2,因此要再free之后把bk置零就行了。题目第一个坑,在edit方法里面读入数据是从chunk+8的位置的开始写,也就是不让修改fd,这导致虽然有UAF,也无法很方便的实现任意地址写。解决方法为构造重叠的chunk,从而改到tcach原创 2021-01-18 16:04:01 · 3085 阅读 · 0 评论 -
安装one_gadget
install卸载已有ruby和one_gadgetsudo gem uninstall one_gadgetsudo apt remove gem ruby安装ruby-installwget -O ruby-install-0.8.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.8.1.tar.gztar -xzvf ruby-install-0.8.1.tar.gzcd ruby-install-0.原创 2021-01-09 09:01:07 · 878 阅读 · 1 评论 -
攻防世界welpwn解题方法
分析题目很程序很简单,输入字符串,将遇到\x00前的字符拷贝给s2数组,如果拷贝数量大于s2在栈上的空间就会发生溢出,可以覆盖到ret的位置从而控制程序流。需要注意的是覆盖ret用的地址肯定会包含\x00,因此构造的rop链会断开,所以需要想办法。解决办法为通过一串pop ret指令将栈上内容弹出,然后直接连接到buf所在位置继续rop链的执行。输入buf后栈空间如下所示,可以看出在ret指令的位置填入一个具有四个pop再加一个ret的地址刚好能弹出buf中已经用掉的4*0x8个字节,然后就能续上原创 2021-01-07 11:22:10 · 355 阅读 · 1 评论 -
CTF泄漏libc基址的方法
泄漏libc重点: glibc 的后三位是固定的main_arena泄漏法main_arena存储在libc.so.6文件的.data段,通过这个偏移我们就可以获取libc的基址,使用IDA打开libc文件,然后搜索函数malloc_trim()[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a8DgTYcd-1609837106507)(D:\04_笔记\images\main_arena.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接原创 2021-01-05 17:01:31 · 3954 阅读 · 0 评论 -
CTF PWN Fastbin堆溢出入门
目标程序及EXP下载解题思路添加新武器时会在偏移52个字节的地方存下上一个武器的内存地址如下:*((_DWORD *)dword_804A288 + 13) = v1;//13个DWORD就是13*4=52字节输入武器名时存在溢出,因此可以覆盖这个地址,指向另一片内存;提交订单时会通过单向链表的方式free各个武器的内存区域,由于第1步中可以修改武器链表的上一个武器内存地址,因此可以释放一个我们指定的内存到fastbin中;我们指定的内存肯定得是我们可以控制的内存,例如程序中的mess原创 2020-12-12 14:54:46 · 588 阅读 · 0 评论 -
攻防世界PWN题解答
level3程序分析通过ida打开程序,F5键生成C的代码如下:int __cdecl main(int argc, const char **argv, const char **envp){ vulnerable_function(); write(1, "Hello, World!\n", 0xEu); return 0;}ssize_t vulnerable_function(){ char buf; // [esp+0h] [ebp-88h] write(1,原创 2020-12-03 12:04:47 · 850 阅读 · 0 评论 -
printf格式化字符串漏洞原理解析
读任意地址printf("%x")只给格式化字符串,而不给参数,会导致内存泄漏从而读到内存中其他地址的数据。%N$x参数可以以16进制方式打印第N个参数的内容,通过修改N,我们可以遍历栈上的所有内容。通过%N$s参数,我们可以将第N个参数对应的内容作为字符串的地址从而获得内存中任意位置的内容。方法如下如果我们使用的打印语句为:printf("AAAA%x")那么栈的内容如下:栈底…x%AAAA…栈顶使用printf("A原创 2020-11-25 20:42:16 · 6024 阅读 · 1 评论 -
攻防世界REVERSE新手题解答
csaw2013reversing2程序分析使用IDA打开程序,F5键利用HexRay工具生成可读代码如下:int __cdecl __noreturn main(int argc, const char **argv, const char **envp){ int v3; // ecx CHAR *lpMem; // [esp+8h] [ebp-Ch] HANDLE hHeap; // [esp+10h] [ebp-4h] hHeap = HeapCreate(0x40000u原创 2020-11-25 10:23:23 · 933 阅读 · 1 评论 -
windows上通过IDA远程调试linux程序
IDA功能很强大,但是往多个平台上部署也很烦人,但幸好IDA有远程调试功能,可以只在windows主机上安装IDA,然后装一个linux虚拟机,将需要调试的可执行文件放到linux虚拟机中,通过远程调试功能对其进行调试。步骤如下将IDA安装目录dbgsrv文件夹里的linux_server64拷贝到64位的linux虚拟机中;通过命令chmod +x linux_server64为程序添加可执行权限;通过命令./linux_server64开启服务端;在IDA中点击Debugger,添加Remot原创 2020-11-25 10:47:06 · 1260 阅读 · 0 评论