【pwnable.tw】 death_note】的更多相关文章

题目逻辑比较简单,大概增加和删除和打印三个功能: show函数中,打印各日记内容,由于这题没有给出libc文件,应该不需要泄露地址,估计用处不大: delete函数中,正常的free,然后指针修改为null,可能不存在漏洞,唯一的bug在于read_int()函数中 readint函数使用了atoi函数,当输入是“-12”这样的负数时,造成读越界,但是由于在delete函数中,用处不是特别大 最后,add函数 函数的逻辑是在note数组中写入malloc的返回的指针,并且同样用了readint函…
此题的代码量很大,看了一整天的逻辑代码,没发现什么问题... 整个函数的逻辑主要是红框中两个指针的循环赋值和调用,其中第一个指针是主功能函数,第二个数组是子功能函数. 函数的漏洞主要在main函数中,main函数中使用了strtol函数将用户输入转换为字符串,并根据此转换结果,对子函数进行访问. 当用户输入过大或过小时,会导致越界访问的问题,其中,strtol函数的返回值可能为负数. bss段中,用户输入的名称最开始是随机生成的,但用户可以更改.而此字段在函数指针数组上面,也就是说,用户可以通过…
做到这道题的时候正赶上iPhone 8上市,撒花~(虽然不知道为啥) 程序分析: 先进到main函数,比较简单. myCart位于bss段上,是一个长度为0x10. 主要的处理函数是handler函数: 这是一个标准的菜单类题目.挨个函数看下去 list: 这个是各种手机的价格,什么都没有. 再看第二个函数: 这个函数是一个添加购物车的函数,具体采用my_read函数,得到用户输入的商品号,然后用atoi函数进行判断. my_read函数中存在一个问题,在read部分中以\0分割可以输入其他内容…
突然发现已经两个月没写过WP了,愧疚- -... 此题也算一道分数很高的题目,主要考察Shellcode的编写. 又是一道题目逻辑很简单的题. 首先提供了三个函数 查看,删除,添加 查看函数: 此函数中readint()使用atoi进行解析,没有检查小于0的情况,造成越解读,可以泄露libc地址(然并卵) 添加函数中一样有这个问题,并且可以任意写, 显然是一道覆盖got表的题,并且没有开启NX保护,就是可以写shellcode. 查看一下check函数 不太清楚__ctype_b_loc是什么c…
一开始特别懵的一道题. main函数中一共4个功能,openfile.readfile.writefile.closefile. 其中,在最后退出时有一个明显的溢出,是scanf("%s",&name); name位于bss段上,name下面有一个fp用于存储文件指针,可以被覆盖. 再看其他函数: openfile.只有一个简单的输入并打开,保存文件指针在bss段上的fp变量中: readfile,从fp所指的文件中每次读取0x18F字节字节到magicbuf中,这个变量也在b…
一道写shellcode的题目, #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/mman.h> #include <seccomp.h> #include <sys/prctl.h> #include <fcntl.h> #include <unistd.h> #define LENGTH 128 void sa…
Download : http://pwnable.kr/bin/login Running at : nc pwnable.kr 9003 先看看ida里面的逻辑. 比较重要的信息时input变量再bss段上,并且没有PIE保护,这样一来就有了一个已知的地址(这很重要 需要输入的是信息的base64编码,而input变量中存储的是输入信息base解码后的内容. 继续跟踪auth函数,发现了一个溢出. 变量v4放在ebp-8的位置,而最多会复制a1长(a1<=0xC),因此会覆盖了EBP. 尝试…
pwnable.kr第二关第一题: ========================================= Download : http://pwnable.kr/bin/bfDownload : http://pwnable.kr/bin/bf_libc.so Running at : nc pwnable.kr 9001 ========================================== 一人饮酒醉的僵尸?? 这次题目也更偏向于PWN了吧...(?)也没有源代…
pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct tagOBJ{ struct tagOBJ* fd; struct tagOBJ* bk; ]; }OBJ; void shell(){ s…
pwnable的新一题,和堆分配相关. http://pwnable.kr/bin/memcpy.c ssh memcpy@pwnable.kr -p2222 (pw:guest) 我觉得主要考察的是堆块分配问题. 推荐<C和C++安全编码> 首先通过阅读源代码,看一下题目大意. // compiled with : gcc -o memcpy memcpy.c -m32 -lm #include <stdio.h> #include <string.h> #inclu…