분류 전체보기

    redpwnCTF - beginner-generic-pwn-number-0

    redpwnCTF - beginner-generic-pwn-number-0

    오늘은 redpwnCTF 의 beginner-generic-pwn-number-0문제를 풀어볼것이다. #include #include #include const char *inspirational_messages[] = { "\"𝘭𝘦𝘵𝘴 𝘣𝘳𝘦𝘢𝘬 𝘵𝘩𝘦 𝘵𝘳𝘢𝘥𝘪𝘵𝘪𝘰𝘯 𝘰𝘧 𝘭𝘢𝘴𝘵 𝘮𝘪𝘯𝘶𝘵𝘦 𝘤𝘩𝘢𝘭𝘭 𝘸𝘳𝘪𝘵𝘪𝘯𝘨\"", "\"𝘱𝘭𝘦𝘢𝘴𝘦 𝘸𝘳𝘪𝘵𝘦 𝘢 𝘱𝘸𝘯 𝘴𝘰𝘮𝘦𝘵𝘪𝘮𝘦 𝘵𝘩𝘪𝘴 𝘸𝘦𝘦𝘬\"", "\"𝘮𝘰𝘳𝘦 𝘵𝘩𝘢𝘯 1 𝘸𝘦𝘦𝘬 𝘣𝘦𝘧𝘰𝘳𝘦 𝘵𝘩𝘦 𝘤𝘰𝘮𝘱𝘦𝘵𝘪𝘵𝘪𝘰𝘯\"", }; int main(void) { srand(time(0)); long inspirational_message_index = rand() % (sizeof(inspirational_messages) / sizeof..

    S.H.E.L.L ctf - under Development

    S.H.E.L.L ctf - under Development

    이번에는 under development라는 웹 문제를 풀어보겠다. http://3.142.122.1:8885/ 위 사이트는 문제사이트이다. 먼저 사이트를 살펴보면 아래와 같다. 이렇한 문장이 있는데, robots.txt 접속이 되지는 않는다. 그래서 쿠키를 살펴보기로 했다. dXNlcg%3D%3D 이렇게 URL과 다른 암호문으로 암호화된 문자열이 있다. %3D는 '=' 인데 암호문에 =이 있는것을 보면 base64인것을 알수있다. 그러면 URL과 BASE64를 동시에 디코딩하면 위처럼 user이라는 결과가 나온다. 그러면 user 대신 admin으로 쿠키가 들어가는 것을 유추할수 있다. 이제 admin을 base64로 인코딩해서 쿠키를 넣어보자. YWRtaW4= 이렇게 위처럼 인코딩된다. 이제 이 값을..

    S.H.E.L.L CTF - haxxor

    S.H.E.L.L CTF - haxxor

    이번에는 shell ctf의 haxxor문제를 풀어보겠다. 이렇게 위와 같이 암호문이 있다. 문제 이름을 보니 hex를 xor하는 문제인 것 같다. 그러면 cyberchef를 이용해서 풀어보겠다. 그런데 위의 암호문을 그대로 쓰면 오류가 생길수 있다. 그래서 일단 "0x"부분하고 "-"을 빼고 다시 암호문을 만들면 아래와 같다. 02 19 14 1d 1d 2a 09 61 03 62 15 0e 60 05 0e 19 04 19 2c 그리고 cyberchef를 이제 이용하면 된다.(결과는 맨 밑에 링크) 먼저 왼쪽 바에서 from hex옵션과 xor을 사용한다. 그리고 xor key를 hex에서 UTF8로 바꾼다.(키가 문자라서........) 키가 안 주어지기 때문에 Bruteforce를 해야한다.(프로그램..

    S.H.E.L.Lctf - EASY-RSA

    S.H.E.L.Lctf - EASY-RSA

    이번에는 easy rsa 문제를 풀어 보겠다. n = 1763350599372172240188600248087473321738860115540927328389207609428163138985769311 e = 65537 c = 33475248111421194902497742876885935310304862428980875522333303840565113662943528 이렇게 되어있다. 일단 n을 http://factordb.com/ 에 돌려보자. 이렇게 위처럼 나오는데 밑에 있는 두 값을 python으로 값을 만들어서 RSA를 decode하면 된다. from Crypto.Util.number import inverse n = 1763350599372172240188600248087473321738860..

    S.H.E.L.L ctf - encoder

    S.H.E.L.L ctf - encoder

    오늘은 CTFtime에서 ctf를 찾아다가 찾은 shell ctf(https://shellctf.games/)의 encoder문제를 풀어보겠다. 먼저 문제를 보면, 이렇게 "ZOLSS{W1G_D3HY_4_T45R}"라는 인코딩된 문자가 있다. 이 대회에서는 플래그 형식이 "SHELL{...}"이다. 그런데 "ZOLSS"는 "SHELL"과 같은 문자수, SS, LL처럼 두 글자가 반복되는 것을 보고 카이사르 암호라는 것을 추측할 수 있다. https://www.dcode.fr/caesar-cipher Caesar Cipher (Shift) - Online Decoder, Encoder, Solver, Translator Tool to decrypt/encrypt with Caesar. Caesar ciph..

    [Go] Function 사용하기(func 사용)

    [Go] Function 사용하기(func 사용)

    오늘은 function함수에 대해 알아볼 것이다. 1. 기본적인 function Go언어에서 기본적인 사용법은 아래와 같다. func (인자 ) 예를 들어 처음 main함수가 시작할때 아래처럼 사용한다. func main() { } 그러면 한 번 plus라는 두 값을 받아서 더한 값을 return하는 함수를 만들어보자. 1. main 패키지 2. fmt import하기 3. func plus(a, b) 명령어로 함수 만들기 4. return 함수 사용하기 5. main 함수 만들기 6. fmt함수 사용해서 함수 리턴 값 출력 package main import ( "fmt" ) func plus(a, b int) int { return a + b } func main() { fmt.Println(plus..

    [Go] 상수와 변수 선언(Variables and Constants)

    [Go] 상수와 변수 선언(Variables and Constants)

    오늘은 Go언어에서 변수와 상수를 한번 정의 해볼 것이다. 1. 상수 프로그래밍에서 상수란 한 번 정의를 하면 다시 바꿀수 없는 값이다. Go에서 상수의 선언은 "const" 명령어를 사용한다. const = const의 형식은 위와 같다. 예를 들어 이름이 Hi 이고 type은 string 값은 "hello"의 상수를 만들어보면, 아래와 같다. const hi string = "hello" 추가적으로 type은 string(문자열), int(정수), float(실수), bool(True, False) 등이 있다. 2. 변수 변수 선언은 두가지 방법이 있다. 첫번째로 const와 같은 방법이다. var = 변수는 값을 바꿀수 있기 때문에 아래와 같이 사용할 수 있다. var Hi string = "hel..

    [Go] Package, import,func - hello go 출력하기 (기본문법)

    [Go] Package, import,func - hello go 출력하기 (기본문법)

    오늘은 Go의 기본 문법중 Package와 import를 설명할 것이다. 1. package 패키지 명령어는 프로그래밍 시작하는 첫줄에 넣는다. package main Go 주된 package는 "main"이다. main 패키지는 컴파일이 되지만, 만약 그 폴더에 main에게 공유되는 package를 만든다면 이 package는 컴파일이 안된다. 2. import Go언어에서는 import를 아래와 같이한다. import "fmt" go는 import 다음 더블쿼터("")를 붙힌다. 여러개의 패키지를 import할 때는 쉽게 밑에 처럼 할 수있다. import ( "fmt" "math" ) 3. func 우리는 go 프로그래밍을 할때 꼭 func (function)을 선언해야한다. 아니면 에러가 뜬다. ..