Echo战队第1次培训——Linux文件与路径

Linux文件与路径 1、文件结构 ​ Windows和Linux文件系统区别 ​ 在windows平台下,打开“此电脑”,我们可以看到盘符分区 ​ 每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形 ​ 但是在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录): ​ Linux没有盘符这个概念,只有一个根目录/,所有文件都在它下面 [root@localhost ~]# ls / bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var ​ 当我们输入ls / 可以查看更目录下的文件查看根目录下的系统文件 目录 说明 备注 bin 存放普通用户可执行的指令 即使在单用户模式下也能够执行处理 boot 开机引导目录 包括Linux内核文件与开机所需要的文件 dev 设备目录 所有的硬件设备及周边均放置在这个设备目录中 etc 各种配置文件目录 大部分配置属性均存放在这里 lib/lib64 开机时常用的动态链接库 bin及sbin指令也会调用对应的lib库 media 可移除设备挂载目录 类似软盘 U盘 光盘等临时挂放目录 mnt 用户临时挂载其他的文件系统 额外的设备可挂载在这里,相对临时而言 opt 第三方软件安装目录 现在习惯性的放置在/usr/local中 proc 虚拟文件系统 通常是内存中的映射,特别注意在误删除数据文件后,比如DB,只要系统不重启,还是有很大几率能将数据找回来 root 系统管理员主目录 除root之外,其他用户均放置在/home目录下 run 系统运行是所需文件 以前防止在/var/run中,后来拆分成独立的/run目录。重启后重新生成对应的目录数据 sbin 只有root才能运行的管理指令 跟bin类似,但只属于root管理员 srv 服务启动后需要访问的数据目录 sys 跟proc一样虚拟文件系统 记录核心系统硬件信息 tmp 存放临时文件目录 所有用户对该目录均可读写 usr 应用程序放置目录 var 存放系统执行过程经常改变的文件 ​ 在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。 ...

November 22, 2022 · 4 min · Red

PortSwigger篇:Cross-site scripting 跨站脚本攻击——1

前情概要 要想理解“跨站脚本攻击”(又叫XSS)的原理,就得回到其产生的根本——JS传参语句的设计缺陷 什么是JS?JS是怎么实现的?他跟网站又有什么关系?别急,让我们一步一步来 基础知识 要想理解JS的工作原理,以及其与网站的联系,就需要知道网站是怎么工作的 简而言之,我们之所以能够看到现在的网页,正是浏览器渲染的功劳 而一个完整的网页,一般都包括但不限于两种标记语言和一种编程语言,他们分别是HTML、CSS和Javascript 要想具体深入我们的XSS脚本漏洞使用,就需要先理解一下这三者之间的联系和作用分别是什么 下面我们就开始对这三者展开简单讨论 HTML HTML是一种用于创建网页的标准标记语言,可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Red的教程(redshome.top)</title> </head> <body> <h1>我的第一个标题</h1> <p>我的第一个段落。</p> </body> </html> 这是一段简单的HTML标记语句,每一个<>包括其中的内容都叫一个标签,而正常需要使用一对标签进行配对,将需要进行的动作放置在这对标签的中间,中间的这些动作就能具备这对标签的属性 如果我们将其使用.html或.htm后缀文件的形式用浏览器打开后,会发现他们二者都是可以正常打开的 所以这里我们便得到了第一个结论,html和htm是同一种格式的文件 下面我们来对各个部分进行一下解释 <!DOCTYPE html> 声明为 HTML5 文档 <html> 元素是 HTML 页面的根元素 <head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8。 <title> 元素描述了文档的标题 <body> 元素包含了可见的页面内容 <h1> 元素定义一个大标题 <p> 元素定义一个段落 更多的标签使用,可以参考菜鸟教程上的HTML教程 CSS CSS又叫层叠样式表,是一种用来添加HTML文件如字体、间距等样式的标记语言。扩展名固定为.css CSS的使用与HTML紧密联系。让我们先来看一段HTML标记 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Red的教程(redshome.top)</title> <style> body { background-color:#d0e4fe; } h1 { color:orange; text-align:center; } p { font-family:"Times New Roman"; font-size:20px; } </style> </head> <body> <h1>CSS 实例!</h1> <p>这是一个段落。</p> </body> </html> 我们可以看到他的效果如下图所示 首先我们先来介绍一下CSS的常见使用方法以及CSS的基础知识。 先来看一下CSS的语句结构 ...

November 21, 2022 · 2 min · Red

XUJCOJ:caiming:2022级C++第23次作业 第1题

第1题 描述 输入一个正整数n,然后输入n个字符串,最后输入一个正整数m(m<=n),要求输出第m个字符串 输入 一个正整数n,然后是n个字符串,最后是一个正整数m(m<=n) 输出 一个字符串,是输入的n个字符串中第m个字符串。不要换行。 样例输入 3 abc cd efg 2 样例输出 cd 思路 怎么说也是道签到题,但这道题有趣的并不是他的难易度,而是有关malloc和new两种不同动态分配方式的讨论 代码[C] [Forlogin] #include <stdio.h> #include <string.h> int main(){ int m,n; scanf("%d",&m); char *p[m]; for(int i=0;i<m;i++){ p[i]=(char*)malloc(100*sizeof(char)); scanf("%s",p[i]); }scanf("%d",&n); printf("%s",p[n-1]); }[/Forlogin] 代码[C++] [Forlogin] #include <iostream> #include <string.h> using namespace std; int main(){ int m,n; cin>>m; char *p[m]; for(int i=0;i<m;i++){ p[i]=new char [10]; cin>>p[i]; }cin>>n; cout<<p[n-1]; }[/Forlogin] 有关malloc和new的区别 对于一个长期使用C语言的老鸟而言,malloc的熟练程度一定要比new要来的高 但是他们俩有什么区别呢? 首先来说一下他们的定义分别是什么 malloc malloc的作用是分配所需的内存空间,并返回一个指向它的指针,是C语言stdlib.h库的一个库函数,下面是malloc的声明 void *malloc(size_t size) malloc的返回值是指向已分配大小的内存的指针或null,且在未作特别规定的情况下指针类型位void 下面是malloc的用法实例(源自菜鸟教程) #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *str; /* 最初的内存分配 */ str = (char *) malloc(15); strcpy(str, "runoob"); printf("String = %s, Address = %u\n", str, str); /* 重新分配内存 */ str = (char *) realloc(str, 25); strcat(str, ".com"); printf("String = %s, Address = %u\n", str, str); free(str); return(0); } 以上运行结果的返回值是 ...

November 16, 2022 · 1 min · Red

Red的钓鱼网站

方法 要想制作一个钓鱼网站,就需要满足以下几点条件: 1)一个与原网站高度相似的html页面 2)一台能够与受害者主机有直接或间接联系的终端 虽然看着简单,但单要完成第一步可以说就已经让一些人够呛。所以,想要在Windows上用一般的方法来实现这一目的,显然是比较复杂的。所以Red便下意识地将目光转向了kali。好在kali集成了一款十分强大的工具setoolkit 下面就是我们今天的犯罪嫌疑人Red的操作步骤 在kali命令行中输入setoolkit,就可以打开这一工具。第一次打开需要输入y来进行工具依赖的安装 会出现以下内容 拉到下方,会出现如下内容 翻译后内容如下 社会工程学攻击 快速追踪测试 第三方模块 升级软件 升级配置 帮助 输入1 鱼叉式网络攻击 网页攻击 传染媒介式 建立payload和listener 邮件群发攻击 Arduino基础攻击 无线接入点攻击 二维码攻击 Powershell攻击 第三反方模块 输入2 Java applet攻击 Metasploit浏览器攻击 钓鱼网站攻击 标签钓鱼攻击 网站jacking攻击 多种网站攻击 全屏幕攻击 输入3 网站模板 站点克隆 用自己的网站 输入2,这里进行网站克隆,默认状态下对本地ip回车即可,将oj的登陆网站输入进来,等待捕获输入信息即可。这里用账号:admin,密码:IST22006来输入,可以看到如下内容 可以看到成功捕获,钓鱼网站制作成功~ 怎样让外网访问到? 这就需要用到一种技术:内网穿透 内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1 指向的Web站点。 那怎么才能实现内网穿透呢?现有工具有花生壳,natapp,小米球工具,前两个都是收费的,最后一个生成的域名前缀是自己设置的,穿透域名是xx.ngrok.xiaomiqiu.cn.有兴趣的可以玩一下。

November 15, 2022 · 1 min · Red

PortSwigger篇:Blind SQL injection with conditional responses 带条件响应的SQL盲注靶场

本篇为小屋第一篇靶场日记,面向小白,步骤较为详细,Dalao们自行食用,也欢迎纠错 靶场简介 1 由题可得,这是一道经典的盲注题,大体思路也在Lab的Solution中有所提及,不过咱还是抱着打靶子的乐趣再写一遍试试 方法 试探 所谓漏洞,就是要进行尝试才能知道它是否真的存在。进入到如下页面后,随便点进一个“Pets”的标签页,就能看到我们今天的一号受害男主,也就是右上角的“Welcome Back!” 我们先对该页面进行一次拦截,并使用' and 1=1 --+ 语句来构造一次**一定成立的合法请求**,试看看他的Cookies能不能被我们利用 在原标签页面,我们可以清楚的看到我们的一号男主并没有消失,于是我们对其便继续进行试探,将请求变为不合法请求,再次进行尝试 很显然,我们的猜测是正确的,这里存在着一个可供我们进行注入的SQL漏洞,我们便可以开始对其进行’造娃’式的语句构造,来达到获取服务器密码数据的目的 猜测 既然已经知道存在SQL漏洞,也就是服务器可以执行我们所构造语句的漏洞,那我们就可以利用select命令对其进行查询,具体查询语句如下 ' AND (SELECT 'a' FROM users LIMIT 1)='a'--+ 这里我先对上述语句进行一下解释。Select是用来对后面From所指向的内容,也就是users进行查询。查询什么呢?就是查询我们在users表中是否存在这样一个字符a,如果成立,那么就会相当于users这个表在数据库中是存在,将会返回一个字符a那么就会和外面所构造的等式成立,所以就构成了一条合法的请求。而这里的关键也就在于where后的值是否成立。其中,Limit起到了限定字段的作用,也就是限制在第一个字段进行查询。 这里我并没有利用服务器自带的后面那个分号,而是将其使用--+注释掉并手动在a后添加了一个,这样比较美观,当然也是个人习惯,可以根据你的习惯来决定使用哪种方法 对上条构造完的请求进行释放后,可以在页面看到我们的一号男主角并没有消失。那么根据我们在试探阶段的经验就可以很容易推断出一条对接下来密码爆破十分重要的信息,在构造出的语句合法的情况下,一号男主角不会消失,反之就会 接下来,我们继续构造,对数据库中的其他信息进行更详细的查询。我们使用以下命令对users表中的内容进行判断 ' AND (SELECT 'a' FROM users WHERE username='administrator')='a'--+ 这句的作用可以类比到上面那句,作用就是更加地确定这个users表中存在一个叫做administrator的用户名 接着我们继续对这个表中的另一个字段password进行试探,当然,在题目中已经告诉我们这个字段的名字就是password,而在实战中则不一定是这个名字,所以这就需要我们对大众对数据库命名的习惯进行收集和分析,当然这都是后话。我们可以构造以下语句对密码的长度进行勘探 ' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>1)='a'--+ 在讲这句话进行释放后,我们可以在页面中看到我们的一号男主角并没有消失,利用length()函数对字段长度进行猜测的方法,可以一步步缩小我们的猜测范围,可以测试出我们的密码长度为20,猜测工作也基本到此为止,接下来便是对密码的直接爆破了。 爆破 我们可以使用substring()这个函数来挨个判断密码的每一位分别是什么,具体用法如下 ' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='a'--+ 显然我们可以通过这种方式手动挨个地将密码的每一位给试出来。但显然如果没有比章鱼哥的手还多的键盘,估计试一早上都试不出来。不过好在Burpsuite内置了帮助我们进行爆破的自动化模块Intruder,我们只需要将数据包发送到这个模块就能对特定参数就行爆破 具体的配置界面如下,记得要将攻击模式改成Cluster bomb,才能对下面请求中的多个参数进行爆破 接下来进到上方的payload界面,对参数添加变量。这里我们可以将第一个参数的攻击类型改为Numbers,因为第一个变量的值范围是在1-20,所以我们可以将范围改为1到20,每次尝试的步长step设置为1 ![13](images/po rtswigger%E6%89%93%E9%9D%B6%E6%97%A5%E8%AE%B0%E4%B9%8B%E7%9B%B2%E6%B3%A8%E5%93%8D%E5%BA%94%20(13).png “13”) 第二个参数的攻击类型设置为simple list,点击下方**Add from list…**可以添加相应字符。因为题目中告诉我们密码由字母和数字组成,所以我们可以只添加a-z和0-9这两项 ...

November 13, 2022 · 1 min · Red