BUGKU靶场解题记录之web

2024-02-28 19:35:57 浏览数 (1)

前言:

> 学习CTF已经有一段时间了,陆陆续续也做了不少题。为了准备前段时间的全国大学生信息安全大赛,又把许多题目重新看过一遍。现在也终于闲下来一两天,正好趁这个机会把在bugku靶场做出的题目整理一下。


web1

打开看到一大堆滑稽,F12查看网页源代码就能发现flag,明显的送分题。

web2

题目描述输入验证码即可得到flag,正常输入发现只能输入1位,F12,将maxlength=”1”改为maxlength=”2”即可正确输入,得到flag。还是送分题。

代码语言:javascript复制
flag{ea008b7aaab0d3ea27c8580df13f52c3}
web3

根据题意构造url即可得到flag

代码语言:javascript复制
http://114.67.246.176:14287/?what=flag
flag{45240136ecbcb3c6db9d1dcb756ced4b}
web4

跟上一道题类似,只不过这次是post,使用Firefox插架Max HackBar输入what=flag得到flag

代码语言:javascript复制
flag{1e7a6931002d229ac37085a846d21e6d} 
web5

题目描述矛盾,打开链接看到相应php代码描述。if=($num==1) 意思就是num等于数字1就会打印flag 但是is_numeric函数检测数字意味着,既要是数字1,又不能是数字。 在评论区有这个介绍。

PHP一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。 在PHP中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等。

题目中正好使用的是==号我们可以构造类似1a的数字加字母的组合。 构建url得到flag: flag{2b16dd84ae5d35c74fe16c759849b871}

web6

直接查看网页源代码,得到unicode编码解码得到相flag。 flag{f41c9ed6534a088591cfc7cb118d8b46}

web7 你必须让他停下来

右键查看源代码,然后一直刷新源代码的页面,就能得到flag,当然有burpsuit抓包,然后sendtorepeter,一直send也一样,在第10张jpg的响应里边就有flag. 这两种方法本质上是一样的。

代码语言:javascript复制
flag{222c6ea6e3f1b78d0e47688932d6c097}

在补充一点提交flag时要记得把代理关上。

web8 文件包含
代码语言:javascript复制
 <?php
    include "flag.php";
    $a = @$_REQUEST['hello'];
    eval( "var_dump($a);");
    show_source(__FILE__);
?> 

审计PHP代码得到以下信息。

request函数表明可以任选get或post方法提交 helloeval() 函数把字符串按照 PHP 代码来执行 show_source用来返回文件内容 include函数会将flag.php包含在该文件中

由此我们可以构建url /?hello=show_source(‘flag.php’)或者?hello=file(‘flag.php’)均能得到flag。flag{e5d1a21b2cf1819415ce4ba106e868d9}

web9
代码语言:javascript复制
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);");}
?> 

php代码实际上就是最大的提示。

flag in the variable:提示flag在变量里面 preg_match:使用正则表达式匹配,/^w $/ 表明只能输入数字和英文字母及下划线 说明此时只能用全局变量查看GLOBALS

构造?args=GLOBALS得到flag: flag{6ee63ee40bbaf7d0992a373217f73f43}

web10 头等舱

我觉得这道题真的是送分的,F12查看网络在响应头里就能得到flag。当然抓包也一样但是麻烦了。

web 11 网站被黑

描  述: 网站被黑了 黑客会不会留下后门

既然提示了后门的存在就用,扫描工具扫描下。利用御剑扫描,扫出来两个.php一个是那个黑页,另一个是一张登录界面。 在得到网址后进项抓包,直接用burp suit自带的爆破功能爆破下就OK了。(注burp suite的社区版爆破功能好像不是很全,推荐去找一个别人破解的专业版)

web 12 本地管理员

查看网页源代码在一堆n后面有个base64,解码得到管理员密码,账户盲猜admin登录,提示IP禁止访问,请联系本地管理员登陆,IP已被记录.使用本地管理员登录,就要进行IP伪造,编辑消息头,X-Forwarded-For:127.0.0.1。得到flag

game1

一道游戏题,正常来说游戏应该是杂项吧,这一次的游戏题有一说一竟然让我忘了我是来做题的。 在评论区得到大佬的提示,这一道游戏题分数上限是99999,使用burp suite抓包,在最后出成绩时能看到

GET /score.php?score=200&ip=223.104.190.201&sign=zMMjAw== HTTP/1.1

sign=zMMjAw像是base64加密,但是直接解算不出来,多玩几次游戏,发现zM是一直都有的,对后面的部分解码正是游戏得到的分数。构造url

score.php?score=99999&ip=223.104.190.201&sign=zMOTk5OTk==

得到flag。flag{78544bfa1e21dcf4dcbd7488870b267f}

web13 看看源码吧
代码语言:javascript复制
var p1 = 'function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b';
var p2 = 'aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;';
eval(unescape(p1)   unescape('54aa2'   p2));

使用在线工具解码得到三段url按照要求进行拼接

function checkSubmit(){var a=document.getElementById(“password”);if(“undefined”!=typeof a){if(“67d709b2b54aa2aa648cf6e87a7114f1”==a.value)return!0;alert(“Error”);a.focus();return!1}}document.getElementById(“levelQuest”).onsubmit=checkSubmit;

中间那一段就是要在网页上提交的东西,提交得到flag;

flag{f51a5a7335f538b979ac5eaf43e4cad6}

web14

怎么说呢?这道题考察了文件包含&PHP伪协议这个作者整理的很好,可以去借鉴借鉴。 构造一个url

php?file=php://filter/read=convert.base64-encode/resource=index.php 读取目标服务器文件内容,并讲这些内容进行base64编码,我们只需要解码就可以了。

代码语言:javascript复制
DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2U4M2VlOWM2YWY5MjdkYWFmMjAyMTExNjE1ZWJjOWYxfQ0KPz4NCjwvaHRtbD4NCg

对着一长串进行解码得到

代码语言:javascript复制
<?php
	error_reporting(0);
	if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
	$file=$_GET['file'];
	if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
		echo "Oh no!";
		exit();
	}
	include($file); 
//flag:flag{e83ee9c6af927daaf202111615ebc9f1}
?>
</html>

得到flag。

0 人点赞