攻防世界WEB新手入门区

view_source

题目

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

解决方案

F12获取源代码,找到flag。

使右键禁用的原因:

document.oncontextmenu=new Function("return false") //禁止右键
document.onselectstart=new Function("return false") //禁止选中网页内容

robots

题目

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

解决方案

Robots协议: 网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。 告诉在服务器上什么文件是可以被查看的。

在网址后添加robots.txt:

访问文件f1ag_1s_h3re.php,获得flag。

backup

题目

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

解决方案

备份文件后缀.bak,在网址后添加index.php.bak即可得到文件,打开获得flag。

Cookie

题目

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

解决方案

Network→Doc→Headers→Cookies,找到 look-here = cookie.php。

访问php文件,在Headers找到flag。

disabled_button

题目

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

解决方案

删掉disabled获得flag(做过类似的题目)。

weak_auth

参考wp进行复现:

https://www.suk1.top/2019/03/17/XCTF%20adworld%20web%EF%BC%88%E6%96%B0%E6%89%8B%E5%85%A5%E9%97%A8%E7%AF%87%EF%BC%89/

题目

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

解决方案

尝试登录,获得“please login as admin”的提示。

这里要用到弱密码字典爆破,第一次尝试这个东西……

首先输入admin进行发包,然后传入Intruder。

取消掉cookies.php和admin的关键字,只留下password关键字(第一次就尝试到修改cookies.php上面,一直没有爆破成功)。

然后在payload导入本地字典进行start attack,发现123456的长度与其他密码长度不同,尝试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;
}
?>

https://www.php.net/manual/zh/language.operators.comparison.php

大概是涉及到了php语言比较运算符的特性,字符串与数字比较会将字符转化为0。随便将&a设置为一个字符,即可满足 $a==0 and $a

b的条件是b不是数字且大于12345,可以设置一串数字后加上字符,得到flag.

get_post

题目

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

解决方案

通过GET提交变量:在网页后加?&a=1即可。

通过POST提交变量:通过搜索知道了Firefox插件Max Hackbar,下载后提交,获得flag。

xff_referer

题目

X老师告诉小宁其实xff和referer是可以伪造的。

解决方案

比较简单,通过burp抓包修改X-forwarded变量即可。

接着提示:

伪造referer即可获得flag。

webshell

题目

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

解决方案

参考官方wp进行复现。

一句话木马解读:php的代码要写在<?php  ?>里面,服务器才能认出来这是php代码,然后才去解析;@符号的意思是不报错;eval()把字符串作为PHP代码执行。连起来意思是用post方法接收变量shell,把变量shell里面的字符串当做php代码来执行。

得到密码是shell,用post提交数据。

使用蚁剑链接:

获得flag。

command_execution

题目

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

解决方案

参考官方wp进行复现(万恶的命令我歇菜了)。

有关命令执行的知识 :

command1 && command2 先执行 command1,如果为真,再执行command2

command1 | command2 只执行 command2

command1 & command2 先执行 command2 后执行 command1

command1 || command2 先执行 command1,如果为假,再执行 command2

命令执行漏洞(| || & && 称为 管道符)

ping本地(127.0.0.1)。

尝试用127.0.0.1带其他命令执行,例如查找文件flag.txt。

127.0.0.1 | find / -name "flag.txt" 

找到flag文件后cat获取文件。

127.0.0.1 && cat /home/flag.txt

找到flag。

simple_js

题目

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

解决方案

原来题目就已经提示了没有正确密码了……太绕了。

先将原界面的JS代码copy一份下来。

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

首先删掉一些没用的变量以及初始化。m没有用到,n = 0赋值返回undefind等,修正过后得到

function dechiffre() {
    var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
    var tab2 = pass.split(',');
    var i, n, p = "";
    n = tab2.length;
    for (i = 0; i < n; i++) {
        p += String.fromCharCode(tab2[i]);
        if (i == 5) break;
    }
    for (i = 0; i < n; i++) {
        if (i > 5 && i < n - 1) p += String.fromCharCode(tab2[i]);
    }
    p += String.fromCharCode(tab2[17]);
    return p;
}

发现传入的值实际上是用不到的,无论输入什么样的密码都会报错。该段代码实质为输出报错信息。

删除这段函数后,真正的密码在fromCharCode中,截取下来转译为数字,在通过Ascii码得到flag。

array = [55, 56, 54, 79, 115, 69, 114, 116, 107, 49, 50]
string = ""
for i in array:
    char = chr(i)
    string += char
print(string)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇