先说第一个如何与数据库建立连接。
一般来说,我们访问MySQL数据库时,首先需要使用telnet远程登录安装数据库系统的服务器,然后再进入MySQL数据库。MySQL数据库的连接命令如下:
mysql -h hostname -u username -p[password]
或者:
mysql -h hostname -u username --password=password
其中,hostname为装有MySQL数据库的服务器名称,username和password分别是用户的登录名称和口令。
如果MySQL数据库安装和配置正确的话,用户在输入上述命令之后会得到如下系统反馈信息:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 49 to server version: 3.21.23-beta-log
Type 'help' for help.
mysql>
这样,用户就成功进入了MySQL数据库系统,可以在mysql>命令提示符之后输入各种命令。
下面我们来说一些主要管理命令,当然你可以在HELP下获得 (我就是从里面copy的)
mysql> help
help (\h) 显示命令帮助
? (\h) 作用同上
clear (\c) 清除屏幕内容
connect (\r) 重新连接服务器,可选参数为 db(数据库)和 host(服务器)
exit (\) 退出mysql数据库,作用与quit命令相同
go (\g) 将命令传送至mysql数据库
print (\p) 打印当前命令
quit (\q) 退出mysql数据库
status (\s) 显示服务器当前信息
use (\u) 打开数据库,以数据库名称作为命令参数
上述命令主要用于MySQL数据库的系统管理,如果用户需要对某个具体的数据库进行操作,可以使用use命令进入该数据库,格式如下:
mysql> use dbname;
在MySQL数据库中,用于保存数据记录的结构被称为数据表。而每一条数据记录则是由更小的数据对象,即数据类型组成。因此,总体来说,一个或多个数据类型组成一条数据记录,一条或多条数据记录组成一个数据表,一个或多个数据表组成一个数据库。我们可以把上述结构理解为如下形式:
Database < Table < Record < Datatype
MySQL 数据库提供了多种数据类型,其中较为常用的几种如下: (这个就简单介绍了)
CHAR (M)CHAR数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中M代表字符串的长度。
VARCHAR (M) VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。
INT (M) [Unsigned]
light_years INT
DATEDATE数据类型用于保存日期数据,默认格式为YYYY-MM-DD。
这个很重要的,举个例子
the_date DATE;
TEXT / BLOB
SET
ENUM
基本就这么多,我没有详细说是因为好象大家可能对这不感兴趣,如果你有兴趣的话,用-QQ联络我,我推荐几个好东西给你,今天时间不早了,就说到着明天我们说下面的内容。可能这2天大家觉得很无聊,但不吃一番苦怎们能开心呢?好象是这样说的吧,呵呵
好象不怎么全哦, 我来发全!
数据库从最初的数据文件的简单集合发展到今天的大型数据库管理系统已经成为我们日常生活中不可缺少的组成部分。如果不借助数据库的帮助,许多简单的工作将变得冗长乏味,甚至难以实现。尤其是象银行、院校和图书馆这样的大型组织更加依*数据库系统实现其正常的运作。再看互联网上,从搜索引擎到在线商场,从网上聊天到邮件列表,都离不开数据库。
目前,市面上的数据库产品多种多样,从大型企业的解决方案到中小企业或个人用户的小型应用系统,可以满足用户的多样化需求。这里,我们所要向大家介绍的MySQL数据库是众多的关系型数据库产品中的一个,相比较其它系统而言,MySQL数据库可以称得上是目前运行速度最快的SQL语言数据库。除了具有许多其它数据库所不具备的功能和选择之外,MySQL数据库是一种完全免费的产品,用户可以直接从网上下载数据库,用于个人或商业用途,而不必支付任何费用(推荐下载站点http://www.mysql.com)。
总体来说,MySQL数据库具有以下主要特点:
1. 同时访问数据库的用户数量不受限制;
2. 可以保存超过50,000,000条记录;
3. 是目前市场上现有产品中运行速度最快的数据库系统;
4. 用户权限设置简单、有效。
如今,包括Siemens和Silicon Graphics这样的国际知名公司也开始把MySQL作为其数据库管理系统,这就更加证明了MySQL数据库的优越性能和广阔的市场发展前景。
本文将重点向读者介绍MySQL数据库的一些基本操作,包括如何与数据库建立连接,如果设置数据库,以及如何执行基本的命令等。希望能够对读者学习和掌握MySQL数据库有所助益。
入门
一般来说,我们访问MySQL数据库时,首先需要使用telnet远程登录安装数据库系统的服务器,然后再进入MySQL数据库。MySQL数据库的连接命令如下:
mysql -h hostname -u username -p[password]
或者:
mysql -h hostname -u username --password=password
其中,hostname为装有MySQL数据库的服务器名称,username和password分别是用户的登录名称和口令。
如果MySQL数据库安装和配置正确的话,用户在输入上述命令之后会得到如下系统反馈信息:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 49 to server version: 3.21.23-beta-log
Type 'help' for help.
mysql>
这样,用户就成功进入了MySQL数据库系统,可以在mysql>命令提示符之后输入各种命令。下面,我们列出一些MySQL数据库的主要管理命令供读者参考,用户也可以通过在命令符之后输入help,\h或?得到以下命令的简单说明。
mysql> help
help (\h) 显示命令帮助
? (\h) 作用同上
clear (\c) 清除屏幕内容
connect (\r) 重新连接服务器,可选参数为 db(数据库)和 host(服务器)
exit (\) 退出mysql数据库,作用与quit命令相同
go (\g) 将命令传送至mysql数据库
print (\p) 打印当前命令
quit (\q) 退出mysql数据库
status (\s) 显示服务器当前信息
use (\u) 打开数据库,以数据库名称作为命令参数
上述命令主要用于MySQL数据库的系统管理,如果用户需要对某个具体的数据库进行操作,可以使用use命令进入该数据库,格式如下:
mysql> use dbname;
这里需要提醒读者注意的一点就是MySQL数据库要求使用者在所有命令的结尾处使用“;”作为命令结束符。
数据类型和数据表
从本质上说,数据库就是一种不断增长的复杂的数据组织结构。在MySQL数据库中,用于保存数据记录的结构被称为数据表。而每一条数据记录则是由更小的数据对象,即数据类型组成。因此,总体来说,一个或多个数据类型组成一条数据记录,一条或多条数据记录组成一个数据表,一个或多个数据表组成一个数据库。我们可以把上述结构理解为如下形式:
Database < Table < Record < Datatype
数据类型分为不同的格式和大小,可以方便数据库的设计人员创建最理想的数据结构。能否正确的选择恰当的数据类型对最终数据库的性能具有重要的影响,因此,我们有必要首先对数据类型的有关概念进行较为详细的介绍。
MySQL 数据类型
MySQL 数据库提供了多种数据类型,其中较为常用的几种如下:
CHAR (M)
CHAR数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中M代表字符串的长度。
举例如下:
car_model CHAR(10);
VARCHAR (M)
VARCHAR是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。因此,对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。VARCHAR数据类型所支持的最大长度也是255个字符。
这里需要提醒读者注意的一点是,虽然VARCHAR使用起来较为灵活,但是从整个系统的性能角度来说,CHAR数据类型的处理速度更快,有时甚至可以超出VARCHAR处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡。
举例如下:
car_model VARCHAR(10);
INT (M) [Unsigned]
INT数据类型用于保存从- 2147483647 到2147483648范围之内的任意整数数据。如果用户使用Unsigned选项,则有效数据范围调整为0-4294967295。举例如下:
light_years INT;
按照上述数据类型的设置,-24567为有效数据,而3000000000则因为超出了有效数据范围成为无效数据。
再例如:
light_years INT unsigned;
这时,3000000000成为有效数据,而-24567则成为无效数据。
FLOAT [(M,D)]
FLOAT数据类型用于表示数值较小的浮点数据,可以提供更加准确的数据精度。其中,M代表浮点数据的长度(即小数点左右数据长度的总和),D表示浮点数据位于小数点右边的数值位数。
举例如下:
rainfall FLOAT (4,2);
按照上述数据类型的设置,42.35为有效数据,而324.45和3.542则因为超过数据长度限制或者小数点右边位数大于规定值2成为无效数据。
DATE
DATE数据类型用于保存日期数据,默认格式为YYYY-MM-DD。MySQL提供了许多功能强大的日期格式化和操作命令,本文无法在此一一进行介绍,感兴趣的读者可以参看MySQL的技术文档。
DATE数据类型举例如下:
the_date DATE;
TEXT / BLOB
TEXT和BLOB数据类型可以用来保存255 到65535个字符,如果用户需要把大段文本保存到数据库内的话,可以选用TEXT或BLOB数据类型。TEXT和BLOB这两种数据类型基本相同,唯一的区别在于TEXT不区分大小写,而BLOB对字符的大小写敏感。
SET
SET数据类型是多个数据值的组合,任何部分或全部数据值都是该数据类型的有效数据。SET数据类型最大可以包含64个指定数据值。
举例如下:
transport SET ("truck", "wagon") NOT NULL;
根据上述数据类型的设置,truck、wagon、以及truck,wagon都可以成为transport的有效值。
ENUM
ENUM数据类型和SET基本相同,唯一的区别在于ENUM只允许选择一个有效数据值。例如:
transport ENUM ("truck", "wagon") NOT NULL;
根据上述设置,truck或wagon将成为transport的有效数据值。
以上,我们只是对用户使用MySQL数据库的过程中经常用到的数据类型进行了简单介绍,有兴趣的读者,可以参看MySQL技术文档的详细说明。
数据记录
一组经过声明的数据类型就可以组成一条记录。记录小到可以只包含一个数据变量,大到可以满足用户的各种复杂需求。多条记录组合在一起就构成了数据表的基本结构。
数据表
在我们执行各种数据库命令之前,首先需要创建用来保存信息的数据表。我们可以通过以下方式在MySQL数据库中创建新的数据表:
mysql> CREATE TABLE test (
> name VARCHAR (15),
> email VARCHAR (25),
> phone_number INT,
> ID INT NOT NULL AUTO_INCREMENT,
> PRIMARY KEY (ID));
系统反馈信息为:
Query OK, 0 rows affected (0.10 sec)
mysql>
这样,我们就在数据库中创建了一个新的数据表。注意,同一个数据库中不能存在两个名称相同的数据表。
这里,我们使用CREATE TABLE命令创建的test数据表中包含name,email,phone_number和ID四个字段。MySQL数据库允许字段名中包含字符或数字,最大长度可以达到64个字符。
下面,我们来看一看创建数据表时所用到的几个主要的参数选项。
Primary Key
具有Primary Key限制条件的字段用于区分同一个数据表中的不同记录。因为同一个数据表中不会存在两个具有相同值的Primary Key字段,所以对于那些需要严格区分不同记录的数据表来说,Primary Key具有相当重要的作用。
Auto_Increment
具有Auto_Increment限制条件的字段值从1开始,每增加一条新记录,值就会相应地增加1。一般来说,我们可以把Auto_Increment字段作为数据表中每一条记录的标识字段。
NOT NULL
NOT NULL限制条件规定用户不得在该字段中插入空值。
其它数据表命令
除了创建新的数据表之外,MySQL数据库还提供了其它许多非常实用的以数据表作为操作对象的命令。
显示数据表命令
mysql> show tables;
该命令将会列出当前数据库下的所有数据表。
显示字段命令
mysql> show columns from tablename;
该命令将会返回指定数据表的所有字段和字段相关信息。
数据操作
对MySQL数据库中数据的操作可以划分为四种不同的类型,分别是添加、删除、修改和查询,我们将会在本节中对此进行介绍。但是,首先我们需要强调的一点就是MySQL数据库所采用的SQL语言同其它绝大多数计算机编程语言一样,对命令的语法格式有严格的规定。任何语法格式上的错误,例如不正确的使用括号、逗号或分号等都可能导致命令执行过程中的错误。因此,建议用户在学习时一定要多留心语法格式的使用。
添加记录
用户可以使用INSERT命令向数据库中添加新的记录。
例如:
mysql> INSERT INTO test VALUES
mysql> ('John', 'carrots@mail.com',
mysql> 5554321, NULL);
上述命令正确执行后会返回以下信息:
Query OK, 1 row affected (0.02 sec)
mysql>
对上述命令有几点我们需要说明。首先,所有的字符类型数据都必须使用单引号括起来。其次,NULL关键字与AUTO_INCREMENT限制条件相结合可以为字段自动赋值。最后,也是最重要的一点就是新记录的字段值必须与数据表中的原字段相对应,如果原数据表中有4个字段,而用户所添加的记录包含3个或5个字段的话都会导致错误出现。
MySQL数据库的一个非常显著的优势就是可以对整数、字符串和日期数据进行自动转换。因此,用户在添加新记录时就不必担心因为数据类型不相符而出现错误。
查询数据
如果我们无法从数据库中查找和读取数据的话,数据库就丧失了其存在和使用的价值。
在MySql数据库中,用户可以使用SELECT命令进行数据的查询。
例如:
mysql> SELECT * FROM test
mysql> WHERE (name = "John");
上述命令会返回如下结果:
name
phone
ID
John
carrots@mail.com
5554321
1
删除数据
用户除了可以向数据表中添加新的记录之外,还可以删除数据表中的已有记录。删除记录可以使用DELETE命令。
例如:
mysql> DELETE FROM test
mysql> WHERE (name = "");
该命令将会删除test数据表中name字段的值为John的记录。同样,
mysql> DELETE FROM test
mysql> WHERE (phone_number = 5554321);
将会从数据表中删除phone_number字段值为5554321的记录。
修改数据
MySQL数据库还支持用户对已经输入到数据表中的数据进行修改。修改记录可以使用UPDATE命令。
例如:
mysql> UPDATE test SET name = 'Mary'
mysql> WHERE name = "John";
上述命令的执行结果如下:
name
phone
ID
Mary
carrots@mail.com
5554321
1
到此为止,我们对MySQL数据库数据操作的核心概念,即数据的添加、删除、修改和查询进行了简单的介绍。
『第12天』从ipc$ 连接失败讲起
我们最好先来看一下什么是ipc¥连接。ipc(internet process connection)是远程网络连接。而ipc$,admin$,c$,d$,e$这些则是winnt和win2000的默认共享。ipc$就是一种管道通讯,它在两个ip间建立一个连接。我们一般看到对方主机开了139,445,我们一般就说对方开了共享。就可以尝试用ipc¥连接,具体怎么样你应该没问题了吧。(这种功能只在winnt和win2000种才有,windows98是没有的。 )
很多朋友对ipc¥连接的概念很混淆,我在这里罗嗦几句,ipc¥连接分为ipc$空连接和带有一定权限ipc$连接,这两者可是大大的不一样,许多朋友在建立了空连接之后,就着急的想copy工具上去,这是肯定会报错的,其实这也是很多朋友经常碰到的问题。因为这是空连接,没有任何的权限(就好像匿名访问一样),除了可以得到远程主机的netbios信息外,什么命令都执行不了而可以复制文件是你获得了一定的权限后,比如说你得到一个管理员密码是空口令,也就是带有一定权限的ipc$连接,空连接只是简单的和远程主机建立了一个通讯的管道。是不是什么用都没有呢?当然不是了,我们可以用暴力破解的方法来得到管理员的密码,就是挂上字典不断地进行对ipc$空连接的试探,从而达到取得管理员密码的目的,什么好用你就用什么。到这里我已经对ipc¥空连接和带有一定权限ipc$连接有了一个比较清楚的了解。 很多朋友可能会说说了半天也没到重点。别急嘛,就是作为个知识理解也很好嘛
现在我们分析一下会有那些错误
错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码
我们现在已经了解了ipc$失败的原因,我们知道稍微有一点安全意识的网络管理员都会关闭掉共享,不会给你机会用简单的ipc$连接进入他的机子,当然也不排除了哈^_^,而如果他屏蔽掉了ipc$共享并且开了很少的服务(或者根本禁止了许多可以利用的服务),就算你通过某种方法比如说溢出攻击,得到了权限,进入了系统,这时你添加一个账号也没什么意义。想用ipc$连接上传工具,却发现连续的报错,错误1326和错误67比较简单,容易对付。如果碰到对方开了防火墙,也就是(错误67),远程连接不上,我们怎么办呢?这里提供几种办法,
1、杀掉远程主机中的防火墙,如果对方安装了resouce kit 那么我们就可以用tlist 和kill 两个命令来找到并且杀掉防火墙的进程。
2、利用tftp。并不是说有的管理员都安装了resouce kit,那我们怎么办呢?我们知道2000是自带的tftp,我们可以用tftp来上传工具,如tlist 、kill等等,然后关闭防火墙和杀毒软件
3、利用自己的ftp。我们还可以自己驾一个ftp服务器,然后用远程的计算机反过来ftp我们自己的机子,达到上传工具的目的。然后杀掉进程...(其实已经没必要了)剩下的就随你的便了。
上面的几种解决办法也只是假设,因为一般的管理员都会想办法禁止windows自带tftp客户端的使用,这样给我们就有点麻烦。但有时候还是有用的哦
[第13天]80端口攻击总结
我将描述每种攻击的作用,和其怎样利用这些漏洞进行攻击(注意host的意思你应该懂吧)
(1)'.' '..' 和 '...' 请求
这些攻击痕迹是非常普遍的用于web应用程序和web服务器,它用于允许攻击者或者蠕虫病毒程序改变web服务器的路径,获得访问非公开的区域。大多数的CGI程序漏洞含有这些'..'请求。
Example:
http://host/cgi-bin/lame.cgi?file=../../../../etc/motd
这个列子展示了攻击者请求mosd这个文件,如果攻击者有能力突破web服务器根目录,那么可以获得更多的信息,并进一步的获得特权。
(2)'%20' 请求
%20是表示空格的16进制数值,虽然这个并不代表你能够利用什么,但是在你浏览日志的时候会发现它,一些web服务器上运行的应用程序中这个字符可能会被有效的执行,所以,你应该仔细的查看日志。另一方面,这个请求有时可以帮助执行一些命令。
Example:
http://host/cgi-bin/lame.cgi?page=ls%20-al|
这个列子展示了攻击者执行了一个unix的命令,列出请求的整个目录的文件,导致攻击者访问你系统中重要的文件,帮助他进一步取得特权提供条件。
(3)'%00' 请求
%00表示16进制的空字节,他能够用于愚弄web应用程序,并请求不同类型的文件。
Examples:
http://host/cgi-bin/lame.cgi?page=index.html
这可能是个有效的请求在这个机子上,如果攻击者注意到这个请求动作成功,他会进一步寻找这个cgi程序的问题。
http://host/cgi-bin/lame.cgi?page=../../../../etc/motd
也许这个cgi程序不接受这个请求,原因在于它要检查这个请求文件的后缀名,如:html.shtml或者其他类型的文件。大多数的程序会告诉你所请求的文件类型无效,这个时候它会告诉攻击者请求的文件必须是一某个字符后缀的文件类型,这样,攻击者可以获得系统的路径,文件名,导致在你的系统获得更多的敏感信息
http://host/cgi-bin/lame.cgi?page=../../../../etc/motd%00html
注意这个请求,它将骗取cgi程序认为这个文件是个确定的可接受的文件类型,一些应用程序由于愚蠢的检查有效的请求文件,这是我们常用的方法。
(4)'|' 请求
这是个管道字符,在unix系统用于帮助在一个请求中同时执行多个系统命令。
Example:
# cat access_log| grep -i '..'
(这个命令将显示日志中的“..“请求,常用于发现我们和蠕虫攻击)
常可以看到有很多web应用程序用这个字符,这也导致IDS日志中错误的报警。
在你的程序仔细的检查中,这样是有好处的,可以降低错误的警报在入侵检测系统中。
下面给出一些列子:
http://host/cgi-bin/lame.cgi?page=../../../../bin/ls|
这个请求命令执行,下面是一些变化的列子
http://host/cgi-bin/lame.cgi?page=../../../../bin/ls%20-al%20/etc|
这个请求在unix系统中列出/etc目录的所有文件
http://host/cgi-bin/lame.cgi?page=cat%20access_log|grep%20-i%20'lame'
这个请求cat命令的执行并且grep命令也将执行,查询出”lame'
(5)';' 请求
在unix系统,这个字符允许多个命令在一行执行
Example:
# id;uname -a
(执行id命令后,紧跟着执行uname命令)
一些web程序用这个字符,可能导致在IDS日志中失败的警告,应该仔细的检查web程序,让IDS警报失败的几率降低
(6)'<' 和 '>' 请求
应该检查你的日志记录中这两个字符,众多的原因中,首要的一个是这个字符表明了添加数据在文件中
Example 1:
# echo 'your hax0red h0 h0' >> /etc/motd (请求写信息在motd这个文件中)
一个攻击者可以容易的用象上面的这个请求篡改你的web页面。比如著名的RDS exploit常被攻击者用于更改web主页面。
Example 2:
http://host/something.php=Hi%20mom%20Im%20Bold!
你会注意到这里html语言的标志,同样用了“〈”,“〉”字符,这种攻击不能导致攻击者对系统进行访问,它迷惑人们认为这是个合法的信息在web站点中(导致人们在访问这个联结的时候访问到攻击者设定的地址,这种请求可能会被转变成16进制的编码字符形式,使攻击的痕迹不那么明显)
(7)'!'请求
这种字符请求常用语对SS(Server Side Include) I进行攻击,如果攻击者迷惑用户点击被攻击者设定的联结,和上面的一样。
Example:
http://host1/something.php=
这个列子是攻击者可能会做的,它让一个host2站点上的文件看起来是来自于 host1上面的(当然,需要访问者访问这个被攻击者设定的联结。这种请求可能被转化成16进制的编码伪装,不易发现)
同时,这种方式也可以以web站点的权限执行命令
Example:
http://host/something.php=
这个列子在远程的系统上执行“id'的命令,它将显示这个web站点用户的id,通常是”nobody'或者“www'
这种形式也允许包含隐藏文件。
Example:
http://host/something.php=
这个隐藏文件.htpasswd不会被显示出来,Apache建立的规则会拒绝这种以.ht 形式的请求,而SSI标志会绕过这种限制,并导致安全问题
(8)' 这种攻击用于试图在远程的web应用程序中插入PHP程序,它可能允许执行命令,这取决于服务器的设置,和其他起作用的一些因素(比如php设置为安全模式)
Example: http://host/something.php=
在某些简单的php应用程序中,它可能会在远程系统上以web站点用户的权限执行本地命令
(9)'`' 请求
这种字符后面常用在perl中执行命令,这个字符在web应用程序中不是经常的使用,所以,如果看到它在你的日志中,应该非常小心
Example:
http://host/something.cgi=`id`
一个perl写的有问题的cgi程序,会导致执行id命令
下面是针对管理员说的,因为现在很多网管都在看这个,所以我觉得有必要写一点,当然也是让你知道你的对手有哪些着数了,呵呵.我只是罗列了一些攻击后的痕迹,当然不能罗列所有了
'/bin/ls'
这个命令请求整个路径,在很多的web应用程序中都有这个漏洞,如果你在日志中很多地方都看到这种请求,很大的可能性是存在远程执行命令漏洞,但并不一定是个问题,也可能是个错误的警报。再一次提醒,写好的web应用程序(cgi,asp,php...etc)是安全的基础
Example:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/ls%20-al|
http://host/cgi-bin/bad.cgi?doh=ls%20-al;
'cmd.exe'
这是一个windows的shell,一个攻击者如果访问并运行这个脚本,在服务器设置允许的条件下可以在windows机器上做任何事情,很多的蠕虫病毒就是通过80端口,传播到远程的机器上
http://host/scripts/something.asp=../../WINNT/system32/cmd.exe?dir+e:
'/bin/id'
这是个2进制的文件,它的问题和/bin/ls一样,如果你在日志中很多地方都看到这种请求,很大的可能性是存在远程执行命令漏洞,但并不一定是个问题,也可能是个错误的警报。
它将显示属于哪个用户和属于哪个组
Example:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/id|
http://host/cgi-bin/bad.cgi?doh=id;
'/bin/rm'
这个命令可以删除文件,如果不正确的使用是非常危险的
Examples:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/rm%20-rf%20*|
http://host/cgi-bin/bad.cgi?doh=rm%20-rf%20*;
'wget and tftp' 命令
这些命令常被攻击者用来下载可能进一步获得特权的文件,wget是unix下的命令,可能被用来下载后门程序,tftp是unix和nt下的命令,用来下载文件。一些IIS蠕虫通过tftp来复制自身传播病毒到其他的主机