xctf攻防世界-新手练习区(web) Writeup


xctf官方网站:https://www.xctf.org.cn/


view_source


题目描述:
X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。

以下方法都可以查看源代码

ctrl+u
F12
view-source:http://地址

在这里插入图片描述

robots

题目描述:
X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。

查看robots.txt文件,可以看到一个php文件

在这里插入图片描述
直接访问php获取flag

backup


题目描述:
X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!

提示备份文件,可以尝试访问zip,bak,.index.php这一类的文件

在这里插入图片描述
访问index.php.bat后下载查看内容即可获取flag


cookie


题目描述:
X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’

以火狐为例,F12打开开发者工具,点击内存,可以看到cookie中存在一个php文件

在这里插入图片描述
然后页面提示查看响应头:

在这里插入图片描述
利用burp抓包,发送到repeater模块,可以发现响应头中存在flag

在这里插入图片描述


disabled_button


题目描述:
X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?

提示前端,查看前端代码,将disabled属性删除

在这里插入图片描述
删除后直接点击按钮获取flag

在这里插入图片描述


weak_auth


题目描述:
小宁写了一个登陆验证页面,随手就设了一个密码。

随意输入一个密码后,跳转到一个页面。提示密码错误,然后我们查看源代码,发现提示我们需要一个字典。

在这里插入图片描述
利用burp爆破,从网上收集top100密码字典。爆破出密码为123456,并且返回包带着flag

在这里插入图片描述


simple_php


题目描述:
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    
    
    echo $flag1;
}
if(is_numeric($b)){
    
    
    exit();
}
if($b>1234){
    
    
    echo $flag2;
}
?>
payload:   ?a=a&b[]=1234

在这里插入图片描述


get_post


题目描述:
X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?

进题目后提示:

在这里插入图片描述
url提交?a=1,利用hackbar提交post变量b=2获取flag
在这里插入图片描述


xff_referer


题目描述:
X老师告诉小宁其实xff和referer是可以伪造的。

打开题目,提示ip地址需要为123.123.123.123
在这里插入图片描述
火狐插件商城搜索X-Forwarded-For Header

在这里插入图片描述
下载好后,设置ip为123.123.123.123,再次刷新题目后,提示我们需要来自google

在这里插入图片描述
利用burp抓包,修改响应头,增加Referer: https://www.google.com

在这里插入图片描述


webshell


题目描述:
小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。

进入靶机,发现页面提示
在这里插入图片描述
可以用菜刀链接,因为我懒得打开菜刀了,直接hackbar利用system函数查看flag

shell=system('ls');

在这里插入图片描述
发现flag.txt文件,利用cat命令查看flag

shell=system('cat flag.txt');

在这里插入图片描述


command_execution


题目描述:
小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。

打开靶机,页面提示我们可以去ping一个地址,我们输入127.0.0.1 | ls
在这里插入图片描述

查看home目录,发现一个flag文件

|ls ../../../../home

在这里插入图片描述

查看flag

|cat ../../../../home/flag.txt

在这里插入图片描述


simple_js


题目描述:
小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )

输入密码肯定不对的,我们输入进去之后,查看源代码,可以发现一个加密字符串的JavaScript脚本

    <script type="text/javascript">
    function dechiffre(pass_enc){
    
    #我们输入的东西带入了pass_enc
        var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
        var tab  = pass_enc.split(',');#用,切割 赋值到tab
        var tab2 = pass.split(',');#将pass切割 放到tab2
        var i,j,k,l=0,m,n,o,p = "";#创建变量
       	i = 0;
       	j = tab.length;#j 是我们输入进去的数字的数量
        k = j + (l) + (n=0);
        n = tab2.length;#18
        for(i = (o=0); i < (k = j = n); i++ ){
    
    #i=0 i和我们k(我们输入的数量)n(pass字符串长度)
            o = tab[i-l];#o=我们输入的最后一个
            p += String.fromCharCode((o = tab2[i]));#o=70 F
                   if(i == 5)break;
        }
        for(i = (o=0); i < (k = j = n); i++ ){
    
    
            o = tab[i-l];
            if(i > 5 && i < k-1)
            p += String.fromCharCode((o = tab2[i]));
        }
        p += String.fromCharCode(tab2[17]);
        pass = p;
        return pass;
    }
    String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));

    h = window.prompt('Enter password');
    alert( dechiffre(h) );

</script>

我们来将代码一步一步分析:

function dechiffre(pass_enc) 定义一个函数,传输pass_enc变量到函数里执行

var pass = "" 定义一个变量为pass,内容为 70,65,85...

split(',') 以逗号为分割符,分割字符串

String.fromCharCode 将 Unicode 编码转为一个字符

后面有两个for循环,分析之后我才知道,我们不管输入什么 都会输出FAUX PASSWORD HAHA

flag并不在dechiffre函数中,转移分析以下字符串:

String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));

将16进制转换成字符

在这里插入图片描述
然后控制台利用String.fromCharCode将 Unicode 编码转为字符 ,即可获取flag。

String.fromCharCode(55,56,54,79,115,69,114,116,107,49,50)

在这里插入图片描述
结合题目所给提示,给flag加上格式后为 Cyberpeace{786OsErtk12}

猜你喜欢

转载自blog.csdn.net/weixin_41924764/article/details/109501120