XCTF(攻防世界)—新手web题Write Up

前言:之前一直没有接触过web这方面的题,这次利用暑假时光好好学习,web真的是很有趣,虽然有的题很简单,但可以学习到很多知识,话不多说,做题。

view_source
在这里插入图片描述
用老版火狐浏览器,直接查看源码即可。
XCTF(攻防世界)—新手web题Write Up_第1张图片

get_post
在这里插入图片描述
XCTF(攻防世界)—新手web题Write Up_第2张图片
利用火狐进行传参,即可得出flag。

robots
在这里插入图片描述

做这道题之前,了解一下robots协议,爬虫协议,robots.txt搜索引擎中访问网站的时候要查看的第一个文件,如果有这个文件,robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。

了解robots协议后,做题就好做了,直接访问robots.txt文件。
XCTF(攻防世界)—新手web题Write Up_第3张图片
给了一个PHP文件名,访问一下即可得出flag
XCTF(攻防世界)—新手web题Write Up_第4张图片

backup
在这里插入图片描述
在这里插入图片描述
不知道,百度百科一下
XCTF(攻防世界)—新手web题Write Up_第5张图片
那加上后缀名即http://111.198.29.45:47771/index.php.bak再访问一下,即可得出flag。

cookie
在这里插入图片描述
用burp抓一下包看看在这里插入图片描述
添加后缀名在这里插入图片描述
查看HTTP响应,即可得出flag
XCTF(攻防世界)—新手web题Write Up_第6张图片

disabled_button
在这里插入图片描述
在这里插入图片描述
根据提示,将disabled删除即可点出flag

webshell
在这里插入图片描述
在这里插入图片描述
一句话,用菜刀进行连接
XCTF(攻防世界)—新手web题Write Up_第7张图片
连接成功,即可得出flag
XCTF(攻防世界)—新手web题Write Up_第8张图片

simple_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;
}
?> 

is_numeric() 函数用于检测变量是否为数字或数字字符串。

代码很好理解,传入对应的参数即可得出flag

http://111.198.29.45:52319/?a=a

即可得出在这里插入图片描述

http://111.198.29.45:52319/?b=1236b

即可得出在这里插入图片描述
拼接一下,即可得出flag

command_execution(命令执行)
在这里插入图片描述
做题之前,要先了解一下ping功能,waf等。
ping命令的使用方法及功能

WAF主要防护的是来自对网站源站的动态数据攻击,可防护的攻击类型包括SQL注入、XSS攻击、CSRF攻击、恶意爬虫、扫描器、远程文件包含等攻击,相当于防火墙。

命令执行详解

常见的命令执行

command1 & command2 :先执行command2后执行command1
command1 && command2 :先执行command1后执行command2
command1 | command2 :只执行command2
command1 || command2 :command1执行失败,再执行command2(若command1执行成功,就不再执行command2)

除此之外,我们还要了解一些常用的Linux命令。常用 Linux 命令

了解之后,我们便开始做题。
首先ping一下本地即127.0.0.1
XCTF(攻防世界)—新手web题Write Up_第9张图片
ping通本地后,发现传输三个数据包,接下来就用到我们学到的Linux基本命令
查看一下,三个数据包中是否有flag.txt
输入命令127.0.0.1 & find / -name flag.txt
XCTF(攻防世界)—新手web题Write Up_第10张图片
果然有,再输入命令127.0.0.1 | cat /home/flag.txt查看flag.txt文件,即可得出flag。
这里得了解一下cat命令,用来查看文件内容
XCTF(攻防世界)—新手web题Write Up_第11张图片
在这里插入图片描述

weak_auth( 弱身份验证 )
在这里插入图片描述
XCTF(攻防世界)—新手web题Write Up_第12张图片
试试最常用的admin 123456组合,竟然爆出了flag,真的是弱口令,不过查了其他方法,用爆破的方法也可以做出了,这里记录一下爆破过程。

先在GitHub上下载弱口令字典,用burpsuite进行爆破
XCTF(攻防世界)—新手web题Write Up_第13张图片
用admin作为账号,试试登陆XCTF(攻防世界)—新手web题Write Up_第14张图片
看来账号就是admin,那么就只爆破密码就可以了
密码随便输入一个,抓一下包
XCTF(攻防世界)—新手web题Write Up_第15张图片
在这里插入图片描述
将密码设置为变量
载入字典
XCTF(攻防世界)—新手web题Write Up_第16张图片
在这里插入图片描述
发现到123456时,长度不同,所以密码即为123456,登陆一下即可得出flag

xff_referer
在这里插入图片描述
在这里插入图片描述
在此之前,我们需要了解下

xff——伪造IP地址来源
格式为:
X-Forwarded-For: client1, proxy1, proxy2, proxy3
referer——伪造来源浏览器

伪造XFF头绕过服务器IP过滤
了解之后,便能够做题了
在这里插入图片描述
抓包,根据提示修改xff
XCTF(攻防世界)—新手web题Write Up_第17张图片
此时页面显示必须来自https://www.google.com
根据提示,伪造来源服务器,即可得出flag
XCTF(攻防世界)—新手web题Write Up_第18张图片

simple_js
在这里插入图片描述
打开之后,直接查看源代码,发现一串JS代码

 function dechiffre(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(',');
                var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;
                        k = j + (l) + (n=0);
                        n = tab2.length;
                        for(i = (o=0); i < (k = j = n); i++ ){o = tab[i-l];p += String.fromCharCode((o = tab2[i]));
                                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) );

要做这道题就得看懂JS代码表达的意思,首先来了解代码中出现的一些方法

split() 方法用于把一个字符串分割成字符串数组。
fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。
prompt()方法用于显示可提示用户进行输入的对话框。

XCTF(攻防世界)—新手web题Write Up_第19张图片

了解之后,便可以观察代码了XCTF(攻防世界)—新手web题Write Up_第20张图片
这一部分代码分为两个循环,但是仔细观察的话,第一个循环是将前五个Unicode 值,然后返回一个字符串,写一个简单的python脚本验证下
XCTF(攻防世界)—新手web题Write Up_第21张图片
后一个循环功能是一样的,只不过是把后面的Unicode 值,返回成字符串。
XCTF(攻防世界)—新手web题Write Up_第22张图片
返回的pass为XCTF(攻防世界)—新手web题Write Up_第23张图片
即不管我们输入什么,最终显示都是这个,所以这个是假的密码,那么真正的密码应该就是
在这里插入图片描述
十六进制转化为文本字符
XCTF(攻防世界)—新手web题Write Up_第24张图片
再用简单的python跑一下,即可得出flag
XCTF(攻防世界)—新手web题Write Up_第25张图片

题虽然不是太难,但是可以学习到很多知识,接下来得快点学习python以写脚本用,方便做题。

你可能感兴趣的:(CTF,web)