XCTF 攻防世界 web 新手练习

XCTFweb新手练习题目连接:https://adworld.xctf.org.cn/task/task_list?type=web&number=3&grade=0php

0x01 view_source

题目连接:http://111.198.29.45:51846/
题目描述:X老师让小宁同窗查看一个网页的源代码,但小宁同窗发现鼠标右键好像无论用了。
根据题目提示和标题,咱们能够知道flag在网页源代码中,然而网页中咱们没法使用鼠标右键点击查看源码,咱们有如下两种方法
方法一
按F12,在设置中禁用JavaScript,就能够右键查看源码了在这里插入图片描述
方法二
在url前面加上view-source:便可查看网页源码html

view-source:http://111.198.29.45:51846/

在这里插入图片描述
flag:cyberpeace{ae515780d11a5ba6093ab97272733031}前端

0x02 get_post

题目连接:http://111.198.29.45:43568/
题目描述:X老师告诉小宁同窗HTTP一般使用两种请求方法,你知道是哪两种吗?
在这里插入图片描述
打开网页,要求咱们用GET方式提交一个值为1的变量a
咱们在url后面加上?a=1linux

http://111.198.29.45:43568/?a=1

在这里插入图片描述
让咱们用POST方法提交一个值为2的变量b
用burp抓包
在这里插入图片描述
这是抓包的结果
1.咱们将头中第一行改为POST 并加上urlweb

POST http://111.198.29.45:43568/?a=1 HTTP/1.1

2.POST头部数据格式声明shell

Content-Type: application/x-www-form-urlencoded

3.post变量b=2windows

b=2

便可获得flag
在这里插入图片描述
flag:cyberpeace{2ba85496b616b36d30c6ad92ff515de3}cookie

0x03 robots

题目连接:http://111.198.29.45:49016/
题目描述:X老师上课讲了Robots协议,小宁同窗却上课打了瞌睡,赶忙来教教小宁Robots协议是什么吧。
Robots.txt 是存放在站点根目录下的一个纯文本文件,而且该文件是能够经过互联网进行访问的。虽然它的设置很简单,可是做用却很强大。它能够指定搜索引擎蜘蛛只抓取指定的内容,或者是禁止搜索引擎蜘蛛抓取网站的部分或所有内容。
因此咱们在url后面加上robots.txt便可查看里面的内容app

http://111.198.29.45:49016/robots.txt

在这里插入图片描述
能够看到有个f1ag_1s_h3re.php,打开便可看到flagsvg

http://111.198.29.45:49016/f1ag_1s_h3re.php

在这里插入图片描述
flag:cyberpeace{325d76a58b7efde0ecc0976f86b30bbd}

0x04 backup

题目连接:http://111.198.29.45:57896/
题目描述:X老师忘记删除备份文件,他派小宁同窗去把备份文件找出来,一块儿来帮小宁同窗吧!
在这里插入图片描述
备份文件通常是以下格式
.rar
.zip
.7z
.tar
.gz
.bak
.swp
.txt
.html
一一尝试能够知道index.php的备份文件名为index.php.bak
.bak是备份文件,为文件格式扩展名,这类文件通常在.bak前面加上应该有原来的扩展名好比windows.dll.bak,或是windows_dll.bak,有的则是由原文件的后缀名和bak混合而成

http://111.198.29.45:57896/index.php.bak

在这里插入图片描述
用记事本打开便可获得flag
在这里插入图片描述
flag:cyberpeace{b6dc423e4101660b2193b6d780a0b07b}

0x05 cookie

题目连接:http://111.198.29.45:59633/
题目描述:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
点开连接
在这里插入图片描述
按F12,在控制台中输入

alert(document.cookie)

弹出cookie在这里插入图片描述
提示有个cookie.php

http://111.198.29.45:59633/cookie.php

进入后提示看http响应
在这里插入图片描述
抓包,响应头中找到flag
在这里插入图片描述
flag:cyberpeace{4488ed459f0ab920544fc0430c430ccb}

0x06 disabled_button

题目连接:http://111.198.29.45:38783/
题目描述:X老师今天上课讲了前端知识,而后给了你们一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
在这里插入图片描述
咱们按F12在这里插入图片描述
在左下角的选取按钮选取中间没法点击的flag按钮,在查看器中查看代码
在这里插入图片描述
双击标签中的disabled=" "将其去掉,中间的按钮就能够点击了,点击以后便可获得flag
在这里插入图片描述
flag:cyberpeace{e1cf3688c97e71e5dffb2614e037afc7}

0x07 simple_js

题目连接:http://111.198.29.45:35187/
题目描述:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
进入后,要求输入密码,随便输入一个,提示错误
在这里插入图片描述
查看源码

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

简单分析以后咱们发现,在dechiffre()函数中,并无使用到咱们输入的pass_enc变量,也就是说咱们不管输入的密码是多少,输出的都是同样的
其实输出值就是
pass="70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65"
转换成ascii码

F,A,U,X, ,P,A,S,S,W,O,R,D, ,H,A,H,A

咱们看到下面有一串

"\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"

咱们将其转化成十进制

"55,56,54,79,115,69,114,116,107,49,50"

跟变量pass很像,咱们将其转化成ascii码

"7,8,6,O,s,E,r,t,k,1,2"

根据题目描述flag格式为Cyberpeace{xxxxxxxxx},提交后提交成功
flag:Cyberpeace{786OsErtk12}

0x08 xff_referer

题目连接:http://111.198.29.45:52190/
题目描述:X老师告诉小宁其实xff和referer是能够伪造的。
进入后提示ip地址必须为123.123.123.123
抓包,修改http头

X-Forwarded-For:123.123.123.123

在这里插入图片描述
又提示咱们必须来自https://www.google.com
修改头

Referer:https://www.google.com

在响应里看到flag
在这里插入图片描述
flag:cyberpeace{f02319a2ebf8ab3e562edab690a71575}

0x09 weak_auth

题目连接:http://111.198.29.45:49429/
题目描述:小宁写了一个登录验证页面,随手就设了一个密码。
咱们随便输入一个帐号密码
提示咱们应该用admin为帐号登录
在这里插入图片描述
在源码中咱们能够看到提示须要字典,咱们能够猜想这道题须要暴力破解
在这里插入图片描述
抓包将password设为变量,载入字典,进行爆破(字典不须要太复杂,这里密码很是简单)
在这里插入图片描述
这里能够看到密码123456返回的长度跟其余密码不同
在这里插入图片描述
咱们用123456做为密码进行登陆,获得flag
在这里插入图片描述
flag:cyberpeace{9ea02cbfbf8c167a3e0520bcb213d9fc}

0x0a webshell

题目连接:http://111.198.29.45:58974/
题目描述:小宁百度了php一句话,觉着颇有意思,而且把它放在index.php里。
在这里插入图片描述
能够看到一句话木马中口令为shell
用菜刀链接

http://111.198.29.45:58974/index.php

在这里插入图片描述
能够看到一个flag.txt,打开便可获得flag
在这里插入图片描述

flag:cyberpeace{74fea3cfddba6bfdc6bfba5b38300b08}

0x0b command_execution

题目连接:http://111.198.29.45:39476/
题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是很是危险的,你知道为何吗。
在这里插入图片描述
咱们ping一下这个题目的地址,能够看到下面的命令

ping -c 3 111.198.29.45

根据下面返回的内容,咱们大概能够猜想系统是linux系统,咱们尝试在命令后面拼接 ls,查看下目录文件

111.198.29.45&&ls /

在这里插入图片描述
发现是能够在后面拼接命令的,依次打开咱们能够在home文件夹中找到一个flag.txt的文件,打开后便可获得flag

ping -c 3 111.198.29.45&&ls /home
ping -c 3 111.198.29.45&&cat /home/flag.txt

在这里插入图片描述
flag:cyberpeace{d8580c990161b96eb46aa5ce2ce51b6c}

0x0c simple_php

题目连接:http://111.198.29.45:43030/
题目描述:小宁据说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;
}
?>

分析下代码,要求输入a,b,要求a==0而a不为0,这里咱们能够令a=0+任意字母
b不能为数字且b要大于1234,令b=12345+任意字母

http://111.198.29.45:43030/?a=0a&&b=12345a

在这里插入图片描述
flag: <?php
show_source(FILE);
include(“config.php”);
a = @ a=@ _GET[‘a’];
b = @ b=@ _GET[‘b’];
if($a==0 and $a){
echo KaTeX parse error: Expected 'EOF', got '}' at position 8: flag1; }̲ if(is_numeric(b)){
exit();
}
if($b>1234){
echo $flag2;
}
?>

Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}