CTF19 - ALL.MN 参加記録

CTF19 - ALL.MN

Free point

Description

Thanks for participating in our CTF competition! All the challenges have ALLMN{} flag format (it can be anything instead of ). Just copy the flag and paste below. This challenge's flag is ALLMN{Y3S_TH1S_1S_Y0UR_FLAG_27SJAL}

FLAG : ALLMN{Y3S_TH1S_1S_Y0UR_FLAG_27SJAL}

Discord

Description

This challenge is simple. Just join us on Discord server and get the flag. https://discord.gg/q29Z9Wp

ディスコードに参加すると#generalのpinにフラグがあった。

f:id:Yunolay:20190502165518p:plain

FLAG : ALLMN{TH4NKS_F0R_J01N1NG_US_2JKLPO}

Easy Math

Description

Assuming a is 128 , b is 56 find the LCM and GCD. Flag: ALLMN{LCM_GCD} Example: If LCM = 123 and GCD = 234 flag will be ALLMN{123_234}

a = 128、b = 56でLCM、GCDを計算する。 計算には以下のサイトを使用した。

www.mathportal.org

Result
Least Common Multiple (LCM) for 128 56 is 896.
Greatest Common Divisor (GCD) for 128 56 is 8.

FLAG : ALLMN{8_896}

Funny Website

Description

Just find the flag!

URLにアクセスすると以下のサイトにアクセスする。

f:id:Yunolay:20190502170317p:plain

ソースを確認するとフラグが得られた。

f:id:Yunolay:20190502170337p:plain

Robots

Description

Do you what is robots?

URLにアクセスすると以下のサイトにアクセスする。

f:id:Yunolay:20190502170455p:plain

http://chall.all.mn/robot/robots.txtにアクセスする。

User-agent: *
Disallow: /allmnflag.php

http://chall.all.mn/robot/allmnflag.phpにアクセスする。

f:id:Yunolay:20190502170635p:plain

FLAG : ALLMN{W3B_R0B0TS_TXT_7DHJ9E}

What is this?

Description

Want to get your flag? Check out the file!

wtf.txt

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>-----.+++++++++++..+.+.>+++++++++++++++++++++++.<<+++++++++++++++++++.>+++++++++++++++++.-------------------.<-.>++++++++++.<+++.>+++++++++.<+++++++++++++++.>-------------.<--------------.---.>----.+++++++++++++++++.<+++++++++++++++++++++.------------------.+++++++++++++++.++++++++.>.<------------------------.++++++++++++++++++++++.++++++++.------.----------.+++++++++++++++.>>++.

明らかにブレインファックなのでオンラインインタプリタで実行する。

copy.sh

f:id:Yunolay:20190502172438p:plain

FLAG : ALLMN{1_L0V3_BR41N_F4CK_3IQKAP}

Find that word

Description

Find the right word and get the flag

findtheflag.zipが与えられる。 解凍すると1.txtから114.txtが解凍された。

f:id:Yunolay:20190502174058p:plain

フラグの文字列を探す。

import re

for i in range(114):
    file = str(i+1) + '.txt'
    f = open(file, 'r')
    for line in f:
        # print(line)
        if re.search('ALLMN', line):
            print(f)
            print(line)
<open file '76.txt', mode 'r' at 0x0000000003BD51E0>
         Pauses in Heaven doyoureallywanttoknowtheflag?hereitisALLMN{GR3P_1S_S1mple}.

SQL

Description

Do you know what is SQL?

サイトにアクセスするとフォームがある。

f:id:Yunolay:20190502174536p:plain

username : ' or 1 = 1; #
password : ' or 1 = 1; #

f:id:Yunolay:20190502174716p:plain

FLAG : ALLMN{W0W_Y0U_D1D_SQLi}

My Computer

Description

Your flag is on my computer. f:id:Yunolay:20190502192544j:plain

画像が与えられる。

stringsを見たらフラグがあった。

strings laptop.jpg 
JFIF
Ducky
&Adobe
 @025
 p!q
`AQa"@
`pAq
)9z6^
)9z6^
&&B@
)9z6^
3rr~
)9z6^
)9z6^
65??
)9z6^
D<@)
jdC3w$
:ABB7
~}:!
'x9Y
^DUWd
xx/\#
xY%z
?sF$
xx/\#
?sF$
xx/\#
?sF$
xx/\#
xY%z
?sF$
7<nx
7<nx
?sF$
xx/\#
xY%z
?sF$
xx/\#

(snip)

y4fp
Hb5D
a sydh sja A L L M N { H 3 X _ E D 1 T 1 N G _ W 4 S _ F U N _ 2 J D N 8 J }Q(
"fC2

FLAG : ALLMN{H3X_ED1T1NG_W4S_FUN_2JDN8J} ←これ通らなかったからダミーかも

What is your name?

Description

Only specific names can get the flag.

普通にフラグあった。

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char f[100]; // [rsp+0h] [rbp-4D0h]
  char b[100]; // [rsp+70h] [rbp-460h]
  char a[1000]; // [rsp+E0h] [rbp-3F0h]
  unsigned __int64 v7; // [rsp+4C8h] [rbp-8h]

  v7 = __readfsqword(0x28u);
  strcpy(f, "ALLMN{H3LL0_D4MN_D4N1EL_W73JFL}");
  *(_QWORD *)&f[32] = 0LL;
  *(_QWORD *)&f[40] = 0LL;
  *(_QWORD *)&f[48] = 0LL;
  *(_QWORD *)&f[56] = 0LL;
  *(_QWORD *)&f[64] = 0LL;
  *(_QWORD *)&f[72] = 0LL;
  *(_QWORD *)&f[80] = 0LL;
  *(_QWORD *)&f[88] = 0LL;
  *(_DWORD *)&f[96] = 0;
  strcpy(b, "DAMN_DANIEL");
  memset(&b[16], 0, 0x50uLL);
  *(_DWORD *)&b[96] = 0;
  puts("Chamaig hen gedeg ve?");
  scanf("%s", a);
  if ( !strcmp(a, b) )
    printf("Sain uu? %s", f);
  else
    printf("Chi bish baina daa!", b);
  return 0;
}

FLAG : ALLMN{H3LL0_D4MN_D4N1EL_W73JFL}

Admin panel

Description

Can you enter to my admin panel? I will give you my username and password. Just use the login file to log in.

zipが与えられる。解凍するとelf64のloginとpasswdとshadowが与えられる。 おそらく問題の趣旨からするとjohn the ripperでshadowからパスワードを復元するんだと思うんだけど loginをIDAに投げたらフラグ書いてあった。。

passwd

root:x:0:0:root:/root:/bin/bash

shadow

root:$6$HRMJoyGA$26FIgg6CU0bGUOfqFB0Qo9AE2LRZxG8N3H.3BK8t49wGlYbkFbxVFtGOZqVIq3qQ6k0oetDbn2aVzdhuVQ6US.:17770:0:99999:7:::

login main()

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char *v3; // rsi
  char f[100]; // [rsp+0h] [rbp-230h]
  char c[100]; // [rsp+70h] [rbp-1C0h]
  char x[100]; // [rsp+E0h] [rbp-150h]
  char y[100]; // [rsp+150h] [rbp-E0h]
  char l[100]; // [rsp+1C0h] [rbp-70h]
  unsigned __int64 v10; // [rsp+228h] [rbp-8h]

  v10 = __readfsqword(0x28u);
  puts("Sain uu? Ta nevtreh ner bolon nuuts ugee oruulna uu! CTF19.ALL.MN Admin Login");
  *(_QWORD *)c = 1953460082LL;
  *(_QWORD *)&c[8] = 0LL;
  memset(&c[16], 0, 0x50uLL);
  *(_DWORD *)&c[96] = 0;
  strcpy(x, "hellokitty");
  memset(&x[16], 0, 0x50uLL);
  *(_DWORD *)&x[96] = 0;
  strcpy(y, "ALLMN{G00DJ0B_Y0U_AR3_T00_G00D_SHD8WK}");
  *(_QWORD *)&y[40] = 0LL;
  *(_QWORD *)&y[48] = 0LL;
  *(_QWORD *)&y[56] = 0LL;
  *(_QWORD *)&y[64] = 0LL;
  *(_QWORD *)&y[72] = 0LL;
  *(_QWORD *)&y[80] = 0LL;
  *(_QWORD *)&y[88] = 0LL;
  *(_DWORD *)&y[96] = 0;
  puts("Nevtreh ner: ");
  scanf("%s", f);
  puts("Nuuts ug: ");
  scanf("%s", l);
  v3 = c;
  if ( !strcmp(f, c) && (v3 = x, !strcmp(l, x)) )
    puts(y);
  else
    printf("Uuchlaarai, netreh ner esvel nuuts ug buruu baina!", v3);
  return 0;
}

FLAG : ALLMN{G00DJ0B_Y0U_AR3_T00_G00D_SHD8WK}

Windows XP

Description

Access to the website by using Windows XP

f:id:Yunolay:20190502234839p:plain

Mozilla/5.0 (compatible; WOW64; MSIE 10.0; Windows XP 6.2)といったユーザエージェントを作ってアクセスする。 ChromeプラグインのUser-Agent switcherを使った。

f:id:Yunolay:20190502235011p:plain

FLAG : ALLMN{CH4NG3_TH3_US3R_AG3NT_WD8KKA}

My favorite number

Description

What is my favorite number? Flag format: ALLMN{my favorite number}

~/Desktop/CTF/My favorite number ᐅ file sanchir 
sanchir: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=04ad0704053b807e08fc8398ca0cf0549f9cc9bc, not stripped

~/Desktop/CTF/My favorite number ᐅ gdb sanchir 
gdb-peda$ pdisass main
Dump of assembler code for function main():
   0x000000000000073a <+0>:   push   rbp
   0x000000000000073b <+1>:   mov    rbp,rsp
   0x000000000000073e <+4>:   sub    rsp,0x10
   0x0000000000000742 <+8>:   mov    rax,QWORD PTR fs:0x28
   0x000000000000074b <+17>:  mov    QWORD PTR [rbp-0x8],rax
   0x000000000000074f <+21>:  xor    eax,eax
   0x0000000000000751 <+23>:  lea    rdi,[rip+0x100]        # 0x858
   0x0000000000000758 <+30>:  call   0x5e0 <puts@plt>
   0x000000000000075d <+35>:  lea    rax,[rbp-0xc]
   0x0000000000000761 <+39>:  mov    rsi,rax
   0x0000000000000764 <+42>:  lea    rdi,[rip+0x10a]        # 0x875
   0x000000000000076b <+49>:  mov    eax,0x0
   0x0000000000000770 <+54>:  call   0x610 <scanf@plt>
   0x0000000000000775 <+59>:  mov    eax,DWORD PTR [rbp-0xc]
   0x0000000000000778 <+62>:  cmp    eax,0x4d1
   0x000000000000077d <+67>:  jne    0x797 <main()+93>
   0x000000000000077f <+69>:  mov    eax,DWORD PTR [rbp-0xc]
   0x0000000000000782 <+72>:  mov    esi,eax
   0x0000000000000784 <+74>:  lea    rdi,[rip+0xed]        # 0x878
   0x000000000000078b <+81>:  mov    eax,0x0
   0x0000000000000790 <+86>:  call   0x600 <printf@plt>
   0x0000000000000795 <+91>:  jmp    0x7a8 <main()+110>
   0x0000000000000797 <+93>:  lea    rdi,[rip+0xf2]        # 0x890
   0x000000000000079e <+100>: mov    eax,0x0
   0x00000000000007a3 <+105>: call   0x600 <printf@plt>
   0x00000000000007a8 <+110>: mov    eax,0x0
   0x00000000000007ad <+115>: mov    rdx,QWORD PTR [rbp-0x8]
   0x00000000000007b1 <+119>: xor    rdx,QWORD PTR fs:0x28
   0x00000000000007ba <+128>: je     0x7c1 <main()+135>
   0x00000000000007bc <+130>: call   0x5f0 <__stack_chk_fail@plt>
   0x00000000000007c1 <+135>: leave  
   0x00000000000007c2 <+136>: ret    
End of assembler dump.

以下で比較している。

0x0000000000000778 <+62>:  cmp    eax,0x4d1
~/Desktop/CTF/My favorite number ᐅ python   
Python 2.7.12 (default, Nov 12 2018, 14:36:49) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 0x4d1
1233
~/Desktop/CTF/My favorite number ᐅ ./sanchir 
Minii durtai toog oruulna uu
1233
Zuv baina mai flag: 1233%  

FLAG : ALLMN{1233}