SSID格式字符串错误的快速分析

2021-06-20 21:46:13

@VM_CALL:将我的个人wifi与ssid“%p%s%s%s%s%n”加入后,我的iPhone永久禁用它是WiFi功能。既不重新启动也不改变SSID修复它:〜)

现在使用相同的SSID设置热点并使用我的测试设备加入,Wifid即将崩溃。

线程2名:调度队列:com.apple.wifid.managerQueueThread 2毁损:0 libsystem_platform.dylib 0x00000001ebcb9724 _platform_strlen + 41的CoreFoundation 0x00000001a381d84c __CFStringAppendFormatCore + 88122的CoreFoundation 0x00000001a381efa8 _CFStringCreateWithFormatAndArgumentsReturningMetadata + 1603 WiFiPolicy 0x00000001d0895f8c - [WFLogger WFLog:消息:] + 1924 ??? 0x000000010692C00C 0 + 44052480125 Wifid 0x0000000100f58a74 0x100e40000 + 11495566 wifid 0x0000000100f58c74 0x100e40000 + 1150068

v7 = j__cfstringcreatewithcstring_107(0ll,a4,0x8000100u); //格式字符串如果(v7 ||(v7 = j__cfstringcreatewithcstring_107(0ll,a4,0))!= 0ll){if(self-> _destination == 2){v8 = j__cfstringcreatewithformatandarguments_26(0ll,0ll,v7,v21 ); V18 [3] =(__int64)v8; }

如果(自我和gt; _destination!= 2&&(!self-> _wflrunningonwatchclassdevice || self-> _wflenabledualloggingonwatchclassdevice)){*(_qword *)& v16。 tm_sec = 0ll; *(_qword *)& v16。 tm_hour =& v16; *(_qword *)& v16。 tm_mon = 0x2020000000LL; *(_qword *)& v16。 tm_wday = 0ll; v10 = j__cfstringcreatewithformatandarguments_26(0ll,0ll,v7,v21); //< - 这里

使用LLDB调试此问题将是痛苦的,因为这种方法经常击中。相反,将Frida连接到它:Frida-Trace -U Wifid -M' - [WFlogger WFLOG:消息:]'并修改自动生成的脚本一点:

OnEner(日志,args,州){const msg ='' + args [3]。 readutf8string();日志(` - [wflogger wflog:$ {args [2]}消息:$ {msg}]`); if(msg。索引('%p%s%s%s%s%n')> - 1){(让我= 3; i< 10; i ++){日志(args [i],JSON。stryify(进程。findrangebyaddress(args [i]))); }日志('从:\ n&#39调用; +线程。backtrace(此。上下文,backtracer。准确)。地图(debugsymbol。fromaddress)。加入(' \ n'') +' \ n'); }},

V27 = Sub_1000A25D4(V21); v28 = objc_msgsend(& objc_class____nsstring," stringwithformat:" cfstr("尝试apple80211associateasync到%@"),v27); v29 = objc_msgsend(& objc_class___nsstring," stringwithformat:",cfstr(" {%@ +}%@"),cfstr("" assoc"), v28); v30 = objc_autoreleasepoolpush(); v31 =(void *)qword_100251888; if(qword_100251888){v32 = objc_msgsend(v29," utf8string"); objc_msgsend(v31," wflog:消息:",3ll,v32); } objc_autoreleasepoolpop(v30);

它将SSID调匀到格式字符串并将其传递给WFLOG:消息:方法。目的地是3所以它是触发拒绝服务的CFStringCreatewithFormArgument的第二个XREF。

为了剥削性,它不会回显,参数的其余部分似乎不像是可控的。因此,我认为这种情况不会被利用。毕竟,要触发此错误,您需要连接到该WiFi,其中SSID对受害者可见。网络钓鱼Wi-Fi门户网站可能更有效。