XCTFWeb新手练习区

Web-新手练习区

0.some words

这个write up是做完之后才补的,所以好多题都没有截图,如果想要看图的话,可以直接去官方的wp(题目右上角) = =

1.view_source

f12 就能看到flag

2.robots.txt

访问/robots.txt,可以看到not-allowed里有flag文件名,直接访问,拿到flag

3.backup

这道题考了常用备份文件名,一般是.bak,直接访问,下载备份文件,查看源码,就能拿到flag

4.cookie

f12在network里找到请求数据包,flag在里边的cookie字段

5.disabled_button

这道题想说明的是,前端限制不可信,就是说前端的限制都是可以绕过的

f12,把按钮button里的disabled属性删掉,然后点一下按钮,flag会显示出来

6.weak_auth

这道题想考弱口令的爆破,一般来说,账号都是admin,实际情况可以测试一下,下面是题解

尝试用不同的账号登录,发现用admin会提示密码错误,判断账号为admin(网页源码也有提示是admin),然后用burp抓包,丢到intruder,用常用弱口令字典爆破。(其实我是随手试了个123456就成功了哈哈哈哈哈哈)

当时没有截图,可以参考官方wp

7.simple_php

题目:

1

这道题是想考php的弱类型比较绕过,在php中

  • '1aaa'==1是成立的,因为比较时会把1aaa强制转换成数字,会丢弃掉aaa
  • 所以a=0&b=2222asd就可以拿到flag了

8.get_post

这道题考了get和post的传值方式

  • get的传入值在url中,即?payload=xxxxx&param=ssssss

  • post得传入值在数据包得body中,需要借助工具(例如burp或者firefox的hackbar)来实现。

    2

9.xff_referer

这道题考了xff和referer伪造,用burp抓包,在header部分添加要求的字段

3

10.webshell

这道题考了webshell的使用方法,页面显示了一句话shell,需要用post方式传入shell,然后会执行shell语句

我以前没有做过webshell相关的题,所以来踩坑了

我先尝试了很多次shell=ls,想要查看目录,结果一直没有回显,google了一下,顿然醒悟,shell中的eval();是php环境,想要访问系统环境需要用system()函数

尝试shell=system('ls'),返回了index的目录,里边有flag,使用cat指令,就直接拿到flag,cat是查看文件内容的指令

shell=system('cat flag.txt')

11.command_execution

这道题考了命令拼接,下边是常用的命令拼接方式:

假设A B 为两条指令

  • AB同时执行

A&B

  • A执行成功后B执行

A&&B

  • A的输出作为B的输入

A|B 管道符|还有个妙处,把A的运行结果作为输入,那么输出就会空出来很多空间(如果长度受限)

  • A执行失败后B执行

A||B

然后构造127.0.0.1 | ls,返回当前目录文件,发现没有flag,考虑flag被藏到了某个文件夹下,在header中看到系统环境是ubuntu,所以使用find来查找文件,用法:find [path] -name "[filename]",意思是在[path]下查找

127.0.0.1 | find / -name "flag"

在response中可以看到flag.txt的路径,然后使用cat,cat是查看文件内容的指令

127.0.0.1 | cat [filepath]

就可以拿到flag

12.simple_js

这道题做完睡觉前没做出来,看了下wp也没看懂,今天再来做一下

进去会弹窗让输入密码,随便输点东西然后确定,弹窗关掉之后f12看源码,里面有一段js:

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(','); 
        var tab2 = pass.split(',');
    // 用脚本跑了一下,pass里就是错误之后的结果,所以把tab2相关的代码删掉
        var i, j, k, l = 0,
                m, n, o, p = "";
        i = 0;
        j = tab.length;
        k = j + (l) + (n = 0); // k = tab.length
        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"));// flag

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

python转换了一下\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,得到一串字符,猜测是flag,填到Cyberpeace{}里,成功提交

4

原文地址:https://www.cnblogs.com/R3col/p/12452533.html