¨t²Î¡G
Linux Mandrake 8.0
¦WºÙ¡G
doexec
¦ì¸m¡G
/bin/doexec
¥Dn¥Î³~¡G
°õ¦æ¤@Ó°õ¦æÀÉ¡A¨Ã«ü©w¥ô·Nªºargv[0]·í§@°Ñ¼Æ¡C
¨Ï¥Î»¡©ú¡G
doexec /path/to/executable argv[0] [argv[1-n]]
´yz¡G
doexec¥u¬O°õ¦æ¤@Ó°õ¦æÀÉ¡A¨Ã¥BÀHµÛ°Ñ¼Æ¡C¥LÅý§A¥i¥H«ü©wargv[0]
·í§@°Ñ¼Æ¡A¦Ó¤£¥u¬O³æ³æ¤@Ó°õ¦æÀɦWºÙ¦Ó¤w¡C
¥\¯à¿ï¶µ¡G
¦bµ{¦¡¦WºÙ¤Îargv[0]«áªº©Ò¦³°Ñ¼Æ³£·|¶Çµ¹µ{¦¡°õ¦æ¡C
shared library¡G
/lib/libc.so.6 (0x4001c000)
/lib/ld-linux.so.2 (0x40000000)
¨Ï¥Î½d¨Ò¡G
¥H¤U¬O¤@Óshell script
#!/bin/bash
echo $*
$doexec ./passargv.sh 1 2 3 4 5
2 3 4 5
¨t²Î¡G
Linux Mandrake 8.0
¦WºÙ¡G
ping
¦ì¸m¡G
/bin/ping
¥Dn¥Î³~¡G
¶Ç°eICMP ECHO_REQUEST«Ê¥]µ¹ºô¸ô¤Wªº¥D¾÷
¨Ï¥Î»¡©ú¡G
ping [-LRUbdfnqrvV] [-c count] [-i interval] [-l preload] [-p pattern]
[-s packetsize] [-t ttl] [-w deadline] [-I interface address]
[-Ttimestamp option] [-Q tos] [-M hint] host
´yz¡G
ping¨Ï¥ÎICMP¨ó©w¤¤ªºECHO_REQUEST«Ê¥]¥hIJµoºô¸ô¤Wªº¤@¥x¥D¾÷¡A¨Ï¨ä¦^°eECHO_RESPONSE«Ê¥]¡C
ECHO_REQUEST«Ê¥]¦³IP©MICMPªº¼ÐÀY¡Aºò±µµÛ¬Ostruct timeval(¤@¬q®É¶¡¶¡®æ)¡A³Ñ¤U«h¥Ñpad
(¶ñ¶ë«Ê¥]¥Î)¨Ó±N«Ê¥]¶ñº¡¡C
¥\¯à¿ï¶µ¡G
-b ¤¹³\¥hpinging¤@Ó¼s¼½¦ì§}¡C
-c count
¶Ç°e"count"ÓECHO_REQUEST«Ê¥]¤§«á°±¤î¶Ç°e¡C©M"-w deadline"¥\¯à¤@°_¥Îªº¸Ü¡Aping·|µ¥«Ý"count"Ó ECHO_REPLY«Ê¥]ª½¨ì®É¶¡¨ì¬°¤î¡C
-d ³]©wSO_DEBUG¥\¯à¦b¤@ӨϥΪºsocket¡C
-f ¦p²r¤ô¯ëºÆ¨gªºping¡C¶Ç°e«Ê¥]ªº³t«×¥i¹F±µ¦¬«Ê¥] ªº³t«×ªº¦Ê¿¬Æ¦Ü§ó¦h¡C¹ï¨C¤@Ó°e¥X¥hªºECHO_REQUEST
·|¦b¿Ã¹õ¤W¦L¥X"."¡A¦Ó¹ï¨C¤@Ó¦¬¨ìªºECHO_REPLY«h·|¦L¥Xbackspace¡C³o¥i¥H´£¨Ñ¤@ӹ靈¦h¤Ö«Ê ¥]¥á±¼ªº §Ö³tªí¹F¤è¦¡¡C
-i wait
¦b¶Ç°e¨C¤@Ó«Ê¥]¤§¶¡µ¥"wait"ªº®É¶¡¡C¹w³]ȬO¤@¬í¡C³o¥\¯à¿ï¶µ©M¥\¯à¿ï¶µ" -f "¤£¬Û®e¡C
-I interface address
«ü©w¤@Óinterface address¨Ó·í¨Ó·½¦ì§}¡C
-l preload ¥H³Ì§Öªº³t«×°e¥X"preload"ÓECHO_REQUEST«Ê¥] ¤§«á¡A«K¦^´_¨ìping¤@¯ëªº¹B§@¼Ò¦¡¡C¥u¦³¶W¯Å¨Ï¥ÎªÌ¯à¨Ï
¥Î³oÓ¥\¯à¿ï¶µ¡C
-L À£§ímulticast«Ê¥]ªºloopback¡C³o¿ï¶µ¥u¯à¥Î¦b³Qpingªº¥Ø¼Ð¬Omulticast¦ì§}¡C
-p pattern
¥i¥HÅý§A³Ì¦h«ü©w16Ópad¦ì¤¸²Õ¥h¶ñº¡°e¥Xªº«Ê¥] ¡C³o¦b¤@Óºô¸ô¸Ì¶EÂ_¸ò"¸ê®Æ¬Û¨Ì"ªº°ÝÃD¬O«D±`¦³¥Îªº ¡C¨Ò¦p¡G"-p ff"±N·|¥H"1"¶ñº¡n°e¥Xªº«Ê¥]¡C
-Q tos
¦bICMP¼Æ¾Ú¤º³]©wQoS(ªA°È«~½è)¬ÛÃöªº¦ì¤¸¡C"tos"¥i¥H¬O¤Q¶i¦ì©Î¤Q¤»¶i¦ì¡C¶Ç²Î¤W(RFC1394) ¡A¥i¥H¤À¦¨ ¦p¤U¡G
¦ì¤¸0¡G «O¯d¥Î(¥Ø«e¤w¸g³Q«·s©w¸q¨Ó·í¾Ö¶ë±±¨î(congestion control)¥Î)¡C ¦ì¤¸1-4¡G ªA°ÈªººØÃþ¡C
¥i¯àªº³]©w¦³¡G0x22 ³Ì§C¦¨¥»; 0x04 ¥i¾a©Ê; 0x08 ³B²z¶q; 0x10 §C©µ¿ð¡C ¦ì¤¸5-7¡G Àu¥ýÅv¥ý«á¡C
¥i¯àªºÀu¥ýÅv½d³ò±q °ªÀu¥ýÅv0x20 ¨ì ºô¸ô±±¨î0xe0¡C§A¥²¶·¬O¶W¯Å¨Ï¥ÎªÌ (¬Û®eCAP_NET_ADMIN)¤~¯à¨Ï¥ÎÃöÁä©Ê©ÎªÌ¸û°ªªº¼ÆÈ¡C §A¤£¯à³]¬°0x01(«O¯d)¡A°£«D¦bkernel¸Ì¦³¶}±Ò"ECN"¡C ¦bRFC2474¸Ì¡A³oÄæ¦ìªºÈ¤w¸g³Q«·s©w¸q¦¨¤@Ó8¦ì¤¸ªº®t§OªA°È(Differentiated Services (DS))¡A¥Ñ¥H¤U ²Õ¦¨¡G
¦ì¤¸0-1¡G ¤À¶}ªº¸ê®Æ("ECN"¦b³o¸Ì³Q¨Ï¥Î) ¦ì¤¸2-7¡G ®t§OªA°È½XÂI(Differentiated Services Codepoint(DSCP))
-q ¦wÀR¿é¥X¡C¦b¿Ã¹õ¤W¤£Åã¥Ü°T®§¡A°£¤F¦b±Ò°Ê©Mµ²§ô®ÉªººKn°T®§¡C
-R ¬ö¿ý¸ô¥Ñ¡C¦bECHO__REQUEST¸Ì¥]§tRECORD_ROUTE¿ï¶µ¡A¦bªð¦^ªº«Ê¥] ¤¤¨ú±o¸ô¥Ñ½w½Ä¨ÃÅã¥Ü¥X¨Ó¡Cª`·N¡AIP
¼ÐÀY¥u¯à¸Ë¤U¤EÓ¸ô¥Ñ°T®§¡C«Ü¦h¥D¾÷©¿²¤©ÎªÌÃö³¬³o¿ï¶µ¡C
-r ¸õ¹L¤@¯ë¸ô¥Ñªí®æ¡Aª½±µ°eµ¹¦b¤@Óªþ¥[ºô¸ôªº¥D¾÷¡C°²¦p³o¥D¾÷¤£¦bªþ¥ [ªººô¸ô¤¤¡A«h·|¦³¿ù»~ªº°T®§²£¥Í
¡C³o¥\¯à¿ï¶µ¥i¥H³Q¨Ï¥Î¦bping¤@Ó¤£¥Î¸g¹L¸ô¥Ñªº¥D¾÷¤W¡C
-s packetsize
«ü©wn¶Ç°e«Ê¥]ªº¤j¤p¡C¹w³]ȬO56¦ì¤¸²Õ¡A¥[¤W8¦ì¤¸²ÕICMP¼ÐÀY¡A¦¨¬°64¦ì¤¸²ÕªºICMP«Ê¥] ¡C
-t ttl
³]©wIPªº"Time to Live"®É¶¡¡A³oÓ¥\¯à¥u¹ï¥Ø¼Ð¥D¾÷¬O¤@Ómulticast¦ì§}¡C
-T timestamp option
³]©w¯S§OªºIP®É¶¡ÂW°O¿ï¶µ¡Ctimestamp option¥i¥H¬O"tsonly"©ÎªÌ"tsandaddr©ÎªÌ"tsprespec [host1 [host2 [host3 [host 4]]]¡C
-M hint
¿ï¾ÜPATH MTU Discovery ¤è¦¡¡C"hint"¥i¥H¬O"do"(¸T¤î¤À³Î«Ê¥])©Î"want"(°µPATH MTU Discovery¡A ·í«Ê¥]¤Ó¤j®É¶i¦æ¤À³Î)©ÎªÌ"dont"(¤£³]©wDFºX¼Ð)¡^¡C
-U ¦L¥X¯u¥¿ªº¨Ï¥ÎªÌ¹ï¨Ï¥ÎªÌ©µ¿ð®É¶¡(¤èªk)¡C
-v ¸Ô²Óªº¿é¥X¡C
-V ¨q¥Xpingªºª©¥»¡C
-w deadline
«ü©w¤@Ó¨ì´Á®É¶¡¡C¥H¬ípºâ¡A¤£ºÞ¦b®É¶¡¨ì¤§«e°e¥X©Î¦¬¨ì¦h¤Ö«Ê¥]¡A®É¶¡¤@¨ì´N°±¤î¡C
¨Ï¥Îping¹ïºô¸ô°»¿ù®É¡AÀ³¸Ó¥ýÀˬd¦Û¤vªº¥D¾÷¡A¥hÅçÃÒºô¸ô¤¶±¬O§_¥¿±`¡Cping ¹ï«Ê¥]¨Ó¦^¨âºÝªº®É¶¡©M¿ò¥¢ªº«Ê¥]³£·| ²Îp°_¨Ó°²¦p¦³¨âÓ¬Û¦Pªº«Ê¥]³Q±µ¦¬¡A«h«Ê¥]¿ò¥¢ªº²Îp¤£·|¯Ç¤J³o¨âÓ«Ê¥]¡A¦ý«Ê¥] ¨Ó¦^¨âºÝªº®É¶¡·|³Qpºâ¡C·í¨Ï¥Î ping®É¡A¥un¦³¶Ç°e©Î±µ¦¬¨ì«Ê¥]¡A´Nºâ¤¤³~³Q¥HSIGINTµ²§ô¡AÁÙ¬O·|¦³Â²µuªººKn¥X²{¡C
°²¦pping¨S¦³¦¬¨ì¥ô¦ó¦^À³ªº«Ê¥]¡A±N·|¥Hcode 1 Â÷¶}; °²¦p·f°t-c count©M-w deadline¡A¦Ó¥B¦bdeadline¨ì¹F¤§«e¡A¦¬¨ì ªº«Ê¥]¤ñ¶Ç°eªºÁÙ¤Ö¡A«h¤]·|¥Hcode 1 Â÷¶}¡C¦pªG¬O¨ä¥Lªº¿ù»~«h¥Hcode 2 Â÷¶}¡C¨ä¥L«h¥Hcode 0 Â÷¶}¡C³o¨Ï±o¯à°÷§Q¥Î exit code¨Ó§PÂ_¤@Ó¥D¾÷¬O§_ÁÙ¬¡µÛ¡C
ping³oÓµ{¦¡¸û¾A¦X¥Î¨Óºô¸ô´ú¸Õ¡B¶q´ú©MºÞ²z¡C¦] ¬°ping·|¹ïºô¸ô³y¦¨¤£¤pªºt²ü¡A¦b¤@¯ë¨Ï¥Î¤W©ÎªÌ¦b©R¥O½Z¤W¨Ï¥Îping ¨Ã¤£©ú´¼¡C
¨ä¥L°Ñ¦Ò¡G
ICMP PACKET DETAIL
¤@Ó¨S¦³optionsªºIP¼ÐÀY¬O20¦ì¤¸²Õ¡C¤@ÓICMP ECHO_REQUEST«Ê¥]ÁÙ¦h¥]
§t¤F¤@Ó8¦ì¤¸²ÕªºICMP¼ÐÀY¡A¤§«á¸òµÛ¥ô·N¼Æ¶q
ªº¸ê®Æ¡C·í"packetsize"³Q«ü©w®É¡A´N«ü©w¤F¨º¨Ç¸ê®Æªº¤j¤p¡C¹w³]ȬO56¦ì¤¸²Õ¡C¦]
¦¹¡A¹ï©ó¤@ÓECHO_REPLYªºIP«Ê¥]©Ò±µ
¦¬¨ìªº¸ê®Æ¶q·|¤ñICMP¼ÐÀY¦h¦Ü¤Ö8¦ì¤¸²Õ¡C°²¦p¸ê®Æ¤j¤p¦b8¦ì¤¸²Õ¥H¤W¡Aping·|¨Ï¥Î«e8Ӧ줸²Õ¥Î¨Ó
¬ö¿ýtimestamp¡A¦np
ºâ«Ê¥]¨Ó¦^®É¶¡¡CÕY¸ê®Æ¶q¤p©ó8¦ì¤¸²Õ¡A«h«Ê¥]¨Ó¦^®É¶¡±N¤£·|³Qpºâ¡C
DUPLICATE AND DAMAGED PACKETS
ping·|¹ï¬Û¦P©M¯}·lªº«Ê¥]°µ³ø§i¡C¬Û¦Pªº«Ê¥]
¤£À³¸Ó·|µo¥Í¡A¦Ó¥BÀ³¸Ó¬O¥Ñ³sµ²¼h«¶Ç°e©Ò³y¦¨¡C¬Û¦P«Ê¥]ªº±¡ªp¥i¯à·|µo
¥Í¦b«Ü¦h±¡§Î¤U¡A¦ý³£¬O«Ü¨u¨£µo¥Íªº¡A©Ò¥Hping¹ï¬Û¦Pªº«Ê¥]¤£·|¤Þ°_¤@Óĵ§i¡C¯}·lªº«Ê¥]
¬O«Ü©úÅãÄY«ªºÄµ§i¡C¦Ó¥B±`
±`«ü¥X¦b«Ê¥]¸g¹Lªº¸ô³~¤W¥i¯à¦³µwÅ骺¯}·l¡A¤ñ¦p¦b¥D¾÷¤W©Îºô¸ô¤W¡C
TRYING DIFFERENT DATA PATTERNS
¦bºô¸ô¼h¸Ì¹ï«Ý«Ê¥]¨Ã¤£·|¨Ì¾Ú¨ä©Ò¥]
§tªº¤º®e¦³®t§O¦Ó¤£¦P¡C¦ý¬O¤£©¯ªº¬O¡A¸ê®Æ¬Û¨Ìªº°ÝÃD¤w¸g°½°½ªº¶i¤Jºô¸ô¥Bºû«ù¦n
ªø¤@¬q®É¶¡¤F¡C¦b«Ü¦h¯S©wªº±¡ªp¤U·|µo¥Í¶Ç°e¤£¥R¤Àªº°ÝÃD¡A¤ñ¦p¸ê®Æ¥þ³£¬O1©ÎªÌ¥þ³£¬O0¡AÁöµM§Ú
̦b©R¦C¦C©Ò¥´¤Jªº©R
¥O¤£¨£±o¬O¤@³s¦êªºo©Î1¡A¦ý¬O¦b³sµ²¼h¤¤©Ò³B²zªº±¡§Î¥i¥H¬O«D±`½ÆÂøªº¡A¯u¥¿¶Ç°e®Éªº¸ê®Æ§Ų́ä
£¬O«Ü®e©öÁA¸Ñ¡C
³o·N¦®µÛ°²¨Ï§A¹J¨ì¸ê®Æ¬Û¨Ìªº°ÝÃD¡A¦p¤@ÓÀÉ®×µLªk¦bºô¸ô¶¡¶Ç°e©ÎªÌ¶Ç°e©Òªáªº®É¶¡¤ñ¬Û¦Pªø«×ÀÉ®
רӯS§O¤[¡C§A¥i¥H¨Ï
¥Î¥\¯à¿ï¶µ"-p"¨Ó°»¿ù¡C
TTL DETAILS
IP«Ê¥]ªºTTLȪí¥Ü¦b³Q¥á±¼«e¯à¸g¹Lªº³Ì¤j¸ô¥Ñ¾¹¼Æ¥Ø¡C¥Ø«eªº±¡ªp¤U¡A«Ê¥]
¨C¸g¹L¤@Ó¸ô¥Ñ¾¹¡A¨äTTLªºÈ´N·|³Q´î¥h1¡C
¦bTCP/IP³W®æ¤¤«ü¥XTCP«Ê¥]ªºTTLÈÀ³¸Ó³Q³]©w¦¨60¡A¦ý¬O«Ü¦h¨t²Î³£³]ªº¤ñ¸û§C¡A¦p4.3BSD³]¦¨30,
4.2BSD³]¦¨15¡C
TTLȳ̤j¥i¥H³]¦¨255¡C¦b¤j³¡¤ÀUNIX¨t²Î¤W¡A¹ïICMP ECHO_REQUESTªºTTLȳ]¦¨255¡C³o¤]
´N¬°¤°»ò¦³®ÉÔ§A¥i¥Îping§ä¨ì
¥D¾÷¦ý¬O«oµLªkftp©Îtelnet¥LÌ¡C
·í»·ºÝ¥D¾÷±µ¦¬¨ì¤@Ópingªº«Ê¥]®É¡A¥L¥i¥H¹ï¨äTTL«Ê¥]°µ¤TºØ¨Æ¡G
¾ú¥v¡G
ping³Ì¥ý¥X²{¦b4.3BSD¡C
shared library¡G
/lib/libresolv.so.2 (0x4001c000) /lib/libc.so.6 (0x4002e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
¨Ï¥Î½d¨Ò¡G
$ping -c 5 -i 3 140.113.92.114
¶Ç°e5ÓICMP_REQUEST«Ê¥]¦Ó¥B¨CÓ«Ê¥]¤§¶¡¶¡®æ3¬í¡A¶Ç°e«á«K·|µ²§ôµ{¦¡¨Ã²Îpµ²ªG¡C
$ping -f -s 1024 140.113.92.114
¨Ï¨CÓICMP«Ê¥]¤j¤p¬°1024¦ì¤¸²Õ¡A¨Ã¥B¨Ï¥Î¬x¤ô¥ÆÀݪº¼Ò¦¡¤£Â_ªº°e¥X«Ê¥]¡C
$ping -t 5 -w 10 140.113.92.114
±NTTL³]¦¨5¡A¨Ã¥B¦b10¬í«áµ²§ô¨Ã²Îpµ²ªG¡C
$ping -p ff -l 1024 140.113.92.114
¥H0xff¶ñº¡«Ê¥]¡A¨Ã¥B¥H³Ì§Ö³tªº³t«×°e¥X1024Ó«Ê¥]«á¡A«K¦^¨ì¤@¯ëªº³t«×°e¥X«Ê¥]¡C
¨t²Î¡G
Linux Mandrake 8.0
¦WºÙ¡G
true
¦ì¸m¡G
/bin/true
¥Dn¥Î³~¡G
¤£°µ¤°»ò¡A¦¨¥\¦a¡C
¨Ï¥Î»¡©ú¡G
true [ignored command line arguments]
true OPTION
´yz¡G
Â÷¶}µ{¦¡¨Ã¦ñÀHµÛ¤@Ó«ü¥X¦¨¥\ªºª¬ºA½X¡C
¥\¯à¿ï¶µ¡G
--help Åã¥Ü¥X³oÓ»¡©ú¨ÃÂ÷¶}¡C
--version ¿é¥X³oµ{¦¡ªºª©¥»¨ÃÂ÷¶}¡C
true ¤£°µ¥ô¦ó¨Æ¡A°£¤F¶Ç¦^¤@Ó¬°0ªºÂ÷¶}ª¬ºA¡A¥Nªí"¦¨¥\"¡C¥L¥i¥H³Q¨Ï¥Î©ñ¦bshell script¤¤¨Ó¥Nªí°õ¦æ¨S°ÝÃDªº«ü¥Oªº ¦a¤è¡AÁöµMshell ¤º«Øªº«ü¥O";"(¤À¸¹)°µ¦P¼Ëªº¨Æ¦Ó¥BÁÙ¤ñ¸û§Ö¡C true ©¿²¤©Ò¦³ªº°Ñ¼Æ¡A°£¤F--help ©M--version¡C ³o¤@Óª©¥»ªºtrue ¬O¥HC»y¨¥¹ê§@ªº¡A¤ñ¥H©¹¥Hshell scirpt¹ê§@¨Óªº¦w¥þ¦Ó¥B§Ö³t¡C¦Ó¥B¤] ³\¯à°÷¦w¥þªº¨Ï¥Î¦b¥Î¨Ó¨Ï±b¸¹ ¥¢®ÄªºªÅshell¤W±¡C
shared library¡G
/lib/libpam.so.0 (0x4001c000)
/lib/libpam_misc.so.0 (0x40024000) /lib/libc.so.6 (0x40027000)
/lib/libdl.so.2 (0x40154000)
/lib/ld-linux.so.2 (0x40000000)
¨Ï¥Î½d¨Ò¡G
¥H¤U¬O¤@Óshell script
#!/bin/bash
#filename: test.sh
less !@#$
echo "'less !@#$' ,return $?"
#¥¦·|¶Ç¦^¤@Óstatus code 1 ¥Nªí¿ù»~
true
echo "after 'true',return $?"
#¥¦·|¶Ç¦^¤@Óstatus code 0 ¥Nªí¥¿½T
$./test.sh
!@#$: No such file or directory
'less !@#$' ,return 1
after 'true',return 0