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ÐУ© ¡£ÏÂÃæ £¬Ò²¾ÍÊÇ×îÖ÷ÒªµÄÒ»²½¾ÍÊǼì²é¸Ã×Ö½ÚÊÇ·ñΪѹËõÖ¸Õë ¡£ÈôÊ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ÐУ© £¬¿ÉÊdzÌÐòûÓмì²éÕâ¸ö³¤¶ÈÊÇ·ñ´ú±íÕæÊµÊý¾Ý°üÖÐlabelµÄ³¤¶È £¬Õâ¿Éµ¼Ö¶ÁÈ¡Áè¼ÝÒÑ·ÖÅɽṹÌåµÄbuffer £¬Ôì³É¾Ü¾ø·þÎñ ¡£


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

ƾ֤ÉÏÎĽ²ÊöµÄÄÚÈÝ £¬³ÌÐòÅжÏΪѹËõÖ¸Õëºó £¬±ã»áͨ¹ý¸ø³öµÄÆ«ÒÆÈ¥Ñ°ÕÒÆÊÎölabel£¨µÚ14,15,16ÐУ© £¬¿ÉÊdzÌÐòûÓÐÑéÖ¤Æ«ÒÆµÄ¹æÄ£ £¬Õâµ¼ÖÂÆ«ÒÆÖµ¿ÉÒÔí§Òâ¸ø¶¨ £¬Õâµ¼Ö¿ÉÒÔÔ½½ç¶Áд £¬´Ó¶ø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ÐÐÖ®¼äÊDZ£´æÎÊÌâµÄ £¬ÈôÊǵݹ鴦Öóͷ£Ñ¹ËõÖ¸ÕëÖ¸ÏòµÄÁíÒ»¸öÓòÃû±êÇ©²»ÕýÄÇʱ £¬·µ»ØµÄ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 ¡£


ƾ֤ǰÎÄÆÊÎö £¬µÚÒ»²½²Ù×÷Ôڵݹ鴦Öóͷ£Ñ¹ËõÖ¸ÕëµÄÇéÐÎʱ £¬ÊDZ£´æÎÊÌâµÄ £¬²¢Ã»ÓÐÑïÆú°üÀ¨ÎÞЧѹËõÖ¸ÕëµÄÓòÃû±êÇ© ¡ £¿ÉÒԽṹһ¸öÌØÊâµÄÓòÃû±êÇ©»ìÏý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·þÎñÆ÷£»

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