堆gdb调试命令
1.1bins
2.1vis
3.123x/gx 0x00000000x/i 0x00000000x/s 0x00000000
4.1p &__malloc_hook
栈迁移
actf_2019_babystack步骤1.例行检查,64位程序,开启了nx保护
2.64位ida载入
3.栈迁移主要就是使用的leave和retn这两条指令,两条指令的实质是12leave:move rbp,rsp;pop rbpretn:pop rdi
4.exp12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061from pwn import*from LibcSearcher import*r=process('./ACTF_2019_babystack')elf=ELF('./ACTF_2019_babystack')libc=ELF('/lib/x86_64-linux-gnu/libc.so.6')pop_rdi=0x0000000000400ad3 #ROPgadget --binary ACTF_2019_babystack |g ...
recvuntil类的使用
接收远端传回的数据1234567891011interactive() : 在取得shell之后使用,直接进行交互,相当于回到shell的模式。recv(numb=字节大小, timeout=default) : 接收指定字节数。recvall() : 一直接收直到达到文件EOF。recvline(keepends=True) : 接收一行,keepends为是否保留行尾的\n。recvuntil(delims, drop=False) : 一直读到delims的pattern出现为止。recvrepeat(timeout=default) : 持续接收直到EOF或timeout。
详细讲解p64当要接受%p的数据时 (以buu——actf_2019_babystack部分为例)1234567891011121314151617181920212223242526272829303132signed __int64 __fastcall main(__int64 a1, char **a2, char **a3){ signed __int64 result; // ra ...
pwntools--SROP工具类SigreturnFrame使用详解
SROP–SigreturnFrame概念这里简单介绍下SROP的概念,主要是帮助读者理解和使用pwntools提供的SigreturnFrame工具实现漏洞利用。 我们都知道ROP吧,即利用.text段中的gadgets,这些gadgets都以ret指令作为结尾,以此串联起来实现我们想要的系统调用进而达到获取目标主机shell的目的。那么如何判断是哪种系统调用呢?这里是根据寄存器的值来进行判断的,只要将相应的寄存器值设置为对应参数,然后执行syscall或者int 80指令就可以实现相应的函数功能。这里推荐一个实现系统调用如何设置寄存器对应参数的网站和一个具体的例子:设置寄存器实现execve系统调用的博客。 好了,究其本质,ROP方法的思路都是通过gadgets设置寄存器的值来实现漏洞利用的,SROP也是从属于ROP方法中的一员。它利用了Linux系统信号处理过程中的漏洞,即在信号处理过程中会将用户态上下文环境及寄存器的值保存在用户态的栈中,处理完后再读取栈中的数据恢复寄存器的值。sigreturn系统调用就是处理完后那一阶段执行的系统调用,它会读取当前栈空间中的数据作为寄存器 ...
函数参数寄存器,orw
12execve("/bin/sh", 0, 0) #59 rdi rsi rdx
orwsyscall: rax为2时open ,为1时write,为0时read。
12read( fd, buf, nbytes) rdi rsi rdx
12open(file, oflag, vararg) rdi rsi rdx
12write(fd, buf ,n) rdi rsi rdx
get_started_3dsctf_2016
这题是buu上的一道简单的栈溢出,这次我直接写shellcode。
1.日常checksec12345678tianmai@ubuntu:~/Desktop/buuctf$ checksec get1[*] '/home/tianmai/Desktop/buuctf/get1' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)
发现是32位,进开启了堆栈不可执行。
2.IDA主函数是
12345678int __cdecl main(int argc, const char **argv, const char **envp){ char v4; // [esp+4h] [ebp-38h] printf("Qual a palavrinha magica? ", v4); gets(&v4); ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment