文章目录
- BugKuCTF WEB
-
- 一、web2
- 二、计算器
- 三、web基础$_GET
- 四、web基础$_POST
- 五、矛盾
- 六、web3
- 七、域名解析
- 八、你必须让他停下
- 九、变量1
- 十、web5
- 十一、头等舱
- 十二、网站被黑
- 十三、管理员系统
- 十四、web4
- 十五、flag在index里
- 十六、输入密码查看flag
BugKuCTF WEB
平台地址
一、web2
进入网页,查看源代码,在其中找到flag
二、计算器
进入网页,根据题目可得知需要输入运算结果,但限制了输入的数字的个数,查看网页的JS代码,将
maxlength = "1"
,修改为
maxlength = "3"
,再输入结果,即可得到 flag
三、web基础$_GET
进入网页,给了一串代码
$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
分析代码:
通过get传入一个 what ,当what的值为flag时,会输出flag
构造pyload:
http://123.206.87.240:8002/get/?what=flag
四、web基础$_POST
进入网页
$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
分析代码:
通过 POST 的方式传入what,当what的值为flag时,会输出flag
利用 Hackbar 的 POST 或 brupsuit 中添加 POST 传入 what=flag,即可得到flag
五、矛盾
进入网页
$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
分析代码:
通过 GET 的方式传入 num
当 num=1 时,会输出 flag
is_numeric():判断是否为数字
可知,num 的值不以是一个数字,同时还要满足 num=1
php是一个弱类型的语言,只要值符合就可以,所以构造的pyload为:
http://123.206.87.240:8002/get/index1.php?num=1e
也可以为一个数学表达式,如:
六、web3
进入网页,提示flag就在这里
查看网页源代码,拉到最下面有一串Unicode编码(Typora 自动给解码了)
KEY{J2sa42ahJK-HS11III}
进行解码,可得到flag
七、域名解析
小知识点:
域名解析:
域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
hosts文件:
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
需要注意的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。
题目给了 一个是域名
flag.baidu.com
,一个是 IP 地址
123.206.87.240
将 IP 地址与 域名建立联系,使用burpsuite 抓包 123.206.87.240,并将其 host修改为 flag.baidu.com,即可得 flag
八、你必须让他停下
进入网页,不断有图片闪过,查看网页的js代码,有一段提示
flag is here
,当有图片显示出来的时候 js 代码出现了一串 flag{xxxxxxxxx};
要做的便是让 网页停下来,理所当然的用到了burpsuite 抓包,不断地放包,最后会得到flag
九、变量1
进入网页是一串代码:
<?php
error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
$args = $_GET['args'];
if(!preg_match("/^\w+$/",$args)){
die("args error!");
}
eval("var_dump($$args);");
}
?>
代码分析:
通过 GET 的方式传入一个 args
preg_match():进行正则过滤(\w+ 匹配字母、数字、下划线)
eval():对内容做PHP代码处理,同时注意到 括号中有 $$args,这是一个可变变量,涉及到一个知识点
var_dump() :用于输出变量的相关信息。
可变变量:
有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:
一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中 hello 使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。例如:
这时,两个变量都被定义了:$a 的内容是"hello"并且 $hello 的内容是"world"。因此,以下语句:
与以下语句输出完全相同的结果:
它们都会输出:hello world。
根据题目,我们可能需要变量
PHP的一些常见变量
- $_POST [用于接收post提交的数据]
- $_GET [用于获取url地址栏的参数数据]
- $_FILES [用于文件就收的处理img 最常见]
- $_COOKIE [用于获取与setCookie()中的name 值]
- $_SESSION [用于存储session的值或获取session中的值]
- $_REQUEST [具有get,post的功能,但比较慢]
- SERVER[是预定义服务器变量的一种,所有SERVER[是预定义服务器变量的一种,所有_SERVER [是预定义服务器变量的一种,所有_SERVER开头的都
- $GLOBALS [一个包含了全部变量的全局组合数组]
- $_ENV [ 是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它]
所以,我们构造pyload
即可得到flag
十、web5
根据题目提示,可能会用到 JSPFUCK
JSPFUCK:
在黑客行为中,你的js代码可能被关键词检测,于是考虑躲避关键词检测的想法,例如 eval等关键词。
1、想了各种方法来规避这个检测。
2、把方法写成通用的程序。
3、把包含的字符做到极致,最后只剩下 ()+[]! 这六个字符。
用途:
1、脚本注入时防止过滤
2、一定程度加密关键代码(生成代码很长,不适合加密大量代码。只能一定程度上加密,不能依赖)
3、装逼用(我最中意的用途)
查看网页的源代码,可看到有一串 JSPFUCK 的代码
放到网页控制台中运行,即可得到flag
十一、头等舱
进入网页,啥都没有
查看网页的响应头,可发现flag
十二、网站被黑
使用御剑扫描网站的后台,可发现一个
打开后,需要密码登陆,这就涉及到使用 brupsuite 进行爆破密码,需要一个强大的字典
自行爆破密码,将爆破得到的密码输入,可得到flag
十三、管理员系统
盲猜管理员用户名为 admin,密码随便输入,但网页显示为 IP禁止访问,需联系本地管理员,既然如此,便将访问地址改为本地的 ,使用 burpsuite
X-Forwarded-For: 127.0.0.1
然后进行密码爆破,使用爆破得到的密码进行登录,可得到flag
十四、web4
题目提示查看源代码,进去瞅了瞅发现两串 unescape 编码
var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';
var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';
eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));
由 eval 中的可知 flag为url编码:
%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62%35%34%61%61%32%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b
的解码
对其进行解码后,可获得flag
十五、flag在index里
点击页面给的 链接,跳转到了一个新的页面
http://123.206.87.240:8005/post/index.php?file=show.php
看到file=show.php 猜测具有文件包含
这时我们可以采用 php的相关伪协议构造pyload
php://filter/read=convert.base64-encode/resource=[文件名]
读取文件源码
http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
页面出现一串 base64编码,进行解码后,可得到flag
十六、输入密码查看flag
进入网页,需要我们输入密码,并且给出了提示为五位数字,直接进行爆破,得到密码为
13579,输入密码,可得到flag