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£ºÈôÊDZØÒª¿ç×ÓÍø½øÐÐ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ÐУ©  ¡£ÏÂÃæ £¬Ò²¾ÍÊÇ×î³ÁÒªµÄÒ»²½¾ÍÊDz鳭¸Ã×Ö½ÚÊÇ·ñΪѹËõÖ¸Õë  ¡£ÈôÊDz»ÊÇ £¬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·þÎñÆ÷£»

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