TCP/IPЭÒéջϵÁЩ¶´£¨NAME:WRECK£©·ÖÎö

Ðû²¼Ê±¼ä 2021-04-25

©¶´¸ÅÊö


2021Äê04ÔÂ13ÈÕ£¬FourscoreÑо¿ÊµÑéÊÒÓëJSOFºÏ×÷£¬Åû¶ÁËÒ»×éеÄDNS©¶´£¬±»³ÆΪNAME:WRECK¡£ÕâЩ©¶´Ó°ÏìÁËËÄÖÖÁ÷ÐеÄTCP/IP¶ÑÕ»--¼´FreeBSD¡¢IPnet¡¢Nucleus NETºÍNetX£¬ËüÃÇÆÕ±é´æÔÚÓÚÖªÃûµÄITÈí¼þºÍÁ÷ÐеÄIOT/OT¹Ì¼þÖУ¬²¢ÓпÉÄÜÓ°ÏìÈ«ÇòÊý°ÙÍòµÄÎïÁªÍøÉ豸¡£¹¥»÷Õß¿ÉÒÔÀûÓÃÕâЩ©¶´Ê¹ÊÜÓ°ÏìµÄÉ豸ÍÑ»ú»ò¶ÔÉ豸½øÐпØÖÆ¡£


Ïà¹Ø½éÉÜ


1¡¢DNSЭÒé֮ѹËõÖ¸Õë


ÔÚ֮ǰµÄÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁË»ù´¡µÄDNSЭÒ飬ÆäÖÐÓòÃûÊÇÓÉÒ»Á¬´®µÄlabel×é³ÉµÄ£¬ÈçÏÂͼËùʾ:


1.png


ÆäÖкì¿òËùʾΪÿ¸ölabelµÄ³¤¶È£¬Ã¿¸ölabel×Ϊ63×Ö½Ú£¬¶øÇÒ´¦ÖõÄʱºò£¬³ýÁ˵ÚÒ»¸ö³¤¶È×Ö½Ú£¬½«Ã¿¸ö³¤¶È×Ö½ÚÌ滻Ϊ¡±.¡±£¬×îºóÓöµ½null×Ö½Ú½áÊø£¬´Ó¶ø×é³ÉÁË×îºóµÄÓòÃû¡£


²»ÍâÔÚһЩ»Ø¸´°üÖУ¬»á°üÂÞ¶à´ÎA¼Ç¼»òCNAME¼Ç¼£¬Õâ¾ÍÔì³ÉÁËDNSÊý¾Ý¹ýÓÚÈß³¤£¬Òò´ËDNSЭÒéµÄÉè¼ÆÕßÉè¼Æ³öÁËѹËõÖ¸Õë¡£ÔÚѹËõÖ¸ÕëµÄ»úÖÆÖУ¬Í¨¹ýÖ¸ÕëÖ¸Ïò֮ǰ·ºÆð¹ýµÄÒ»Á¬´®label´Ó¶øµ½´ïѹËõµÄÄ¿µÄ¡£Õâ¸öÖ¸ÕëÓÉÁ½¸ö×Ö½Ú×é³É£¬µÚÒ»¸ö×Ö½ÚµÄÇ°Á½¸öbitsΪ11£¬ºóÃæ14¸öbitsΪƫÒƵØÖ·¡£

 

2.png


ÏÂÃæ¾ÙÒ»¸ö¾ßÌåµÄÀý×Ó£¬ÈçÏÂͼÊý¾Ý°üËùʾ£¬ºì¿òÄÚΪѹËõÖ¸Õ룬ָÏòÆ«ÒÆ0x0cµÄλÖã¬Ò²¾ÍÊÇwww.example.comµÄ¿ªÍ·´¦¡£


3.png


2¡¢DHCPЭÒé


 DHCP¶¯Ì¬Ö÷»úÅäÖÃЭÒ飬ǰÉíÊÇBOOTPЭÒ飬ÊÇÒ»¸ö¾ÖÓòÍøµÄÍøÂçЭÒ飬ʹÓÃUDPЭÒéÊÂÇ飬ͨ³£±»ÓÃÓÚ¾ÖÓòÍø»·¾³£¬Ö÷Òª×÷ÓÃÊǼ¯ÖеعÜÀí¡¢·ÖÅäIPµØÖ·£¬Ê¹¿Í»§¶Ë¶¯Ì¬µÄ»ñµÃIPµØÖ·¡¢GatewayµØÖ·¡¢DNS·þÎñÆ÷µØÖ·µÈÐÅÏ¢£¬²¢Äܹ»ÌáÉýµØÖ·µÄʹÓÃÂÊ¡£


DHCP±¨ÎĹ²ÓÐ8ÖÖ£¬·Ö±ðÈçÏÂËùʾ£º

DHCPDISCOVER £º¿Í»§¶Ë¿ªÊ¼DHCP¹ý³Ì·¢Ë͵ı¨ÎÄ£¬ÊÇDHCPЭÒéµÄ¿ªÊ¼¡£

DHCPOFFER£º·þÎñÆ÷½ÓÊÕµ½DHCPDISCOVERÖ®ºó×ö³öµÄÏìÓ¦£¬°üÂÞÁ˸øÓè¿Í»§¶ËµÄIP£¨yiaddr£©¡¢¿Í»§¶ËµÄMACµØÖ·¡¢×âÔ¼¹ýÆÚʱ¼ä¡¢·þÎñÆ÷µÄʶ±ð·ûÒÔ¼°ÆäËûÐÅÏ¢¡£

DHCPREQUEST£º¿Í»§¶Ë¶ÔÓÚ·þÎñÆ÷·¢³öµÄDHCPOFFERËù×ö³öµÄÏìÓ¦¡£ÔÚÐøÔ¼×âÆÚµÄʱºòͬÑù»áʹÓá£

DHCPACK£º·þÎñÆ÷ÔÚ½ÓÊÕµ½¿Í»§¶Ë·¢À´µÄDHCPREQUESTÖ®ºó·¢³öµÄÀÖ³ÉÈ·Èϵı¨ÎÄ¡£ÔÚ½¨Á¢Á¬½ÓµÄʱºò£¬¿Í»§¶ËÔÚ½ÓÊÕµ½Õâ¸ö±¨ÎÄÖ®ºó²Å»áÈ·ÈÏ·ÖÅä¸øËüµÄIPºÍÆäËûÐÅÏ¢¿ÉÒÔ±»ÔÊÐíʹÓá£

DHCPNAK£ºDHCPACKµÄÏà·´µÄ±¨ÎÄ£¬ÌåÏÖ·þÎñÆ÷¾Ü¾øÁË¿Í»§¶ËµÄÇëÇó¡£

DHCPRELEASE£ºÒ»°ã·ºÆðÔÚ¿Í»§¶Ë¹Ø»ú¡¢ÏÂÏßµÈ×´¿ö¡£Õâ¸ö±¨ÎĽ«»áʹDHCP·þÎñÆ÷ÊÍ·Å·¢³ö´Ë±¨ÎĵĿͻ§¶ËµÄIPµØÖ·¡£

DHCPINFORM£º¿Í»§¶Ë·¢³öÏò·þÎñÆ÷ÇëÇóһЩÐÅÏ¢µÄ±¨ÎÄ¡£

DHCPDECLINE£ºµ±¿Í»§¶Ë·¢ÏÖ·þÎñÆ÷·ÖÅäµÄIPµØÖ·ÎÞ·¨Ê¹Óã¨ÈçIPµØÖ·³åͻʱ£©£¬½«·¢³ö´Ë±¨ÎÄ£¬Í¨Öª·þÎñÆ÷½ûֹʹÓøÃIPµØÖ·¡£


DHCPÊý¾Ý°ü·¢Ë͹ý³Ì£¬ÈçÏÂͼËùʾ£º


4.png


DHCP±¨ÎĸñʽÈçÏÂͼËùʾ£º


5.png


²¿ÃÅÊý¾ÝÓò½ç˵£¬ÈçÏÂËùʾ£º


xid£ºËæ»úÉú³ÉµÄÒ»¶Î×Ö·û´®£¬Á½¸öÊý¾Ý°üÓµÓÐÏàͬµÄxid˵Ã÷ËûÃÇÊôÓÚͬһ´Î»á»°¡£

ciaddr£º¿Í»§¶Ë»áÔÚ·¢ËÍÇëÇóʱ½«×Ô¼ºµÄIP·ÅÔÚ´Ë´¦¡£

yiaddr£º·þÎñÆ÷»á½«ÏëÒª·ÖÅä¸ø¿Í»§¶ËµÄIP·ÅÔÚ´Ë´¦¡£

siaddr£ºÒýµ¼·¨Ê½ÖÐʹÓõÄÏÂÒ»¸ö·þÎñÆ÷µÄIPµØÖ·£»ÓÉ·þÎñÆ÷ÔÚDHCPOFFER£¬DHCPACKÖзµ»Ø¡£

chaddr£º¿Í»§¶ËµÄMACµØÖ·¡£

giaddr£ºÈç¹ûÐèÒª¿ç×ÓÍø½øÐÐDHCPµØÖ··¢·Å£¬ÔòÔÚ´Ë´¦ÌîÈë¾­¹ýµÄ·ÓÉÆ÷µÄIPµØÖ·¡£

sname£º·þÎñÆ÷Ö÷ÓòÃû¡£

options£º¿ÉÒÔ×ÔÓÉÌí¼ÓµÄ²¿ÃÅ£¬ÓÃÓÚ´æ·Å¿Í»§¶ËÏò·þÎñÆ÷ÇëÇóÐÅÏ¢ºÍ·þÎñÆ÷µÄÓ¦´ðÐÅÏ¢¡£


DHCPÓòËÑË÷Ñ¡Ï¸ÃÑ¡Ïî´ÓDHCP·þÎñÆ÷ͨ±¨µ½DHCP¿Í»§¶Ë£¬ÒÔÖ¸¶¨ÔÚʹÓÃDNS½âÎöÖ÷»úÃûʱʹÓõÄÓòËÑË÷Áбí¡£¸ÃÑ¡ÏîµÄ´úÂëΪ119£¬¸ñʽÈçÏÂͼËùʾ£º


6.png


 ¾Ù¸öÀý×Ó£¬ÏÂͼÊÇ¡°eng.apple.com¡±ºÍ¡°marketing.apple.com¡±×é³ÉµÄËÑË÷ÁбíµÄʾÀý±àÂ룺


7.png


¸ÃʾÀý±àÂëÒÑ·ÖΪÈý¸ö¡°ÓòËÑË÷Ñ¡Ï¡£ÔÚ¿Í»§¶Ë½âÎö֮ǰ£¬ËùÓÐÓòËÑË÷Ñ¡ÏîÔÚÂß¼­É϶¼´®Áªµ½Ò»¸öÊý¾Ý¿éÖС£ÒÔµÚÒ»¸ö¡°ÓòËÑË÷Ñ¡ÏΪÀý£¬µÚÒ»¸ö×Ö½ÚΪ119£¬µÚ¶þ¸ö×Ö½ÚΪ9£¬ÌåÏÖºóÃæSearchstringµÄ³¤¶È£¬Ê£ÏµÄÊý¾Ý¾ùΪSearchstring¡£ÕâÈý¸ö¡°ÓòËÑË÷Ñ¡ÏµÄSearchstring×éºÏ³ÉÒ»¸öÍêÕû¾ÛºÏ¿é£¬¿ÉÌåÏÖΪ£º

|3|¡¯e¡¯|¡¯n¡¯|¡¯g¡¯|5|¡¯a|¡¯p¡¯|¡¯p|¡¯l¡¯|¡¯e¡¯|3|¡¯c¡¯|¡¯o¡¯|¡¯m¡¯|0|9|¡¯m¡¯|¡¯a¡¯|¡¯r¡¯|¡¯k¡¯|¡¯e¡¯|¡¯t¡¯|¡¯i¡¯|¡¯n¡¯|¡¯g¡¯|0xC0|0x04|¡£


¡°eng.apple.com¡±µÄ±àÂëÒÔÁã½á⣬ÒÔ±êÖ¾Ãû³ÆµÄ½áβ¡£¡°marketing¡±£¨Õë¶Ômarketing.apple.com£©µÄ±àÂëÒÔÁ½¸ö°Ëλ×Ö½ÚµÄѹËõÖ¸ÕëC004£¨Ê®Áù½øÖÆ£©½á⣬¸ÃÖ¸ÕëÖ¸ÏòDomainSearchOptionÊý¾ÝµÄÍêÕû¾ÛºÏ¿é£¨´ÓµÚÒ»¸ö¡°ÓòËÑË÷Ñ¡ÏÖеÄSearchstring¿ªÊ¼£©ÖеÄÆ«ÒÆÁ¿4£¬ÆäÖÐÁíÒ»¸öÓÐЧ±àÂë¿ÉÒÔÕÒµ½ÍêÕûµÄÓòÃû£¨¡°apple.com¡±£©¡£ÈçÏÂͼËùʾ£º

 

8.png


ÿ¸öËÑË÷ÓòÃû¶¼±ØÐëÒÔÁã»òÁ½¸ö°Ëλλ×éѹËõÖ¸Õë½áβ¡£Èç¹û½ÓÊÕÆ÷µ½´ïËÑË÷ÁбíÑ¡ÏîÊý¾ÝµÄÍêÕû»ã×Ü¿éµÄĩβʱÕýÔÚͨ¹ýËÑË÷ÓòÃû½øÐнâÂ룬¶øûÓÐÕÒµ½Áã»òÓÐЧµÄÁ½¸ö°Ëλλ×éѹËõÖ¸Õ룬ÄÇô±ØÐ뽫²¿ÃŶÁÈ¡µÄÓòÃûÊÓΪÎÞЧÓòÃû¡£


©¶´·ÖÎö


1¡¢Nucleus NETϵÁЩ¶´


9.png


ÉÏͼΪNucleus NETЭÒéÕ»ÖеÄDNS_Unpack_Domain_Name()º¯Êý£¬Õâ¸öº¯ÊýÓÃÀ´´¦ÖÃDNSÓ¦´ð¼Ç¼¡£µÚÒ»¸ö²ÎÊýdstÊÇÖ¸ÏòÒ»¸öbuffer£¬ÓÃÓÚ¿½±´½âÎöµÄÓòÃû¡£µÚ¶þ¸ö²ÎÊýsrcÖ¸ÏòÓòÃûµÄµÚÒ»¸ö×Ö½Ú£¬µÚÈý¸ö²ÎÊýÖ¸ÏòDNS HeaderµÄµÚÒ»¸ö×Ö½Ú¡£


´úÂëͨ¹ýwhileÑ­»·È¥½âÎöÓòÃû£¨µÚ7ÐУ©£¬Ö±µ½srcΪnull×Ö½Ú£¬Ò²¾ÍÊÇÓòÃûµÄ½áβ¡£Ö®ºó½«µÚÒ»¸ölabelµÄ³¤¶È¸³Öµ¸øsize£¨µÚ9ÐУ©¡£ÏÂÃ棬Ҳ¾ÍÊÇ×îÖØÒªµÄÒ»²½¾ÍÊǼì²é¸Ã×Ö½ÚÊÇ·ñΪѹËõÖ¸Õë¡£Èç¹û²»ÊÇ£¬srcÖ¸ÕëÇ°ÒÆÒ»¸ö×Ö½Ú£¬È»ºó½«src¿½±´µ½dst¡£È»ºóÿ¸ölabelÖ®¼ä¼Ó¡±.¡±¡£ÎªÕý³£µÄ½âÎöÓòÃûÁ÷³Ì¡£Èç¹ûÊÇѹËõÖ¸Õë¶øÇÒÊǵÚÒ»¸öѹËõÖ¸Õ룬retval¼ÓÁ½¸ö×Ö½Ú£¨µÚ10£¬11ÐУ©£¬È»ºóƾ¾ÝÆ«ÒƼÆËãlabelÆðʼλÖã¬È»ºó½«³¤¶È¸³Öµ¸øsize£¬Ö®ºóÕý³£´¦Öá£


Õâ¶Î´úÂë¿´ÆðÀ´Ã»ÓÐÎÊÌâʵ¼ÊÉÏ°üÂÞ4¸ö·Ç³£ÑÏÖصÄÎÊÌ⣬ÆäÔì³ÉµÄ©¶´±àºÅ·Ö±ðΪCVE-2020-27736¡¢CVE-2020-27738¡¢ CVE-2020-15795¡¢CVE-2020-27009¡£


£¨1£©¶Ôlabel³¤¶ÈûÓÐ×öÑéÖ¤

ƾ¾ÝÉÏÎĽ²ÊöµÄÄÚÈÝ£¬Ã¿¸ölabelµÄµÚÒ»¸ö×Ö½Ú´ú±í³¤¶È£¨µÚ8£¬16ÐУ©£¬µ«ÊÇ·¨Ê½Ã»Óмì²éÕâ¸ö³¤¶ÈÊÇ·ñ´ú±íÕæʵÊý¾Ý°üÖÐlabelµÄ³¤¶È£¬Õâ¿Éµ¼Ö¶ÁÈ¡Áè¼ÝÒÑ·ÖÅä½á¹¹ÌåµÄbuffer£¬Ôì³É¾Ü¾ø·þÎñ¡£


£¨2£©¶ÔѹËõÖ¸ÕëµÄÆ«ÒÆûÓÐ×öÑéÖ¤

ƾ¾ÝÉÏÎĽ²ÊöµÄÄÚÈÝ£¬·¨Ê½ÅжÏΪѹËõÖ¸Õëºó£¬±ã»áͨ¹ý¸ø³öµÄÆ«ÒÆȥѰÕÒ½âÎölabel£¨µÚ14,15,16ÐУ©£¬µ«ÊÇ·¨Ê½Ã»ÓÐÑé֤ƫÒƵķ¶Î§£¬Õâµ¼ÖÂÆ«ÒÆÖµ¿ÉÒÔÈÎÒâ¸ø¶¨£¬Õâµ¼Ö¿ÉÒÔÔ½½ç¶Áд£¬´Ó¶øRCE¡£


£¨3£©È±ÉÙNULLÖÕÖ¹Åж¨

ƾ¾ÝRFC1035µÄ±íÊö£¬NULL×Ö½Ú(0x00)ÌåÏÖnameµÄ½á⣨µÚ7ÐУ©¡£µ«ÊÇÔںܶàDNS½âÎö·¨Ê½ÖÐȱ·¦¶ÔNULL×Ö½ÚµÄÑéÖ¤£¬Õâµ¼Ö¹¥»÷Õß¿ÉÒÔͨ¹ý¿ØÖÆNULL×Ö½ÚÔÚÌض¨µÄλÖã¬Í¨¹ýºÍÇ°¼¸¸öÎÊÌâÏà½áºÏ£¬Í¬Ñù¿ÉÒÔʵÏֿɿصÄÄÚ´æ¶Áд¡£


£¨4£©¶ÔÓòÃûµÄ³¤¶ÈûÓÐ×öÏÞÖÆ

ƾ¾ÝRFC1035µÄ³ÂÊö£¬´ÓDNS¼Ç¼ÀïÌáÈ¡µÄÓòÃû²»Ó¦¸ÃÁè¼Ý255×Ö½Ú£¬¾¡¹Üÿ¸ölabelÏÞÖÆÁ˲»Áè¼Ý63¸ö×Ö½Ú£¨µÚ15ÐУ©£¬µ«ÊÇÕâÖ»ÊÇÒ»´ÎÐÔ¿½±´µÄ³¤¶È£¬²¢Ã»ÓÐÏÞÖÆʵ¼Ê¿½±´µÄ³¤¶È¡£ÈçÏÂͼËùʾ£¬Í¨¹ýNU_Allocate_Memory()º¯Êý·ÖÅä¸øname 255¸ö×Ö½Ú¸ö¿Õ¼ä£¨µÚ50ÐУ©£¬¼´DNS_MAX_NAME_SIZE¡£ºóÃæµ÷ÓÃDNS_Unpack_Domain_NameµÄ¹ý³ÌÖУ¬ÏÔÈ»¿ÉÒÔͨ¹ý½á¹¹¶ñÒâµÄÊý¾Ý°üÒç³öÕâ255×Ö½Ú¡£

 

10.png


ËùÒÔƾ¾ÝÒÔÉÏÄÚÈÝ£¬PoCµÄ±àдµÄ˼·ÓкܶàÒªÁ죬ºÃ±È¿ÉÒÔÈ÷¨Ê½ÓÀÔ¶ÎÞ·¨Í˳öÑ­»·£¬ÀàËÆÏÂͼ£º

 

11.png


c0ΪѹËõÖ¸Õ룬1eΪƫÒÆÁ¿£¬¶øÆ«ÒƵÄλÖÃÕýºÃÖØÐÂÖ¸Ïòc0£¬Ôì³ÉÎÞÏÞÑ­»·¡£


2¡¢FreeBSD©¶´£¨CVE-2020-7461£©


¸Ã©¶´·ºÆðÔÚdhclient½âÎöDHCPÊý¾Ý°üÖеġ°ÓòËÑË÷Ñ¡ÏÊý¾Ýʱ£¬ÓÉÓÚ½çÏÞ¼ì²é´íÎó¶øµ¼Ö¶ÑÒç³ö¡£dhclinetÊÇFreeBSDϵͳÖÐÓÃÓÚÌṩDHCP·þÎñµÄ¶þ½øÖÆ·¨Ê½£¬Ö´ÐÐÃüÁdhclient em0±ã¿É½øÐÐDHCPÅäÖã¬em0ΪÍø¿¨¡£Ô´ÂëλÓÚsbin\dhclient\options.c£¬´Ódo_packet()º¯Êý¿ªÊ¼£¬´úÂëÇåµ¥ÈçÏÂͼËùʾ£º


12.png


¸Ãº¯ÊýÓÃÓÚ´¦ÖÃDHCP¿Í»§¶Ë½ÓÊÕµ½µÄÊý¾Ý°ü£¬ÐÐ890£¬µ÷ÓÃparse_options()º¯Êý½âÎöÊý¾Ý°üÖеÄoptions£¬´úÂëÇåµ¥ÈçÏÂͼËùʾ£º


13.png


ÐÐ106£¬µ÷ÓÃexpand_domain_search()º¯Êý½øÒ»²½½âÎöDHCPÓòËÑË÷Ñ¡ÏîÊý¾Ý£¬¸Ãº¯Êý½øÐÐÁ½¸ö²Ù×÷£¬µÚÒ»²½²Ù×÷ÊÇÏÈ»ñÈ¡ËùÓÐÓòÃû±êÇ©µÄ×ܳ¤¶È£¬µÚ¶þ²½²Ù×÷ÊÇƾ¾ÝµÚÒ»²½»ñÈ¡µÄ³¤¶È½øÐÐÄÚ´æ·ÖÅ䣬²¢¿½±´ËùÓÐÓòÃû±êÇ©¡£

ÏÈ¿´µÚÒ»²Ù×÷£¬ÈçºÎ»ñÈ¡ËùÓÐÓòÃû±êÇ©µÄ³¤¶È£¬Òªº¦´úÂëʵÏÖÈçÏÂͼËùʾ£º


14.png


Ê×ÏÈÅжÏoptionsÊÇ·ñΪ¿Õ£¬²»Îª¿Õ¾Í»ñÈ¡options£¬ÐÐ229£¬È»ºó½øÈëwhileÑ­»·£¬µ÷ÓÃfind_search_domain_name_len()º¯Êý´¦ÖÃoptions£¬¸Ãº¯Êýͨ¹ýÒ»¸öwhileÑ­»·Öð¸ö×Ö½Ú½âÎöSearchsting²¢·ÖÀà´¦Ö㬵ÚÒ»ÖÖÇé¿öµÄÒªº¦´úÂëʵÏÖÈçÏÂͼËùʾ£º

 

15.png


Èç¹û¶ÁÈ¡µ½data[i]Ϊ0£¬ÌåÏÖÓòÃû±êÇ©µÄ½á⣬²¢·µ»Ø¸ÃÓòÃû±êÇ©³¤¶È¡£½Ó×ŵڶþÖÖÇé¿öµÄÒªº¦´úÂëʵÏÖÈçÏÂͼËùʾ£º


16.png


Èç¹û¶ÁÈ¡µ½data[i]Ϊ0xC0£¬ÌåÏÖΪѹËõÖ¸Õ룬ָÏòÁíÒ»¸öÓòÃû±êÇ©£¬ÐÐ287£¬¼ÆËãpointer£¬È»ºó¶Ô¸ÃÖ¸Õë½øÐз¶Î§¼ì²éÅжÏÊÇ·ñÔ½½ç£¨µÚ299ÐУ©£¬µÝ¹éµ÷ÓÃfind_search_domain_name_len()º¯Êý½âÎöѹËõÖ¸ÕëÖ¸ÏòµÄÁíÒ»¸öÓòÃû±êÇ©£¨µÚ301ÐУ©£¬µÝ¹éµ÷Ó÷µ»Øºó£¬½øÐÐdomain_name_len += pointer_lenÀÛ¼Ó¡£Èç¹û¼È²»ÊÇ0½áβҲ²»ÊÇѹËõÖ¸Õ룬ÔòÒÀ´ÎÀÛ¼Ó²¢ÒÆλÓα꣬ʵÏÖ´úÂëÈçÏÂͼËùʾ£º


17.png


ÔÚµÚ299Ðк͵Ú301ÐÐÖ®¼äÊÇ´æÔÚÎÊÌâµÄ£¬Èç¹ûµÝ¹é´¦ÖÃѹËõÖ¸ÕëÖ¸ÏòµÄÁíÒ»¸öÓòÃû±êÇ©²»ºÏ·¨Ê±£¬·µ»ØµÄpointer_lenΪ-1£¬ÕâÀﲢûÓн«ÆäÊÓΪÎÞЧ²¢½øÐзµ»Ø£¬¶øÊÇÒÀ¾É·µ»Ø²¿ÃÅÓòÃû±êÇ©³¤¶È¡£

ÔÙ¿´µÚ¶þ²Ù×÷£¬·ÖÅ仺³åÇø²¢½øÐÐÓòÃû±êÇ©¿½±´£¬Òªº¦´úÂëÈçÏÂͼËùʾ£º


18.png


ÕâÀïexpanded_lenΪ¼ÆËã³öÀ´µÄÓòÃû±êÇ©µÄ³¤¶È£¨µÚ242ÐУ©£¬·ÖÅäÒ»¶ÎÄڴ棨µÚ248ÐУ©£¬½øÈëwhileÑ­»·£¬µ÷ÓÃexpand_search_domain_name()º¯Êý½øÐÐÓòÃû±êÇ©¿½±´£¬ÊµÏÖ´úÂëÈçÏÂͼËùʾ£º


19.png


¸Ãº¯ÊýºÍfind_search_domain_name_len()º¯ÊýʵÏÖ»ù±¾ÊÇÒ»ÑùµÄ£¬·ÖÀà´¦ÖÃ0½áβºÍѹËõÖ¸Õ룬µ«ÊÇÔÚ´¦ÖÃѹËõÖ¸ÕëµÄÇé¿öʱ£¬²¢Ã»ÓÐÅжÏÖ¸Õ뷶ΧµÄºÏÀíÐÔ¡£ÐÐ366£¬µ÷ÓÃmemcpy½øÐÐÓòÃû±êÇ©¿½±´£¬¿½±´³¤¶ÈΪlabel_len¡£


ƾ¾ÝÇ°ÎÄ·ÖÎö£¬µÚÒ»²½²Ù×÷Ôڵݹ鴦ÖÃѹËõÖ¸ÕëµÄÇé¿öʱ£¬ÊÇ´æÔÚÎÊÌâµÄ£¬²¢Ã»ÓÐÅ×Æú°üÂÞÎÞЧѹËõÖ¸ÕëµÄÓòÃû±êÇ©¡£¿ÉÒԽṹһ¸öÌØÊâµÄÓòÃû±êÇ©»ìÏýlebalµÄµÝ¹é½âÎö£¬¸ÃÓòÃû±êÇ©ÌåÏÖΪ£º| 1 |x3F|x00| 1 |'A'|xC0|x01|¡£


ÒÀ´Î¶ÁÈ¡µ½label_lenΪ0xC0ʱ£¬½øÒ»²½µÝ¹éµ÷ÓýâÎö£¬Õâ´Î¶ÁÈ¡µ½label_lenΪ0x3f£¬½«0x3fµ±³ÉÁËÓòÃû³¤¶È£¬µ«ÊǵÚ305ÐУ¬ÅжϷ¢ÉúÔ½½ç£¬Òò´Ë·µ»Ø-1¡£


20.png


µ«ÊÇÕâÀïÈÔÈ»¼ÆËã³ödomain_name_lanΪ1£¬Òò´ËµÚ¶þ¸öÓòÃû°üÂÞÒ»¸ö0x41¡£


21.png


×îºó¼ÆËã³öexpanded_lenΪ0x5£¬ÈçÏÂͼËùʾ£º


22.png


È»ºó¿ªÊ¼½øÐеڶþ²½¿½±´²Ù×÷£¬ÏÈ¿½±´µÚÒ»¸ödomain£º0x3f¡£ÈçÏÂͼËùʾ£º

 

24.png


µÚ¶þ´Î¿½±´µÚ¶þ¸ödomain£º0x41¡£ÈçÏÂͼËùʾ£º

 

25.png


µÝ¹é½âÎöѹËõÖ¸Õë0XC004ʱ£¬·¢ÉúÁË»ìÏý£¬ÈçÏÂͼËùʾ£º


26.png


´íÎóµØ½«0x3fµ±³Élabel_len£¬ÕâÃ÷ÏÔÊÇ´óÓÚexpanded_lenµÄ£¬Ö±½Ó¿½±´µ¼ÖÂÒç³ö¡£²»ÍâÔÚʵ¼Ê²âÊÔÖУ¬²¢Î´·¢ÉúÄÚ´æÆÆ»µ£¬¶ø¿ÉÒԽṹÆäËûµÄÓòÃû±êÇ©ÏÝÈëÎÞÏ޵ݹ飬ÈÃdhclient½ø³Ì¶ÑÕ»ºÄ¾¡µ¼ÖÂÍ߽⣬Ôì³É¾Ü¾ø·þÎñ¡£


27.png

 

´¦Öý¨Òé


FreeBSD¡¢Nucleus NETºÍ NetX£¬½¨ÒéÏÈʵʩÒÔÏÂÄþ¾²½¨Ò飬ÔÙ¼°Ê±¸üÐÂÉ豸¹©Ó¦ÉÌÐû²¼µÄÄþ¾²¸üС£

Äþ¾²½¨Ò飺


ʹÓÃһЩ»º½âÐÅÏ¢À´¿ª·¢¼ì²âDNS©¶´µÄÇ©Ãû£»

·¢ÏÖ²¢ÇåµãÔËÐÐÒ×Êܹ¥»÷¶ÑÕ»µÄÉ豸£»

ʵʩ·Ö¶Î¿ØÖƺÍÊʵ±µÄnetwork hygiene£»

¼àÊÓÊÜÓ°ÏìµÄÉ豸¹©Ó¦ÉÌÐû²¼µÄ²¹¶¡£»

ÅäÖÃÉ豸ÒÀÀµÄÚ²¿DNS·þÎñÆ÷£»

¼à¿ØËùÓÐÍøÂçÁ÷Á¿ÖеĶñÒâÊý¾Ý°ü¡£