TryHackMe 第7天 | Web Fundamentals (二)

继续介绍一些 Web hacking 相关的漏洞。

IDOR

IDOR (Insecure direct object reference),不安全的对象直接引用,这是一种访问控制漏洞。

当 Web 服务器接收到用户提供的输入来检索对象时 (包括文件、数据、文档),如果对用户输入数据过于信任,Web 服务器没有对输入进行验证以确认所请求的对象属于提出请求的用户,就会出现这种类型的漏洞。

比如有如下 URL,其对应页面如下所示:

该页面展示的是对应 id 的订单信息,此处 id 为 1234,在 URL 中也有所体现。

此时将 URL 改为 1000,正常来说,应该无法访问到,因为 id 为 1000 的订单并非由我们生成。但是由于该 Web 服务器无条件信任用户输入,它返回了 id 为 1000 的订单信息:

基于上述例子,我们可以知道 URL 中传输的数值很可能是 IDOR 漏洞的入口。有些时候,这些数值会经过编码,如 Base64 编码;有些时候,这些数值会经过 Hash 处理。面对这种数值,想验证是否存在 IDOR,只需要反推出原始数值后,修改,再进行编码或 Hash 监控页面响应即可。

更特殊的情况是,我们无法反推出原始数值。那么我们可以创建两个账户,将这些账户对应的数值进行交换。如果可以成功访问到另一个账户的个人信息,则可以说明存在 IDOR 漏洞。

当然,前面提到的都是出现在 URL 中的漏洞入口,实际上 IDOR 也可能出现在其他地方,只要有参数传递且和用户信息有关的地方,都可能存在 IDOR 漏洞。

File inclusion

文件包含 包括了 本地文件包含 (Local file inclusion)、远程文件包含 (Remote file inclusion) 和 目录遍历 (directory traversal)。

当我们向 Web 服务器请求一个文件时,它的运行逻辑可能是这样的:

然而,如果 Web 服务器对用户输入完全信任,从不验证,那么用户就可以传递任意输入,从而导致漏洞发生。

文件包含可能会导致代码、凭证或其他重要文件泄露,此外如果攻击者可以通过其他渠道向 Web 服务器上传文件的话,那么就可以利用该文件与 文件包含 漏洞形成联动,以获得 RCE 漏洞 (Remote command execution)。

目录遍历

目录遍历 也被称为 路径遍历,它允许攻击者操作 Web 应用程序的 URL 来定位和访问那些存储在应用程序根目录之外的文件或目录。

在 PHP 语言中,用于读取文件内容的函数有许多,比较常见的就是 file_get_contents 函数。但是该函数不是引起目录遍历的主要原因,主要原因是未对输入进行验证或过滤

前面提到过正常访问 Web 应用中的文件过程图,假如未对用户输入进行过滤和验证,用户就可以利用 目录遍历 漏洞来读取其他文件:

如上图所示,用户在本应接收文件的参数后面构造了 “../../../../etc/passwd” 字符串。这表示 PHP 中的文件读取函数将从当前目录开始,往上级目录跳 4 次,然后获取 /etc 文件夹中的 passwd 文件。

下面是 操作系统 中常见的重要文件路径表:

Location描述
/etc/issue记录了在登陆提示符前打印的信息或系统标识
/etc/profile控制全系统默认变量,如 导出变量、文件创建掩码 (umask)、终端类型、用于显示新邮件到达时间的邮件信息
/proc/version指定了 Linux 内核版本
/etc/passwd拥有访问系统权限的所有注册用户
/etc/shadow包含系统用户密码信息
/root/.bash_history记录了 root 用户的命令历史记录
/var/log/dmessage包含全局系统信息,包括系统启动时记录的信息
/var/mail/root所有给 root 用户的邮件
/root/.ssh/id_rsa服务器上 root 用户或任何已知有效用户的 SSH 私钥
/var/log/apache2/access.log访问 Apache 服务的请求数
C:\boot.ini包含计算机 BIOS 固件的启动选项

本地文件包含 (LFI)

本地文件包含 漏洞通常是由于开发人员缺乏安全意识导致的。在 PHP 中,容易引起该漏洞的函数有 include、require、include_once、require_once 等函数,这些函数的作用一般都是将已有文件插入到当前文件中,可以方便开发人员复用文件。在此重点讨论 PHP 中的 LFI 漏洞,当然这不代表使用其他语言时不会出现 LFI 漏洞。

情况 1

在 index.php 中,有这样一串代码:

<?PHP include($_GET["lang"]);
?>

它表示从 GET 请求中获取  lang 参数,并将参数中的文件包含进来。比如,当访问 index.php?lang=EN.php 时,就会将英文版的页面返回回来;而如果访问 index.php?lang=CN.php 则会返回中文版的页面。

此时有攻击者构造了这样的 URI :index.php?lang=/etc/passwd ,由于开发人员未对输入做任何过滤,也未在 include 函数中指定包含目录,此时,/etc/passwd 文件就被包含了进来:

情况 2

开发人员在栽了个跟头后,在 include 函数中指定了目录:

<?PHP include("languages/". $_GET['lang']); 
?>

这样,就只能访问 languages 目录下的不同语言的页面了。事实是,虽然有用但不多。

攻击者发现直接传入 index.php?lang=/etc/passwd 没用了,于是再构造了一个 URI:index.php?lang=../../../../etc/passwd。

攻击者又一次得逞了。

情况 3

在前两个情况中,我们一直在进行白盒测试。假如现在我们进行黑盒测试,这种情况下,错误信息就十分重要。

现在我们只能得到如上的报错信息。根据这个报错,我们可以推断出:

  1. include 函数指定了路径 /includes,且添加了 .php 后缀。
  2. 当前 Web 应用的根目录为 /var/www/html

对于第 2 个推断,我们可以依然使用 ../../../../etc/passwd 来利用。但是由于这次,它不仅指定路径,还指定了后缀名:

在 PHP 5.3.4 以下版本,可以使用 空字节 进行截断 (如 URL 编码中的 %00 和 十六进制中的 0x00)。它的原理在于,%00 和 0x00 都会被解析为 NULL,而当一个字符串在解析时出现 NULL 时,NULL 后的字符就会被丢弃。

情况 4

依然黑盒测试。现在倒好,/etc/passwd 这一文件被过滤了。这种情况有两种方法解决:

  1. %00 截断。只不过有 PHP 版本要求。
  2. 在文件名后加 /. 符号

第一个方法前面说过,重点讲讲第二个方法。

以 cd 命令为例,如果我们输入 cd ..,它会将我们带到上一个目录中;而如果输入 cd .,则会停留在原目录中。同样的,如果我们输入 /etc/passwd/..,它会跳到 /etc 目录中;而如果我们输入 /etc/passwd/.,它依然会停留在原目录,并且匹配不上 /etc/passwd 这一字符串。

情况 5

依然黑盒。现在开发人员过滤掉了 ../ 字符串,其将 ../ 替换为了空字符串:

我们可以尝试使用 双写法 绕过:....//....//....//....//etc/passwd。双写法 原理如下图所示:

如果在过滤时只过滤一次,那么我们写两次时,就只会过滤掉其中一次,剩下那次依然可以正常保留。

经过 双写法 之后,得到结果:

情况 6

依然黑盒。现在在输入时必须给上指定的文件夹:

这种解法也算是简单,只需构造出如下 URI:THM-profile/../../../../etc/passwd 即可:

远程文件包含 (RFI)

远程文件包含 是可以在 Web 应用中包含远程文件的漏洞。与 LFI 相似,RFI 也是未对用户输入进行过滤和验证时发生的,它允许攻击者在函数中注入外部 URL。RFI 的一个前提是:allow_url_fopen 选项必须开启。

RFI 的风险高于 LFI,因为 RFI 漏洞允许攻击者在服务器上实现 RCE。除此之外,RFI 攻击成功的后果还有:

  • 敏感信息泄露
  • 跨站脚本攻击 (Cross-site scripting, XSS)
  • 拒绝服务攻击 (Denial of service, DoS)

要成功实施 RFI,攻击者的服务器必须可以同目标 Web 服务器通信。攻击者在其服务器上托管恶意文件,然后通过 HTTP 请求将恶意文件注入至对应函数中,并在目标 Web 应用上执行恶意文件。

下图展示了 RFI 的利用过程:


修复

关于 文件包含 漏洞的修复建议如下:

  1. 将系统和服务(包括 Web 应用框架)升级为最新版本
  2. 关闭 PHP 报错,以避免泄露 Web 程序的路径和其他信息
  3. 配置 WAF (Web application firewall,网络应用程序防火墙)
  4. 若 Web 应用不需要远程调用文件的功能的话,就将它禁用。如 allow_url_fopen 和 allow_url_include
  5. 仔细分析 Web 应用,只允许使用需要的协议和 PHP 函数
  6. 不要相信用户的输入,并确保进行适当的输入验证
  7. 对文件名和路径设置黑白名单管理

挖掘 LFI 漏洞

碰到一个 Web 应用时,要通过什么步骤发现存在 LFI 漏洞呢?

  1. 找到一个入口点,可以是 GET、POST、Cookie 甚至 HTTP 头
  2. 输入有效的输入,查看 Web 服务器的运行情况
  3. 输入无效的输入,比如特殊字符或常用文件名。在输入无效输入后查找错误,以披露 Web 应用的当前路径;如果没有错误,那么试错可能是最好的选择
  4. 了解是否有输入验证或是否有任何过滤
  5. 尝试注入有效条目以读取敏感文件

Challenge

上面写着输入表单崩溃了,只能通过 POST 请求发送 file 参数才可以正常运行。

那就直接 Burpsuite 抓包,转换请求方式,发送,得到 flag:

本关提示只有 admin 才可以访问该页面。通过上面的抓包可以发现,Cookie 中有一个字段 THM 取值为 Guest,将其改为 admin 会返回什么结果呢:

可以看到,修改 Cookie 是有效的,那么就猜测后端是接收 Cookie 后,将值对应的文件包含起来。现在将 Cookie 使用 /etc/passwd 进行测试:

与我们的猜想大致,通过报错可以推断出它对输入进行了处理,限制了文件夹以及添加了后缀名。还可以注意到 PHP 版本为 5.2,因此可以使用 %00 截断来绕过后缀名。而限制文件夹则可以使用 ../ 来绕过。

这样我们就构造了一个 URI:../../../../etc/flag2 来获取当前关卡的 flag:

 

这一关没有提示,只有这样的输入框。我们直接输入 /etc/flag3 来看看返回结果:

从报错中可以推断出:

  1. 给输入指定了后缀名。
  2. 过滤了 / 和 数字。
  3. PHP 使用版本为 5.2

此处没有指定文件夹名,只限制了后缀名,故可以直接使用 %00 截断。主要问题是过滤了 / 和 数字,第一时间尝试使用 双写法 绕过,发现失效了:

看来这次过滤不止一次。看来输入框是比较难弄了。在抓包时,我们发现 Cookie 依然有 THM 字段,因此尝试能不能通过 Cookie 利用漏洞。

没有反应。那就尝试更换请求方式:

可以看到使用 POST 请求后,/ 和 数字都没有被过滤了。但是居然没有直接显示结果,看来还是有指定文件夹限制,只是没有展示出来吧。因此构造一个 URI:../../../etc/flag3%00 即可:

本关卡提示说,要利用 RFI 漏洞实现 RCE,获取到目标的 hostname。

那基本思路就是在攻击方写一个 PHP 脚本获取 hostname:

然后搭建一个 python 的轻型 HTTP 服务来让目标 Web 服务器访问。

这样就可以获得目标机的 hostname。 

Intro to SSRF

SSRF (Server-side request forgery),服务端请求伪造。这是一个允许恶意用户让 Web 服务器向攻击者选择的资源发出额外或经过编辑的 HTTP 请求的漏洞。

SSRF 有两种类型,一种是常规 SSRF,它可以将数据返回到攻击者的屏幕上;另一种是盲 SSRF,即没有信息返回到攻击者屏幕上。

SSRF 会导致:

  • 访问未经授权的区域
  • 访问 客户/组织 的数据
  • 扩展至内网的能力
  • 揭示身份验证令牌/凭据

Example

如上图所示,这显示了攻击者如何完全控制 Web 服务器请求页面。Expected Request 是 Web 服务器希望接收的内容,红色部分则是网站用于获取信息的 URL。攻击者可以通过将红色区域修改为他们想要的 URL 来实现 SSRF。

上图展示了攻击者如何使用目录遍历控制路径访问指定 URL。当 website.thm 接收到 ../ 这样的信息时,意味着要向上移动一个目录,就会删除请求中的 /stock 部分,并将最终请求转换为 /api/user。

在上图中,攻击者可以控制请求的子域名。注意此处以 &x 为结尾,它可以阻止剩余路径内容附加到攻击者 URL 末尾,并将剩余路径内容作为查询字符串上的参数。

回归到原始请求上,即攻击者可以强制 Web 服务器请求攻击者选定的服务器。通过此种方式,我们可以捕获到发送给攻击者指定域名的请求头。这些请求头种可能包含由 website.thm 发送的认证凭据或 API 密钥。

下面是一次简单展示:

本题中,攻击者可以控制请求的子域名,flag 就在 https://server.website.thm/flag?id=9 这个 URL 中。这种情况如前面所示,我们直接访问在可控制输入的地方输入 URL,并在后面加上 &x 参数。

注意最底下的那一行小字,它表示了当前正在请求的 URL。

按下回车,flag 返回回来。

Finding SSRF

1. 当完整的 URL 作为参数显示在地址栏中:

2. 表单的隐藏字段中:

3. 部分 URL,比如 主机名:

4. 只有路径的 URL:

面对可能存在 SSRF 漏洞的地方,我们需要反复试验才能找到有效负载。如果使用的是盲 SSRF,其输出不会反馈在屏幕上,因此需要使用外部 HTTP 日志工具来监控请求,比如 requestbin.com,又或者是 我们自己的 HTTP 服务器 或 BurpSuite 的 Collaborator 客户端。

Defeating common SSRF defenses

意识到 SSRF 漏洞风险的且安全意识较高的开发人员可能会在 Web 应用中实施检查,以确保请求的资源符合特定规则。通常有三种方法:

Deny list

拒绝列表 指除了列表中指定的资源或与特定模式匹配的资源外,所有请求都被接受。Web 应用可以使用拒绝列表保护 敏感端点、IP地址 或 不被公众访问的域,同时仍允许访问其他位置。限制访问的一个特定端点就是 localhost,它可能会包含服务器性能数据或更多敏感信息。但攻击者可通过使用其他 localhost 引用 (如 0、0.0.0.0、0000、127.1、127.*.*.*、2130706433、017700000001)或具有解析到 IP 地址 127.0.0.1 的 DNS 记录 (如 127.0.0.1.nip.io)的子域来绕过拒绝列表。

此外在云环境中,阻止对 IP 地址 169.254.169.254 也是有用的。因为该 IP 地址包含已部署云服务器的元数据,其中可能包含敏感信息。攻击者可以通过在自己的域上注册一个子域,并将 DNS 记录指向 IP 地址 169.254.169.254,从而绕过这一限制。

Allow list

允许列表 指除了出现在列表中或符合特定模式匹配的资源外,所有请求都被拒绝。比如参数中使用的 URL 必须以 https://website.thm 开头的规则,那么攻击者可以在其自己的域名上创建一个子域(如 https://website.thm.attackers-domain.thm)来快速规避这一规则。

Open redirect

如果上述的方法不起作用,还可以使用 开放式重定向 (Open redirect)。

开放式重定向 是服务器上的一个端点,网站访问者会被自动重定向到另一个网站地址,比如 https://website.thm/link?url=https://tryhackme.com。创建这种端点是为了记录访问者点击该链接的次数,以用于广告/营销目的。

但假如这里面存在一个潜在的 SSRF 漏洞,且其严格的规则只允许以 https://website.thm/ 开头的 URL,那么攻击者可以利用上述功能将内部 HTTP 请求重定向到攻击者选择的域上。

Practical

现在有一个网站页面,它有两个目录。一个是 /private 目录,但它无法在当前 IP 地址上被访问:

另一个是 /customers/new-account-page,这是新版的用户账户页面,允许用户选择头像:

首先我们查看这些图像的信息,通过开发者工具可以看到图像的字段中包含了它们的路径:

而当某一图像被选择为头像时,它就用 data URI 显示了,其中使用了 Base64 编码:

现在我们尝试修改图片路径为 /private:

然后把这个修改过的图片更新为自己的头像后发现:

URL 不能以 private 开始。那我们就不以 private 开始,同时最后得到的就是 private  中的内容,即构造一个 URL 为 x/../private:

再次将修改后的图片更新为头像,发现一串 base64 编码:

将其解码后,得到 flag:

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【springboot】使用代码生成器快速开发

接上一项目&#xff0c;使用mybatis-plus-generator实现简易代码文件生成 在fast-demo-web模块中的pom.xml中添加mybatis-plus-generator、freemarker和Lombok依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator&…

Python | 由高程计算坡度和坡向

写在前面 之前参加一个比赛&#xff0c;提供了中国的高程数据&#xff0c;可以基于该数据进一步计算坡度和坡向进行相关分析。 对于坡度和坡向&#xff0c;这里分享一个找到的库&#xff0c;可以方便快捷的计算。这个库为&#xff1a;RichDEM&#xff0c;官网地址如下 https…

SAP学习笔记 - 豆知识11 - 如何查询某个字段/DataElement/Domain在哪个表里使用?

大家知道SAP的表有10几万个&#xff08;也有说30多万个的&#xff0c;总之很多就是了&#xff09;&#xff0c;而且不断增多&#xff0c;那么当想知道一个字段在哪个表里使用的时候该怎么办呢&#xff1f; 思路就是SAP的表其实也是存在表里的&#xff1a;&#xff09;&#xf…

【Git】TortoiseGitPlink提示输入密码解决方法

问题 克隆仓库&#xff0c;TortoiseGitPlink提示输入密码 解法 1、打开TortoiseGit 下的puttygen工具 位置&#xff1a;C:\Program Files\TortoiseGit\bin\ 2、点击【Load】按钮&#xff0c;载入 C:\Users\Administrator\.ssh\ 文件夹下的id_rsa文件。 3、点击save private …

qt_c++_xml存这种复杂类型

demo&#xff0c;迅雷链接。或者我主页上传的资源 链接&#xff1a;https://pan.xunlei.com/s/VO8bIvYFfhmcrwF-7wmcPW1SA1?pwdnrp4# 复制这段内容后打开手机迅雷App&#xff0c;查看更方便 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>#include…

请散户股民看过来,密切关注两件大事

明天股市要开市&#xff0c;不仅散户股民期盼节后股市大涨&#xff0c;上面也同样想在节后来上一个“开门红”。 为此&#xff0c;上面没休假&#xff0c;关起门来办了两件大事&#xff0c;这两天发布消息已提前预热了。 两件大事如下&#xff1a; 一是&#xff0c;上交所10…

什么是 JavaScript 的数组空槽

JavaScript 中的数组空槽一直是一个非常有趣且颇具争议的话题。我们可能对它的实际意义、历史以及现今的新版本中对它的处理方式有所疑问。数组空槽的存在最早可以追溯到 JavaScript 的诞生之初&#xff0c;当时的设计决定让它成为了现代 JavaScript 开发中的一种特别的现象。 …

大数据新视界 --大数据大厂之数据血缘追踪与治理:确保数据可追溯性

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

计算机毕业设计hadoop+spark天气预测 天气可视化 天气大数据 空气质量检测 空气质量分析 气象大数据 气象分析 大数据毕业设计 大数据毕设

Hadoop天气预测系统开题报告 一、研究背景与意义 在信息化和大数据时代&#xff0c;天气数据已成为社会生活和经济发展中不可或缺的重要资源。天气预测系统作为现代气象学的重要组成部分&#xff0c;对于农业生产、交通管理、环境保护以及防灾减灾等方面都具有重要意义。然而…

集智书童 | 用于时态动作检测的预测反馈 DETR !

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;用于时态动作检测的预测反馈 DETR ! 视频中的时间动作检测&#xff08;TAD&#xff09;是现实世界中的一个基本且具有挑战性的任务。得益于 Transformer …

Chrome浏览器调用ActiveX控件--allWebOffice控件

背景 allWebOffice控件能够实现在浏览器窗口中在线操作文档的应用&#xff08;阅读、编辑、保存等&#xff09;&#xff0c;支持编辑文档时保留修改痕迹&#xff0c;支持书签位置内容动态填充&#xff0c;支持公文套红&#xff0c;支持文档保护控制等诸多办公功能&#xff0c;本…

国庆期间的问题,如何在老家访问杭州办公室的网络呢

背景&#xff1a;国庆期间的问题&#xff0c;如何在老家访问杭州办公室的网络呢 实现方案&#xff1a;异地组网 实现语言&#xff1a;Java 环境&#xff1a;三个网络&#xff0c;一台拥有公网IP的服务器、一台杭州本地机房内服务器、你老家所在网络中的一台电脑&#xff08;…

Linux中的网络指令:ping、netstat、watch、pidof、xargs

目录 Ping指令 netstat指令 watch指令 pidof指令 xargs指令 Ping指令 功能&#xff1a;检测两台主机间的网络连通性 语法&#xff1a;ping [选项] 目标主机的IP地址 &#xff08;192.168.1.1&#xff09;或域名&#xff08;google.com&#xff09; 常见选项&#xff1a…

鸿蒙next开启地图服务

一般手机软件有的都会有开启地图功能&#xff0c;这里说一下怎么开启地图服务 1、 首先你需要配置一些东西&#xff0c;在华为的agc平台上&#xff0c;下边链接就是详细的教程 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/map-config-agc-V5 我说一下你…

分治算法(5)_归并排序_排序数组

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 分治算法(5)_归并排序_排序数组 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 …

如何在各大地图平台上标注店铺定位?

随着互联网的高度普及&#xff0c;地图导航已成为人们日常出行和寻找服务的重要工具。对于商家而言&#xff0c;将自己的店铺定位标注在各大地图平台上&#xff0c;不仅能方便顾客一键导航抵达店铺进行消费&#xff0c;还能提高店铺的线上曝光率&#xff0c;从而吸引更多的潜在…

Chrome浏览器调用ActiveX控件--allWebOffice控件功能介绍

allWebOffice控件概述 allWebOffice控件能够实现在浏览器窗口中在线操作文档的应用&#xff08;阅读、编辑、保存等&#xff09;&#xff0c;支持编辑文档时保留修改痕迹&#xff0c;支持书签位置内容动态填充&#xff0c;支持公文套红&#xff0c;支持文档保护控制等诸多办公功…

鸿蒙开发之ArkUI 界面篇 十九 Flex组件的特点

其语法格式是: Flex(参数对象){ 字组件1, 字组件2, 字组件3, 字组件4 } 这里你会发现&#xff0c;其实和Row容器&#xff0c;Colum容器的语法格式差不多&#xff0c;核心的关键是Colum、Row是不支持换行&#xff0c;实现FlexInterface接口&#xff0c;对外提供的属性是F…

Cesium的一些神奇概念及技术流程(1)

近期要深度研究Cesium。关于Cesium的用法、渲染流程等方面我看很多人都写过。我就写写其中一些可能平时用不到但是比较有趣的内容。因为边研究边写&#xff0c;所以会陆续出几集&#xff0c;然后合并在一起&#xff0c;欢迎大家跟踪。 我的这些文章不打算把一些基本概念展开解…

【判断推理】逻辑基础

1.1 命题 用语言、符号或者式子表达的&#xff0c;可以判断真假的陈述句称为命题&#xff0c;一般写为 若p&#xff0c;则q 真命题&#xff1a;判断为真的语句假命题&#xff1a;判断为假的语句 eg1&#xff1a;小张是中国人&#xff08;若是小张&#xff0c;则是中国人&#…