1. 程式人生 > >2018強網杯記錄

2018強網杯記錄

1 簽到題

 

2welcome

下載檔案,發現是一個BMP圖片檔案。

於是使用Stegsolve工具分離,發現,得到flag

 

streamgame1

上指令碼1

#! /usr/bin/env python3

# coding:utf8

def lfsr(R,mask):

    output = (R << 1) & 0xffffff

    i=(R&mask)&0xffffff

    lastbit=0

    while i!=0:

        lastbit^=(i&1)

        i=i>>1

    output^=lastbit

    return (output,lastbit)

mask = 0b1010011000100011100

f=open("./key","rb")

c=f.read()

f.close()

count = -1

while count <= 0b1111111111111111111:

    count += 1

    print(count)

    R = count

    for i in range(12):

        tmp=0

        for j in range(8):

            (R,out)=lfsr(R,mask)

            tmp=(tmp << 1)^out

        if tmp != c[i]:

            break

        if i == 11:

            print('succeed')

            print('flag{%s}' % bin(count)[2:])

            exit(0)

4 streamgame2

上指令碼2

#! /usr/bin/env python3

# coding:utf8

def lfsr(R,mask):

    output = (R << 1) & 0xffffff

    i=(R&mask)&0xffffff

    lastbit=0

    while i!=0:

        lastbit^=(i&1)

        i=i>>1

    output^=lastbit

    return (output,lastbit)

mask = 0x100002

f=open("./key","rb")

c=f.read()

f.close()

count = -1

while count <= 0b111111111111111111111:

    count += 1

    if count % 10000 == 0:

        print(count)

    R = count

    for i in range(12):

        tmp=0

        for j in range(8):

            (R,out)=lfsr(R,mask)

            tmp=(tmp << 1)^out

        if tmp != c[i]:

            break

        if i == 11:

            print('succeed')

            print('flag{%s}' % bin(count)[2:])

            exit(0)

5 streamgame4

上指令碼3

#! /usr/bin/env python3

# coding:utf8

def lfsr(R,mask):

    output = (R << 1) & 0xffffff

    i=(R&mask)&0xffffff

    lastbit=0

    while i!=0:

        lastbit^=(i&1)

        i=i>>1

    output^=lastbit

    return (output,lastbit)

mask = 0b1010011000100011100

f=open("./key","rb")

c=f.read()

f.close()

count = -1

while count <= 0b1111111111111111111:

    count += 1

    #print(count)

    R = count

    for i in range(12):

        tmp=0

        for j in range(8):

            (R,out)=lfsr(R,mask)

            tmp=(tmp << 1)^out

        if tmp != c[i]:

            break

        if i == 11:

            print('succeed')

            print('flag{%s}' % bin(count)[2:])

            exit(0)

6 web簽到題

因為每次在網頁裡,都有網頁程式碼的提示,三次都是繞過。

第一次繞過是利用php,==的弱等於

240610708 QNKCDZO 

第二次:傳遞陣列,越過

第三次:利用碰撞試驗,

d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f89

55ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5b

d8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0

e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70

AND

d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f89

55ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5b

d8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0

e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70

7 simple check

 反編譯apk,獲得java程式碼,明白了是對字串的判定。

public class a

{

  private static int[] a = { 0, 146527998, 205327308, 94243885, 138810487, 408218567, 77866117, 71548549, 563255818, 559010506, 449018203, 576200653, 307283021, 467607947, 314806739, 341420795, 341420795, 469998524, 417733494, 342206934, 392460324, 382290309, 185532945, 364788505, 210058699, 198137551, 360748557, 440064477, 319861317, 676258995, 389214123, 829768461, 534844356, 427514172, 864054312 };

  private static int[] b = { 13710, 46393, 49151, 36900, 59564, 35883, 3517, 52957, 1509, 61207, 63274, 27694, 20932, 37997, 22069, 8438, 33995, 53298, 16908, 30902, 64602, 64028, 29629, 26537, 12026, 31610, 48639, 19968, 45654, 51972, 64956, 45293, 64752, 37108 };

  private static int[] c = { 38129, 57355, 22538, 47767, 8940, 4975, 27050, 56102, 21796, 41174, 63445, 53454, 28762, 59215, 16407, 64340, 37644, 59896, 41276, 25896, 27501, 38944, 37039, 38213, 61842, 43497, 9221, 9879, 14436, 60468, 19926, 47198, 8406, 64666 };

  private static int[] d = { 0, -341994984, -370404060, -257581614, -494024809, -135267265, 54930974, -155841406, 540422378, -107286502, -128056922, 265261633, 275964257, 119059597, 202392013, 283676377, 126284124, -68971076, 261217574, 197555158, -12893337, -10293675, 93868075, 121661845, 167461231, 123220255, 221507, 258914772, 180963987, 107841171, 41609001, 276531381, 169983906, 276158562 };

  public static boolean a(String paramString)

  {

    if (paramString.length() != b.length) {

      return false;

    }

    int[] arrayOfInt = new int[a.length];

    arrayOfInt[0] = 0;

    paramString = paramString.getBytes();

    int k = paramString.length;

    int i = 0;

    int j = 1;

    while (i < k)

    {

      arrayOfInt[j] = paramString[i];

      j += 1;

      i += 1;

    }

    i = 0;

    for (;;)

    {

      if (i >= c.length) {

        break label166;

      }

      if ((a[i] != b[i] * arrayOfInt[i] * arrayOfInt[i] + c[i] * arrayOfInt[i] + d[i]) || (a[(i + 1)] != b[i] * arrayOfInt[(i + 1)] * arrayOfInt[(i + 1)] + c[i] * arrayOfInt[(i + 1)] + d[i])) {

        break;

      }

      i += 1;

    }

    label166:

    return true;

  }

}

首先是判定字串長度是否為34,然後是對字串進行雙位判定。寫出指令碼,得到flag

a = [0, 146527998, 205327308, 94243885, 138810487, 408218567, 77866117, 71548549, 563255818, 559010506, 449018203,

576200653, 307283021, 467607947, 314806739, 341420795, 341420795, 469998524, 417733494, 342206934, 392460324,

382290309, 185532945, 364788505, 210058699, 198137551, 360748557, 440064477, 319861317, 676258995, 389214123,

829768461, 534844356, 427514172, 864054312]b = [13710, 46393, 49151, 36900, 59564, 35883, 3517, 52957, 1509, 61207, 63274, 27694, 20932, 37997, 22069, 8438, 33995,

53298, 16908, 30902, 64602, 64028, 29629, 26537, 12026, 31610, 48639, 19968, 45654, 51972, 64956, 45293, 64752,

37108]c = [38129, 57355, 22538, 47767, 8940, 4975, 27050, 56102, 21796, 41174, 63445, 53454, 28762, 59215, 16407, 64340,

37644, 59896, 41276, 25896, 27501, 38944, 37039, 38213, 61842, 43497, 9221, 9879, 14436, 60468, 19926, 47198, 8406,

64666]d = [0, -341994984, -370404060, -257581614, -494024809, -135267265, 54930974, -155841406, 540422378, -107286502,

-128056922, 265261633, 275964257, 119059597, 202392013, 283676377, 126284124, -68971076, 261217574, 197555158,

-12893337, -10293675, 93868075, 121661845, 167461231, 123220255, 221507, 258914772, 180963987, 107841171, 41609001,

276531381, 169983906, 276158562]arrayOfInt = []print()for i inrange (0, a.__len__()-1):

        arrayOfInt.append(int((-c[i] + (c[i] **2-4* b[i] * (d[i] - a[i])) **0.5) /2/ b[i]))

print(int((-c[i] + (c[i] **2-4* b[i] * (d[i] - a[i])) **0.5) /2/ b[i]),end=',')answer =bytes(arrayOfInt)print(answer)

answer =str(answer)print(answer[0:36])

print('flag{MAth_i&_GOOd_DON7_90V_7hInK?}'.__len__())

8線上提交反饋

相關推薦

2018記錄

1 簽到題 2welcome下載檔案,發現是一個BMP圖片檔案。於是使用Stegsolve工具分離,發現,得到flag 3 streamgame1上指令碼1#! /usr/bin/env python3# coding:utf8def lfsr(R,mask):    out

2018】逆向hide

style wro enter inline import HR add bcd stat 這是事後才做出來的,網上沒有找到現成的writeup,所以在這裏記錄一下 UPX加殼,而且linux下upx -d無法解,也無法gdb/ida attach 因為是64位,所

第二屆“”全國絡安全挑戰賽來襲——線上賽

問題 ted nbsp AI 協調 及其 sans 線上 方式 為全面貫徹習主席關於網絡安全和信息化工作的一系列重要指示精神,延攬儲備鍛煉網信領域優秀人才,提升國家網絡空間安全能力水平,舉辦第二屆“強網杯”全國網絡安全挑戰賽。該比賽是面向高等院校和國內信息安全企業的

2018MISC題目遲來的簽到題easy xor???的writeup

這道題我異或?半天。。。 最後隊友小煤球想出來直接異或給的串中所有字元 得到flag from base64 import * b=b64decode("AAoHAR1WX1VQVlNVU1VRUl5XXyMjI1FWJ1IjUCQnXlZWXyckXhs=") data=

2018pwn題目task_gettingStart_ktQeERc的writeup

下載後   本來想先用checksec 看看有啥保護 但是卻發現執行不了(這裡不太明白) 看到做出的人那麼多  也就沒有顧慮了 載入IDA   看到關鍵字串  且有/bin/sh    

2018第一場 web easy tornado LTshop超詳細解答

easy tornado 這個tornado是一個python的模板,在web使用的時候給出了四個檔案,可以訪問,從提示中和url中可以看出,訪問需要檔名+檔案簽名(長度為32位,計算方式為md5(cookie_secret + md5(filename)));  flag檔名題目已給

2018——easy_dump

題目: 連結: https://pan.baidu.com/s/1IdhDQAv02nAz0H211BoVgA 提取碼: axgp 做題時看到下載下來的600m,懵逼中,看到是img映象檔案當然想到的是利用diskgenuis恢復檔案找特別檔案再進行解密。 一直做不出,是我想的太簡單

2018_Crypto_fez

 題目給了兩個檔案: fez.py: import os def xor(a,b): assert len(a)==len(b) c="" for i in range(len(a)): c+=chr(ord(a[i])^ord

2018的pwn簽到題(詳細過程)

題目: 連結:https://pan.baidu.com/s/1WcO-y2MQ6Wb17PqL2dxyyA 提取碼:z5a7 首先找保護機制 難受 保護全開!! 執行一下,發現只有一個輸入點。 ida分析一波 發現只要滿足 v7=0x7FFFFFFFFFFFFFFFLL 還有v8=0.1 但是在

2018MISC簽到題Easy Xor

記錄一下做這種題的方法 題目直接給了一串base64加密的字串,讓我們xor AAoHAR0jJ1AlVVEkU1BUVCAlIlFTUVUiUFRTVFVeU1FXUCVUJxs= 在網上看大佬們的writeup說的是因為不知道和誰異或,所以直接寫指令碼爆破 imp

2017第二屆廣東省線上賽——WEB-phone number

開啟連結,進入登入介面http://106.75.72.168:3333/login.php看原始碼抓包檢視原始碼發現最大長度為11,沒有設定電話的前幾位數字註冊一個新使用者burp suite抓包點選check原始碼聯想到題目想到應該是在電話這裡作為突破口應該是注入,因為必

2017第二屆廣東省線上賽--------phone number

================================ 個人收穫: 1.sql語句裡面也可以直接用database() 2.跟資料庫有聯絡的地方都可能存在注入 ================================ 題目: 開始前對

2017第二屆廣東省線上賽-------------whao are you

===================================== 個人收穫 1.rot13加密 2.寫入檔案除了fopen fwrite fclose 還有一種file_put_contents 這個允許資料是陣列(可繞過一些檔案內容特徵檢測) 3.flag

2018

再一次觀看了一波神仙打架。 Misc 遲來的簽到題 題目提示 easy xor,開啟附件是一串 base64: AAoHAR1QUiBTJVBQI1RVIl5WJVInUlNWIFZUX1ZRJ1dWU1dfURs= 解碼是亂碼。 猜想思路和 CSAW 密

廣東省2015 writeup

第一次參加這麼正式的安全比賽,拖了有點久,現在把比賽時候的一些想法和思路記錄下來。 從web狗的角度來看資格賽關於web的題目不算是很難,pwn和re的題就不評論了。 1.常用的管理員密碼: 試了好幾個,最後提交admin通過 2.單身狗: 二維碼的一部分被doge擋

2017 web 解題思路總結

寫這篇部落格的主要動機就是一邊總結,一邊學習,就當做是一篇學習筆記。 首先開啟題目連線,出現下圖所示,發現並沒有什麼有用的資訊 檢視原始碼,還是沒找到有用的資訊 <!DOCTYPE html> <html> <he

第二屆 web簽到題

前言 線上賽的時候,沒有充裕的時間打,後期做了做,雖以記之. 時間好快,2018已經過去了1/4,加油. 歡迎進群交流: 363034250 題目及知識點 題目描述 該題目一共分為三關,前兩關都是基本的php中md5()函式特性利用.下面分別

ctf pwn&re writeup (部分)

打了2天的強網杯,雖然一度衝進了前10。可惜最後的時候還是掉出了20名。最後只能無奈打出GG。其中的原因有很多,也不想多說了。 逆向溢位題3連發。我就只會那麼多了Orz 先來一道re200 kergen 傳送24位的字串,主要是400B56處的檢

2017第二屆廣東省線上賽——WEB-broken

首先看到這個題目,就想到得到的這個檔案是有問題的,一般內容上不會丟失,應該缺少的是格式上的一些頭啊什麼的點選連結點選filejsfuck ,按照常見的套路複製貼上到控制檯執行根據提示,檢視程式碼,因為是[]沒有閉合,所以想到是在頭部或者尾部的地方有問題,看到開頭出現兩個[[,

第二屆“”全國網路安全挑戰賽WRITE-UP

週末打了一下QWB去看神仙打架23333333萌新我勉強苟進了前200,廢話不多說了,還是太菜了。努力!WEBweb簽到這個題有三層,過三關得flag。第一層param1[]=1&param2[]=2第二層param1[]=1&param2[]=2第三層使用M