天天看点

BugKuCTF WEB ——持续更新BugKuCTF WEB

文章目录

  • 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&#125
           

进行解码,可得到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