pwn----做题记录_get_started_3dsctf_2016

2021-03-13
阅读 2 分钟
2.8k
漏洞是典型的栈溢出。需要我们进行填写。最开始向直接跳入get_flag函数,结果不能正确得到结果。看了看其他大佬的EXP,发现要有什么限制,必须维护好栈,所以地找一个函数来退出。于是利用了exit函数

pwn----Fmtstr(二)

2021-03-05
阅读 3 分钟
1.8k
在我们的got表中,存储的是函数的真实地址,调用got表时,实际上是跳到真实地址去执行。所以我们只要(parial下)将got表的地方修改成我们想要函数的实际地址,就可以利用了题ctf-wiki上的pwn3,太长这里就不贴了直接exp

pwn----Fmtstr(一)

2021-03-03
阅读 3 分钟
3.4k
终于进格式化漏洞了,也终于把攻防世界的新手题做完了先说说原理叭叭叭常见的好吧就是print函数,根据格式化字符串来输出信息,可以进行写信息详细请见格式化字符串下面分别举例子(一切的根本是可以控制格式化字符串为你想要的东西)

pwn----fancy_ROP(二)

2021-03-02
阅读 1 分钟
772
...什么也没有,留坑,看完了caspp再来把剩下的和高级的补上,先去看格式化字符串了~~~~

pwn----fancy_ROP(一)

2021-03-02
阅读 4 分钟
1.1k
明显利用溢出控制就可以了,这里理清一下sp的位置关系,首先当sp指向返回地址时候,还有ret没有执行,执行后sp指向向下一个位置,即人为写入的一段命令,这时的ip也指向这段命令,然后向下移动0x28处,这时sp又指向我们在栈上写的代码。之后jmp sp,就会执行这段代码。exp

pwn----做题记录_intoverflow

2021-03-01
阅读 2 分钟
1.6k
做了一下午的攻防世界的题,总算快把新手区的题做完了,这里放一道有收获的题收获是利用整数溢出利用checksec看一看IDA里面的东西 {代码...} 发现有判断,直接进入login {代码...} 发现有俩个读入,而且数目很大再次进入返回函数 {代码...} 这里就是我们要重点利用的地方,由反汇编代码,我们发现s的长度必须在3,8之间...

pwn----medium_ROP(二)

2021-03-01
阅读 6 分钟
1.3k
开始愉快得学习blindROP之旅emmmm,一点点地看完了,因为不怎么了解目标文件结构,有些地方不是很懂,当知道他要做什么事情。然后发现....用别人集成的东西真好,用ida真好复述一下原理判断栈溢出长度

pwn----medium_ROP(一)

2021-02-28
阅读 4 分钟
1k
万能gadget64位下的一个高级东西,通过栈溢出返回至part2处,发现上控制下面的寄存器进而控制上面的寄存器。控制jnz发生偏移,然后返回下面retn继续控制其他的函数

pwn----basic_ROP(二)

2021-02-27
阅读 3 分钟
2.1k
是动态加载里的一个机制,函数在内存中的地址是随机化的,即使程序有 ASLR 保护,也只是针对于地址中间位进行随机,最低的 12 位并不会发生改变,libc.so 动态链接库中的函数之间相对偏移是固定的。

pwn----basic_ROP(一)

2021-02-26
阅读 3 分钟
1.4k
emmmmm用checksec检查后,啥保护都没有因为需要找到可以执行shellcode的地方(不能放gets的返回函数上),所以瞄准了buf2。并且很“巧”是,有个strncpy函数。则可以布局栈从而让bss具有shellcode

pwn----金丝雀

2021-02-26
阅读 2 分钟
2.1k
呜啦啦,这次是canary,意料得进度比较快 了解了一些函数的使用原理,来这里写一下read() extern ssize_t read (int __fd, void *__buf, size_t __nbytes);

第一次学习pwn----stackoverflow

2021-02-25
阅读 2 分钟
1.2k
在x86中,被调函数的参数在返回函数的上面,而在x64,System V AMD64 ABI (Linux、FreeBSD、macOS 等采用) 中前六个整型或指针参数依次保存在 RDI, RSI, RDX, RCX, R8 和 R9 寄存器中,如果还有更多的参数的话才会保存在栈上。利用call命令压栈保存返回地址,再压栈保存主调函数的原bp地址,之后根据需要保存寄存器中的值...