首页
社区
课程
招聘
[原创]【2019看雪CTF】Q1赛季 第八题 挖宝 WP
发表于: 2019-3-23 21:00 6129

[原创]【2019看雪CTF】Q1赛季 第八题 挖宝 WP

2019-3-23 21:00
6129

这是一题golang编写的pwn题。题目意思是在6*6的空间内挖宝。有三个固定点的宝藏和一个仅凭手速永远也找不到的动态点宝藏。
此题关键在于输入长度没有限制,导出溢出,可修改free span list。可通过改写free span list,将下次分配给输入message的地址控制在当前函数栈的底部附近(栈地址不变,这个是怎么实现的。。。。),以实现rop。其它的就是简单的rop了,程序自带有sys_call调用。(不是太懂tcmalloc)
完整exp如下:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞~
2023-1-28 00:38
最新回复 (4)
雪    币: 3502
活跃值: (1528)
能力值: ( LV15,RANK:1057 )
在线值:
发帖
回帖
粉丝
2
求详细
2019-3-25 11:32
0
雪    币: 16704
活跃值: (7126)
能力值: ( LV13,RANK:923 )
在线值:
发帖
回帖
粉丝
3
po叔还是po叔啊!跪求详解。
2019-3-25 12:07
0
雪    币: 30067
活跃值: (8549)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
4
mark
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// runtime/malloc.go    
func mallocinit() {
    // ...
    limit = 0
    if sys.PtrSize == 8 && (limit == 0 || limit > 1<<30) {
        // ...
        arenaSize := round(_MaxMem, _PageSize)
        bitmapSize = arenaSize / (sys.PtrSize * 8 / 4)
        spansSize = arenaSize / _PageSize * sys.PtrSize
        spansSize = round(spansSize, _PageSize)
        for i := 0; i <= 0x7f; i++ {
            switch {
            case GOARCH == "arm64" && GOOS == "darwin":
                p = uintptr(i)<<40 | uintptrMask&(0x0013<<28)
            case GOARCH == "arm64":
                p = uintptr(i)<<40 | uintptrMask&(0x0040<<32)
            default:
                p = uintptr(i)<<40 | uintptrMask&(0x00c0<<32)
            }
            pSize = bitmapSize + spansSize + arenaSize + _PageSize
            p = uintptr(sysReserve(unsafe.Pointer(p), pSize, &reserved))
            if p != 0 {
                break
            }
        }
    }
     
    // ...
     
    p1 := round(p, _PageSize)
    mheap_.spans = (**mspan)(unsafe.Pointer(p1))
    mheap_.bitmap = p1 + spansSize
    mheap_.arena_start = p1 + (spansSize + bitmapSize) // 0xC820000000
    mheap_.arena_used = mheap_.arena_start
    mheap_.arena_end = p + pSize
    mheap_.arena_reserved = reserved
     
    //...
}

2019-3-25 14:44
1
雪    币: 13713
活跃值: (2846)
能力值: ( LV15,RANK:2663 )
在线值:
发帖
回帖
粉丝
5
我也不太了解。惊现风神,感谢。
2019-3-25 23:52
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册