Web Beginner - phpreg
보호되어 있는 글입니다.
2024.04.18
no image
Reversing - Keygen
Keygen 문제풀이를 시작하겠습니다😀 먼저 nc로 접속하여 실행해보았습니다. 실행해보니 키를 입력하라고 하고 임의의 문자열을 입력했더니 아무런 반응이 없습니다. 그럼 IDA로 열어서 확인해보겠습니다. main 함수를 살펴보니 버퍼를 할당하고 임의이 입력값을 puts함수와 fgets함수로 받아오는 걸 볼 수 있습니다. 이후 check_key 함수에서 입력한 값을 통해 0 이외의 값을 받아내면 flag를 출력시키는 것을 확인할 수 있네요😀 그럼 check_key 함수를 확인해보도록 합시다. 확인해보니 5번째 줄에 if 함수로 입력한 값의 길이가 9이하 이거나 64이상이면 바로 빠져나오게됩니다. 그리고 s2 변수에 입력한 값이 인코딩된 것을 담게 되고 strcmp 함수를 이용해 "OO]oUU2U
2021.01.06
no image
Reversing - Strncmp
오랜만에 돌아온 CTF 풀이이네요😁 우선 문제를 보도록합시다! Strcnmp 파일을 하나 다운받을 수 있을 겁니다! 우선 IDA로 분석을 해보도록 하죠😀 main 함수를 보면 위의 사진처럼 나오는 것을 볼 수 있습니다. 빨간칸은 암호화된 것처럼 보이는 문자열처럼 보이네요😀 그리고 파란칸은 "Enter your input:" 이라는 문자열과 scanf 함수로 v4에 담기게 되고 v5와 비교를 합니다. !strcmp_(v4, v5)는 NOT연산이 되기 때문에 0이면 1이 되고 puts 함수를 통해 "Good game"을 출력하네요! 그럼 여기서 v4는 우리가 입력한 값이 되고 v5는 빨간칸 맨위의 문자를 기점으로 저 암호화된 문자열을 나타낸다는 것을 알 수 있습니다.😁 그럼 strcmp_를 분석하기 위해 들..
2021.01.05
no image
Old - 12 (score:250)
Old 12번 문제 풀이를 시작하겠습니다!😊 문제로 들어오니 "javascript challenge"라는 문자열이 나옵니다😀 소스코드를 보도록하죠! 소스코드를 살펴보니 script에 이상한 이모티콘들이 막 있네용..! 중간중간에 ;(세미콜론)이 눈에 띕니다😀 뭔가 소스코드가 난독화되어 있다는 것같지 않나요..?? 저는 잘 모르니 구글링을 통해 알아보았습니다😁 구글링으로 알아본 결과 AA라는 일본 이모티콘(?) 자바스크립트 난독화라고 하는군요... (참 신기한 난독화가 많은 것 같네요..😑) 그래서 당연히 디코딩 해봐야겠죠😊 디코딩을 해본결과 위의 사진처럼 소스코드가 복호화 되었습니다! 자 그럼 이제 콘솔에 넣어서 결과를 보도록 하죠😀 소스코드를 보면 ck라는 변수가 눈에 띕니다! ck가 뭔지를 알아야겠다..
2020.10.12
no image
Old - 10 (score:250)
Old 10번 문제 풀이 시작하겠습니다😊 문제를 들어가보니 O와 2개의 색으로 이루어진 줄이 존재합니다. 뭔지 모르니 코드를 보도록 합시다😊 소스코드를 보니 onclick, onmouseover, onmouseout이 눈에 띄네요😁 onclick은 마우스로 클릭했을 때 실행되는 이벤트이며, 클릭시 1씩 증가하고 1600을 맞추면 뭔가가 나타날 것 같군요! onmouseover은 마우스를 갖다 대었을 때 실행되는 이벤트이며, 'y0u'를 출력할 것 같네요! onmouseout은 마우스가 해당 태그의 바깥에 있을 때 실행되는 이벤트로, 처음 보았던 'O'임을 알 수 있습니다😁 소스코드에서 보았듯이 마우스를 갖다대면 'yOu'가 출력되는 것을 볼 수 있습니다😊 마우스로 클릭하니 역시 오른쪽으로 찔끔찔끔 움직이..
2020.10.10
no image
Old - 42 (score:200)
Old 42번 문제 풀이를 시작하도록 하겠습니다.😀 문제를 들어와 보니 표가 존재하고 "test.txt" 와 "flag.docx"가 보입니다. 그리고 "flag.docx"를 읽으라고 하네요😁 소스코드를 보니 "text.txt"는 "?down=dGVzdC50eHQ="로 이동하는 반면, "flag.docx"는 "javascript:alert("Access%20Denied")"로 이동합니다. 즉, "flag.docx" 옆의 다운로드 기능은 그저 alert만 띄우는 것이라는 거죠🙄 그럼 다운을 받아야하는 방법을 알아야겠죠?😀 "text.txt"의 경로를 보면 "dGVzdC50eHQ="에서 "="가 들어간 것을 보고 base64 인코딩이라는 것을 알 수 있습니다. atob()는 base64 디코딩을 해주는 함수입..
2020.10.08
no image
Old - 36 (score:200)
자 36번 문제 풀이를 시작하겠습니다😀 문제로 들어가보니 영어문장이 존재하네요🤔 "이 디렉토리에서 index.php 파일을 vi에디터로 편집하는 도중, 정전으로 인해 소스코드가 사라졌습니다. 저를 도와주세요😥" 우선 여기서 힌트가 index.php 파일을 vi 편집하는 도중 정전이라는 얘기치 못한 상황으로 소스가 날라갔다는 겁니다. 종종 리눅스 환경에서 vi 에디터로 작업을 하다가 불미스러운 일이 생기면 숨김파일로 swp 파일을 보실 수 있으실 겁니다😁 스왑파일(.swp)이란? 파일을 편집하다가 얘기치 못한 상황으로 강제 종료되거나 다른 사용자가 먼저 해당파일을 실행하고 있는데 접근하려는 경우에 생성됩니다. 스왑파일은 .원본파일명.swp 형식으로 생성됩니다😀 그럼 글이 사실이라면 index.php 파일에..
2020.10.07
no image
Easy Unpack (Point : 100)
이번엔 Easy Unpack 이라는 문제를 풀이해보도록 하겠습니다😀 우선 다운받아서 열어보도록 합시다! ReadMe 파일을 열어보니 OEP를 찾으라고 합니다. OEP란? Original Entry Point의 약자로써, 패킹이 되고나면 먼저 암호 루틴 코드가 시작되어 바로 원본 EP가 나오지 않습니다. 즉, 패킹된 파일에서 원본 EP 부분을 OEP라고 합니다.😄 프로그램을 실행시키니 아무런 어떤 것도 없습니다.😶 그래서 저는 PEiD를 활용하기로 했습니다! 우선 첫번째 쉽게 찾는 방법은 PEiD를 이용하는 것입니다. PEiD는 파일의 정보를 나타내어 주는 프로그램입니다😁 위의 사진에서 보시면 OEP를 바로 나타내어주고 있습니다! 오른쪽 하단에서 이 기능을 이용해주면 바로 OEP를 찾을 수 있습니다😄 다른..
2020.10.07

Web Beginner - phpreg

2024. 4. 18. 17:25

This is a protected article. Please enter the password.

Reversing - Keygen

HelloMG
|2021. 1. 6. 16:33

Keygen 문제풀이를 시작하겠습니다😀

Reversing Keygen

먼저 nc로 접속하여 실행해보았습니다.

nc ctf.j0n9hyun.xyz 9004

실행해보니 키를 입력하라고 하고 임의의 문자열을 입력했더니 아무런 반응이 없습니다.

 

그럼 IDA로 열어서 확인해보겠습니다.

main

main 함수를 살펴보니 버퍼를 할당하고 임의이 입력값을 puts함수와 fgets함수로 받아오는 걸 볼 수 있습니다.

이후 check_key 함수에서 입력한 값을 통해 0 이외의 값을 받아내면 flag를 출력시키는 것을 확인할 수 있네요😀

 

그럼 check_key 함수를 확인해보도록 합시다.

check_key

확인해보니 5번째 줄에 if 함수로 입력한 값의 길이가 9이하 이거나 64이상이면 바로 빠져나오게됩니다.

그리고 s2 변수에 입력한 값이 인코딩된 것을 담게 되고

strcmp 함수를 이용해 "OO]oUU2U<sU2UsUsK"값과 s2의 값을 비교하여 0과 비교한 값을 리턴시킵니다.😀

 

strcmp의 함수는 인자 2개의 문자열을 처음부터 하나씩 비교하여 -1, 0, 1의 결과를 내게 되어있습니다.

 

-1일 경우 : 첫번째 인자가 두번째 인자보다 작을 때

0일 경우 : 두 인자가 같을 때

1일 경우 : 첫번째 인자가 두 번째 인자보다 클 때

 

즉, strcmp() 함수의 결과가 0(같을 때)이 되면 0과 비교하여 결과가 1이 되어 1을 리턴하고

main 함수에서 flag를 출력하는 형식이 되겠네요😀

flag 출력 프로세스

 그럼 입력값이 인코딩되어 s2에 담기게 되니까 Encoding 함수를 분석해야하겠죠?😀

Encoding

8번 ~ 10번 줄은 주석으로 제가 달아놓았습니다.

 

for문을 보니 입력한 값을 차례대로 암호화하고 있는 것이 보이네요😀

식이 주어졌으니 간단하게 Python을 이용하여 코딩을해서 풀어보았습니다!

,Source Code

몇 줄 안되는 엄청 간단한 코드죠! 그리고 돌려서 나온 결과값은..!

결과

이걸 그대로 넣어보니 flag를 출력을 안하더라구요..! 그래서 gdb로 결과값을 확인해 보았습니다😀

개행문자

위의 사진은 Encoding 후 값인데 "i"가 추가되어 있는 것을 볼 수 있습니다.

그럼 맨뒤 문자(&)를 빼서 확인을 해봐야될 것 같네요!

A,d<&$+$''.+$&.&

확인해보니 정답이 되네요! fgets의 경우 뒤의 개행문자까지 포함이 되어서 하나를 빼줘야 하는 것 같습니다.😀

flag

이렇게 flag를 획득하게 되었습니다!

 

이만 Keygen 문제풀이를 마치도록 하겠습니다.😁

'CTF > HackCTF' 카테고리의 다른 글

Reversing - Strncmp  (0) 2021.01.05
Web - LOL  (0) 2020.09.28
Reversing - Handray  (0) 2020.04.07
Forensics - 잔상  (0) 2020.04.02
Forensics - Terrorist  (0) 2020.03.31

Reversing - Strncmp

HelloMG
|2021. 1. 5. 17:39

오랜만에 돌아온 CTF 풀이이네요😁

 

우선 문제를 보도록합시다!

HackCTF - Strncmp

Strcnmp 파일을 하나 다운받을 수 있을 겁니다! 우선 IDA로 분석을 해보도록 하죠😀

Main

main 함수를 보면 위의 사진처럼 나오는 것을 볼 수 있습니다.

빨간칸은 암호화된 것처럼 보이는 문자열처럼 보이네요😀

 

그리고 파란칸은 "Enter your input:" 이라는 문자열과 scanf 함수로 v4에 담기게 되고 v5와 비교를 합니다.

!strcmp_(v4, v5)는 NOT연산이 되기 때문에 0이면 1이 되고 puts 함수를 통해 "Good game"을 출력하네요!

 

그럼 여기서 v4는 우리가 입력한 값이 되고 v5는 빨간칸 맨위의 문자를 기점으로 저 암호화된 문자열을 나타낸다는 것을 알 수 있습니다.😁

 

그럼 strcmp_를 분석하기 위해 들어가봅시다!

strcmp_

들어가보니 v3를 이용하여 막 뭔가를 하고 있고 for문으로 a1[j]와 key를 XOR하고 a2와 비교하는 걸로 보입니다!

처음에 v3가 뭐하는건지 계속 생각해봤는데 아무런 의미없는 녀석이더라구요..😑

 

결국 우리가 찾아야하는건 key인걸로 보입니다😁

key

Key를 찾아본 결과 check 함수에 들어 있는 것을 알 수 있으실 겁니다.

 

여기서 보면 if 함수 안에 v3 * (v3 -14) == 49라는 식이 주어졌고 이것이 맞으면 v3가 key값 이라고 합니다.😀

어려운 식이 아니라서 쉽게 계산 가능하시져😁

 

자 key 값을 구했으니 우리가 풀어야 하는건 "입력값 XOR key = 암호화" 입니다.

그럼 입력값을 구해줄려면 식이 어떻게 되어야 할까요?

 

"입력값 = 암호화 XOR key"

 

하지만 사람이 일일이 계산하기 어려우니 쉽게 코딩하여 풀어주면 됩니다~ 저는 Python으로 간단히 하였습니다!

Pyhton Source
Flag

 

그럼 이만 문제 풀이를 마치도록 하겠습니다.😀

'CTF > HackCTF' 카테고리의 다른 글

Reversing - Keygen  (0) 2021.01.06
Web - LOL  (0) 2020.09.28
Reversing - Handray  (0) 2020.04.07
Forensics - 잔상  (0) 2020.04.02
Forensics - Terrorist  (0) 2020.03.31

Old - 12 (score:250)

HelloMG
|2020. 10. 12. 14:07

Old 12번 문제 풀이를 시작하겠습니다!😊

Old 12번 문제

문제로 들어오니 "javascript challenge"라는 문자열이 나옵니다😀

 

소스코드를 보도록하죠!

 

소스코드

소스코드를 살펴보니 script에 이상한 이모티콘들이 막 있네용..!

 

중간중간에 ;(세미콜론)이 눈에 띕니다😀

 

뭔가 소스코드가 난독화되어 있다는 것같지 않나요..?? 저는 잘 모르니 구글링을 통해 알아보았습니다😁

AAencoding

구글링으로 알아본 결과 AA라는 일본 이모티콘(?) 자바스크립트 난독화라고 하는군요...

(참 신기한 난독화가 많은 것 같네요..😑)

 

그래서 당연히 디코딩 해봐야겠죠😊

 

디코딩을 해본결과 위의 사진처럼 소스코드가 복호화 되었습니다!

 

console

자 그럼 이제 콘솔에 넣어서 결과를 보도록 하죠😀

 

소스코드를 보면 ck라는 변수가 눈에 띕니다!

ck가 뭔지를 알아야겠다 생각이 들어서 if문을 제거하고 뒤에 location.~~ 는 의미가 없어 보여서 뺀 후에

console.log()를 통해서 출력을 시키도록 하고 넣어봤습니다😁

 

그랬더니 어떤 문자열이 나왔고

 

location.href를 통해 알 수 있듯이 해당 주소에서 ck.php를 하면 뭔가가 나오겠다는게 보이죠?😉

 

good!!

바로 문제가 해결이 되네요😁

 

참 이상한 난독화라는 것을 세삼 느끼게 되네요...😐

 

이만 문제풀이를 마치겠습니다!!

'CTF > Webhacking.kr' 카테고리의 다른 글

Old - 10 (score:250)  (0) 2020.10.10
Old - 42 (score:200)  (0) 2020.10.08
Old - 36 (score:200)  (0) 2020.10.07
Old - 23 (score:200)  (0) 2020.10.05
Old - 20 (score:200)  (0) 2020.04.07

Old - 10 (score:250)

HelloMG
|2020. 10. 10. 14:54

Old 10번 문제 풀이 시작하겠습니다😊

Old 10번 문제

문제를 들어가보니 O와 2개의 색으로 이루어진 줄이 존재합니다.

 

뭔지 모르니 코드를 보도록 합시다😊

 

Source Code

소스코드를 보니 onclick, onmouseover, onmouseout이 눈에 띄네요😁

 

onclick은 마우스로 클릭했을 때 실행되는 이벤트이며, 클릭시 1씩 증가하고 1600을 맞추면 뭔가가 나타날 것 같군요!

onmouseover은 마우스를 갖다 대었을 때 실행되는 이벤트이며, 'y0u'를 출력할 것 같네요!

onmouseout은 마우스가 해당 태그의 바깥에 있을 때 실행되는 이벤트로, 처음 보았던 'O'임을 알 수 있습니다😁

 

yOu

소스코드에서 보았듯이 마우스를 갖다대면 'yOu'가 출력되는 것을 볼 수 있습니다😊

 

Click

마우스로 클릭하니 역시 오른쪽으로 찔끔찔끔 움직이네요..🤣

 

Edit

개발자 도구에서 소스코드를 수정하는 것이 가능하니까 '1'을 '1599'로 바꾸어 1600에 도달하도록 해주면 되겠네요😉

(처음에 1600으로 바꾸었다가 안되가지고 당황했습니다🤣)

 

그럼 문제 풀이를 마치겠습니다!

'CTF > Webhacking.kr' 카테고리의 다른 글

Old - 12 (score:250)  (0) 2020.10.12
Old - 42 (score:200)  (0) 2020.10.08
Old - 36 (score:200)  (0) 2020.10.07
Old - 23 (score:200)  (0) 2020.10.05
Old - 20 (score:200)  (0) 2020.04.07

Old 42번 문제 풀이를 시작하도록 하겠습니다.😀

Old 42번 문제

문제를 들어와 보니 표가 존재하고 "test.txt" 와 "flag.docx"가 보입니다.

그리고 "flag.docx"를 읽으라고 하네요😁

 

소스코드

소스코드를 보니 "text.txt"는 "?down=dGVzdC50eHQ="로 이동하는 반면,

"flag.docx"는 "javascript:alert("Access%20Denied")"로 이동합니다.

 

즉, "flag.docx" 옆의 다운로드 기능은 그저 alert만 띄우는 것이라는 거죠🙄

그럼 다운을 받아야하는 방법을 알아야겠죠?😀

 

"text.txt"의 경로를 보면 "dGVzdC50eHQ="에서 "="가 들어간 것을 보고 base64 인코딩이라는 것을 알 수 있습니다.

 

atob

atob()는 base64 디코딩을 해주는 함수입니다😁

 

콘솔에서 실행 시켜보니 "text.txt"가 나오는 군요!

 

그럼 "flag.docx"도 base64 인코딩해서 down 인자에 넣으면 다운로드 되지 않을까 싶네요😀

 

btoa

btoa는 문자열을 base64 인코딩 해주는 함수 입니다😁

 

값을 down 인자에 넣어서 보내주면 되겠죠?

 

Success

이렇게 말이죠!

 

그럼 "flag.docx"가 다운이 되고 flag를 확인하실 수 있으실 겁니다😀

 

이만 문제풀이를 마치도록 하겠습니다😊

'CTF > Webhacking.kr' 카테고리의 다른 글

Old - 12 (score:250)  (0) 2020.10.12
Old - 10 (score:250)  (0) 2020.10.10
Old - 36 (score:200)  (0) 2020.10.07
Old - 23 (score:200)  (0) 2020.10.05
Old - 20 (score:200)  (0) 2020.04.07

자 36번 문제 풀이를 시작하겠습니다😀

 

Old 36번 문제

문제로 들어가보니 영어문장이 존재하네요🤔

 

"이 디렉토리에서 index.php 파일을 vi에디터로 편집하는 도중, 정전으로 인해 소스코드가 사라졌습니다.

저를 도와주세요😥"

 

우선 여기서 힌트가 index.php 파일을 vi 편집하는 도중 정전이라는 얘기치 못한 상황으로 소스가 날라갔다는 겁니다.

 

종종 리눅스 환경에서 vi 에디터로 작업을 하다가 불미스러운 일이 생기면

숨김파일로 swp 파일을 보실 수 있으실 겁니다😁

 

스왑파일(.swp)이란?

 

파일을 편집하다가 얘기치 못한 상황으로 강제 종료되거나

다른 사용자가 먼저 해당파일을 실행하고 있는데 접근하려는 경우에 생성됩니다.

스왑파일은 .원본파일명.swp 형식으로 생성됩니다😀

 

그럼 글이 사실이라면 index.php 파일에 대한 swp 파일이 존재할 것이 분명합니다😆

 

.index.php.swp

그냥 index.php.swp을 넣었는데 될리가 없죠! 앞에 .(점)을 넣어서 다운로드를 시켜봅시다😀

 

flag

메모장을 이용하여 열어본 결과 flag를 찾을 수 있었네요😁

 

이만 풀이를 마치겠습니다!

'CTF > Webhacking.kr' 카테고리의 다른 글

Old - 10 (score:250)  (0) 2020.10.10
Old - 42 (score:200)  (0) 2020.10.08
Old - 23 (score:200)  (0) 2020.10.05
Old - 20 (score:200)  (0) 2020.04.07
Old - 1 (score:200)  (0) 2020.04.02

Easy Unpack

이번엔 Easy Unpack 이라는 문제를 풀이해보도록 하겠습니다😀

 

우선 다운받아서 열어보도록 합시다!

 

ReadMe

ReadMe 파일을 열어보니 OEP를 찾으라고 합니다.

 

OEP란?

 

Original Entry Point의 약자로써, 패킹이 되고나면 먼저 암호 루틴 코드가 시작되어 바로 원본 EP가 나오지 않습니다.

즉, 패킹된 파일에서 원본 EP 부분을 OEP라고 합니다.😄

 

프로그램 실행

프로그램을 실행시키니 아무런 어떤 것도 없습니다.😶

 

그래서 저는 PEiD를 활용하기로 했습니다!

 

PEiD

우선 첫번째 쉽게 찾는 방법은 PEiD를 이용하는 것입니다.

 

PEiD는 파일의 정보를 나타내어 주는 프로그램입니다😁

 

위의 사진에서 보시면 OEP를 바로 나타내어주고 있습니다!

 

Generic OEP Finder

오른쪽 하단에서 이 기능을 이용해주면 바로 OEP를 찾을 수 있습니다😄

 

다른 방법을 한번 보도록 합시다😀

 

40A1F8

코드가 길지않지만 중간중간 큰 루프문들이 조금 씩 있더라구요... 차차 내려가다보면

 

위의 사진처럼 40A1F8 주소에 jmp문이 있는 것을 볼 수 있습니다.

 

그리고 밑에는 OP Code로 쫘르르르륵 채워져있는 것을 볼 수 있는데

보통은 OEP로 넘어가는 코드 이후에 OP Code로 채워지는 경우가 있어서 점프문으로 넘어가 보았습니다😀 

 

OEP

jmp으로 401150으로 넘어와 보니 정상적인 코드 흐름을 발견할 수 있었습니다😁

 

그럼 이만 문제풀이를 마치도록 하겠습니다🤗

'CTF > Reversing.kr' 카테고리의 다른 글

Easy Keygen (Point : 100)  (0) 2020.10.06
Easy Crack (Point : 100)  (0) 2020.10.05