0%

这里讲一下RHCE涉及到的VSFTPD的相关补充内容。
之前都是图省事用的FileZilla,然后VSFTPD建立虚拟用户网上教程很多,不重复,重点讲一下两个配置文件。

VSFTPD主要配置在/etc/vsftpd/vsftpd.conf里,用户验证采用文件数据库形式,主要由同目录下的ftpusers和user_list文件,以及vsftpd.conf里的选项userlist_file三者控制。ftpusers文件比较特殊,它受PAM机制影响,在该文件记录的用户名不可以登录。PAM优先级高于其余验证选项。

首先,配置里userlist_enable负责是否启用用户数据库,如果为NO,则开放登录,仅拒绝ftpusers文件里的用户。如果userlist_enable为YES则启用验证。

下面涉及的内容均是在local_user为YES的情况下讨论。

userlist_file选项是可选的,如果userlist_file没有出现,则会使用user_list文件。当userlist_deny选项为NO,仅user_list文件里的用户可以登录。userlist_deny选项为YES,仅user_list文件里的用户不可以登录。

但当userlist_file指定为其他文件时,情况稍有变动,此时原user_list文件也会影响登录。userlist_deny为NO时userlist_file指定文件里的用户可以登录,user_list文件里的用户会被拒绝,会在输入密码前提示Login failed。userlist_deny为YES时userlist_file指定文件里的用户不可以登录,会在输入密码前提示Login failed。user_list文件里的用户会被允许登录。

当userlist_deny没有出现是,系统不允许任何本地用户登录(包括anonymous),user_list里的用户会在输入密码后Login failed,userlist_file会在输入密码前failed。

flag{4654b30b-1061-41b1-b1e7-643f37985c40}

由于脱产半年,实在无事可做,就想考个证。Cisco的证三年就要重考一次,考试费又贵,不是很想玩。然后就想到RHCE了。

我是在S****上的课,就目前而言,很差劲。RHCSA的东西就不说了,大家都是零基础,我再怎么菜,玩了这么多年的Linux不至于这个都搞不定。

同学提出个错误,尼玛连英文都不看的?Linux的东西不会英文玩得转?百度上连个CentOS Plus是啥都说不明白。也不去查man,Linux自带的说明书多好用,就是不去看。

这里也记录一下学RHCE里我确实不知道的知识。

1. Vi

这个真没开玩笑,我从来不用Vi的,我是坚定的nano党。

2. rd.break修改密码

RHCE考试用的是7,跟6相比差别太多,觉得陌生的请自行去翻Release Notes。其中一个差别就是,7开始使用dracut来制作initramfs,可扩展性很高,具体请谷歌搜索dracut kernel options查阅。RHCSA的第一道题一定是要你覆盖原有root密码。7之前可以通过单用户模式改密码,现在不行了,单用户模式也要验证root密码。解决方案就是在kernel参数那里加一个rd.break,停在initramfs与硬盘系统切换的时间点上,这里会给我们一个root shell,mount -o rw,remount重挂载硬盘后passwd root即可。然后,默认RedHat系会开SELinux,一定要在硬盘根目录下touch /.autorelabel,强制刷新SELinux否则会系统启动会卡死起不来。

3. LVM

目前没有讲太细,记住LVM建立流程:Phsyical Volume->Volume Group->Logical Volume即可。

4. VSFTPD

内容有点多,另开了一

flag{0ec803e3-5ebb-4733-ab65-79013ca0fca4}

SWPU 2018 CTF的SimplePHP。

给了个查看文件和上传文件,扫目录似乎没结果。然后发现“查看文件”的URL有点东西http://ed97c7d0-1d36-4255-852f-e4b73a9fbd2b.node3.buuoj.cn/file.php?file=,LFI试一下。行吧,直接show_source了。

阅读全文 »

最近觉得C#有点好玩。记录一下好玩的东西。C#感觉有点像Java。

  1. var类型推断。就是很简单的var i=1,不需要打int bool之类的了。
  2. 变量作用域。同一变量作用域内不允许重新声明变量。
  3. 引用类型。对于对象而言,x与y同等地位,但是int x=1;int y=x;x与y是两个不同的变量。
  4. 数字分隔符。long l1=0x123_456_789;long l2=0x123456789,l1与l2等价。
  5. 原始字符串。string raw=@"C:\Windows\System32";,不会进行转义。
  6. 字符串插值。string s1="123";Console.WriteLine($"s1 is {s1}");,输出“s1 is 123”。
  7. if的判断条件只能是bool类型的true或false,不能用0或非0判断。
  8. case。强制要求case每一个分支后有一条break;,case分支可以置空,case判断的变量允许使用字符串,任两条case判断条件不能相同。
  9. C#里可以用goto。但是不能跳到代码块里。

flag{8e2e9058-efdd-406e-9f47-e3857380f6e7}