巴渝杯大学生网络安全联赛部分wp—eRr0r

 前言  

        这次的misc居然不是签到,呜呜呜,我们就是个垃圾战队,别为难我们了。但我们队一开始拿了俩个一血,还不错,暂时当了十几分钟的第一。

        这次比赛确实难评,其实这个比赛主要是为了帮助大家进步,没必要上纲上线,后面大家在群里吵起来了,没必要,每个学校只有俩队能拿奖也是为了多给弱队机会嘛,再说,也是防作弊的一种机制嘛【狗头保命】

        插一句邮电还是老大哥,前三实力确实强,每次都被打得死死的,也被他们大一的学弟暴打了,但听说是高中就开始打CTF,不知道真的假的。

MISC

20201118_zip

        来吧,让我们体验一下这道题吧,打开就能看到tips1,(听说这里有伪加密,我用的360压缩直接就出来了,我不知道,但有的话也很简单,拖010改就行了)

        一开始以为是这里靠明文攻击,然后后面用7z看了下,发现是AES压缩的,就放弃了。

        然后发现Tips2里面提示186开头还是11位,我觉得就是电话号码(结束后他们说是掩码攻击,我当时确实没想到),运气号好,直接爆数字(虽然有误导,但想试试)结果爆出来了(可恶的出题人,前一俩小时真被你唬住了)

        然后解开发现压缩包有个提示用banizip打开,那就照做,从tips3也知道这是一个明文攻击,直接用ARCHPR明文攻击就出来了。

我拿到flag啦

        这题赛场上没做出来,还是太菜了,大家都是大佬,比赛后我们学校Secure的一位大佬做出来了,说在HTTP 200 OK里,我没看到怎么做的,但我自己做了一下,就做出来了,呜呜呜,就差一点,看到了这个可疑流量的,但base64解不出来就跑了,哎,还是太菜了。整个流量是一个黑客进行网络攻击并提取到的数据(大佬勿喷,我就一菜狗)

        其实真正让我怀疑的是这个POST流量在整个包里比较少,而且有个可疑的shell.php直接警觉了,点开来分析一下

 

        比赛的时候一直在分析上面的那串,解了半天只出现了一些复杂的代码,就分析不下去了,答案其实是分析下面那串base64

        众所周知flag的base64编码是ZmxhZw==所以我们把前面那点不知道什么东西给删了,flag就出来了(我也不知道对不对,求大佬指点)。

        但我在tcp.stream eq 285里面发现了这个,里面有半截flag,不知道是什么,求大佬指点

Web

Check

这类我们就做出一道签到题

其他题我们这种弱队确实做不出来,但看到sql中等注入好像大家也都没做出来

`POST /?upload=I want flag` 就拿到 flag。

照片没了

Crypto

Get the ciphertext

也是一道普普通通的签到题

第一段 ook,用 https://www.dcode.fr/ook-language 解出来是 `flag{fd62371a16e34b`

第二段 fuckbrain,用 https://www.dcode.fr/brainfuck-language ,出来 `4236af4c815c70d2c2}`

加密了的银行账号

经典的共模攻击,代码展示:

#由
c1 = powmod(m, e1, n)
c2 = powmod(m, e2, n)
#有:
c1 ^ s1 = powmod(m, e1, n) ^ s1
c2 ^ s2 = powmod(m, e2, n) ^ s2
#相乘:
(c1 ^ s1) * (c2 ^ s2) = m ^ (e1 * s1) * m ^ (e2 * s2) % n
#由贝祖等式:e1 * s1 + e2 * s2 = 1
(c1 ^ s1) * (c2 ^ s2) = m % n

#即flag可得:
m = powmod(m, s1, n) * powmod(m, s2, n) % n


'''

from Crypto.Util.number import *
from gmpy2 import *
n = 839123934774248293554478900304805652005840721338630070412976096583047842775036231818774021937639649434688167897414096334116238084902194754637764024750792816721392354301739479608067847343792597904131386883826936202738091643779024125141255264223247609242732797223111375906539968766539699070553220024835237726906103489324159983224252110158455246369757060858217509822937163152185972444899932745256697748371372158650749600653559864702036394611754651413137001635037310384486835415211127040685857231115447354804277699698486014015179198727374388217592948103504783273235502069953842424278640309430812418432009515965525235385145845104436993038590088545931577484359861647891101843425163557830467877799969686630827090586068831286572090214049241078519089880483666226861834918996928339953135949773709823413539900554860599681940844430108740145857463465317542463460369739470382431178811713605099730666854586750420573809975950891432736357055207659867908960389714343184134892741009452909757459817636609433427812924456782545899375540553326445169985403837463499577711582154287873330657825693756960147166773280203881994461147955853897180714973259859345569061880741001595805100970589056125774856383495601030032566633812017502429733745385901436096392471289
e1 = 806324329
c1 = 163820585866464748037603720038892832306554988255206332863466690031251112393421587550794518466136449805972150046258007843678810670858951387865544768705860991912961811815403716953592063388227590617471347829805148489681889353092402164643007648065816490395610440358210631794473074518280532005297323838015000696012544093096729757248560313800119985077628515064121290046849842744649645290768993658687322260767120966685347950282971463554789285475522426817366147609763855420569516751283073981560233583052224238576709207099742418240326781531079937393665507293492304460161648982800074101163393514977619796309524278704876480025742024160221890561273557038260189577859945055862584556222614337893856036135407528568963925417637444291244325443939058848883360791328763182036736991538226734334763710031379376903812920870564906505631446736446351432678455275793428547686664667539262939321057216659646680245853118886811477642137593470574356360886586517623917262716025748350280034971229225621439570870095238910932174538777011907435005615951965481796660744335386804670981037480723346003591779345801230978946027215192726050182071464556997361600570176261668330138026540849862934790571484498436157306820319598552136374283506981655462848489790309701474742231765

e2 = 981665371
c2 = 273242589426480927826167181440879042261352093903608434884600905569452427185873771727772405404505268635334400366319247889103997045566310053661596019565754930974302295439331258267831862178643151110272578792132366938072461672903904131261872916290092535496394107067073669859724326918200655564533782970003007228779265786965898584930920671749110403164178828194786698903692367972071819235589738473333448909143263601696287295696594333362374640947177450581133679785322780121777626014738094838546764265270540875237752587231957198655334919482389040609616499842407581630400649266699612327355801522626608567074516199161612041393966746535463537504182396463306145605244107129067775658018376118992392243654356151728789607874911337696728619623272935933692059586381093273314357325686727609120412886454183336002684696756892485413467576457476017669378668920561188578039728356555469910921968008598794341024437414411415025750797861498237313315133504763627579092827456484850672726497492397166505646338025210493939717283132813965892266364677296542793933736272452657509115949431627829562871153172728793514100920642454624860024655189013182334029353933043493447139401983635409889928162529397033633451464690205097492717456395000561496206701612814279836034509030

def e_gcd(a, b):
   # 构造贝祖等式
   if b == 0:
       return a, 1, 0
   else:
       g, x, y = egcd(b, a % b)
       return g, y, x - a // b * y

s = e_gcd(e1, e2)
s1 = s[1]
s2 = s[2]

if s1 < 0:
   s1 = -s1
   c1 = invert(c1, n)

if s2 < 0:
   s2 = -s2
   c2 = invert(c2, n)

m = long_to_bytes((powmod(c1, s1, n) * powmod(c2, s2, n)) % n)
print(m)

Reverse

Reverse2附件

源码展示:

080483eb <convert>:
 80483eb:       55                      push   ebp
 80483ec:       89 e5                   mov    ebp,esp
 80483ee:       53                      push   ebx
 80483ef:       83 ec 10                sub    esp,0x10
 80483f2:       c7 45 f8 00 00 00 00    mov    DWORD PTR [ebp-0x8],0x0
 80483f9:       eb 20                   jmp    804841b <convert+0x30>
 80483fb:       8b 55 f8                mov    edx,DWORD PTR [ebp-0x8]
 80483fe:       8b 45 08                mov    eax,DWORD PTR [ebp+0x8]
 8048401:       01 d0                   add    eax,edx
 8048403:       8b 55 f8                mov    edx,DWORD PTR [ebp-0x8]
 8048406:       89 d3                   mov    ebx,edx
 8048408:       8b 4d f8                mov    ecx,DWORD PTR [ebp-0x8]
 804840b:       8b 55 08                mov    edx,DWORD PTR [ebp+0x8]
 804840e:       01 ca                   add    edx,ecx
 8048410:       0f b6 12                movzx  edx,BYTE PTR [edx]
 8048413:       31 da                   xor    edx,ebx
 8048415:       88 10                   mov    BYTE PTR [eax],dl
 8048417:       83 45 f8 01             add    DWORD PTR [ebp-0x8],0x1
 804841b:       8b 45 f8                mov    eax,DWORD PTR [ebp-0x8]
 804841e:       3b 45 0c                cmp    eax,DWORD PTR [ebp+0xc]
 8048421:       7c d8                   jl     80483fb <convert+0x10>
 8048423:       8b 45 08                mov    eax,DWORD PTR [ebp+0x8]
 8048426:       83 c0 1a                add    eax,0x1a
 8048429:       c6 00 00                mov    BYTE PTR [eax],0x0
 804842c:       90                      nop
 804842d:       83 c4 10                add    esp,0x10
 8048430:       5b                      pop    ebx
 8048431:       5d                      pop    ebp
 8048432:       c3                      ret
 
int main()
{
	char  p[] = { 102, 109, 99, 100, 127, 
				 100, 117, 99, 110, 86, 
				 110, 106, 96, 126, 101, 
				 101, 79, 112, 126, 119, 
				 103, 126, 124, 113, 116, 
				 100 };
	int length = sizeof(p) / sizeof(p[0]);
	convert(p,length);
	puts(p);
	return 0;
}
        Ϊ  Ϊflag

把那坨 convert() 函数的汇编转成C

```

void convert(char* p, int length) { // ebp+0x8, ebp+0xc

    int i = 0; // ebp-0x8

    while (i < length) { // cmp    eax,DWORD PTR [ebp+0xc]

        p[i] = p[i] ^ i; // xor    edx,ebx

        i++; // add    DWORD PTR [ebp-0x8],0x1

    }

    p[length] = '\0'; //  // p[length] = '\0'

}

```

运行,得到答案。 `flag{asdf_dalskj_aldskjfl}`

        这次比赛总的来说感觉不太好,不知道是不是人太多很难管理,感觉怪怪的,也不难看到有几个同一学校的队伍在几十秒的时间里同时交了flag的神级现场,很难评,很难说是不是比赛监管不严,还是真有奇迹,当然我敢说出来就说明至少我们队没干这种事,希望大家玩得开心,大家决赛见。

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值