CTFs

    redpwnCTF - orm-bad

    redpwnCTF - orm-bad

    이번에는 orm_bad(web)를 풀어볼것이다. 아래는 이 문제의 js 파일이다. const express = require('express'); const sqlite3 = require('sqlite3'); const crypto = require('crypto') const app = express(); app.use(express.urlencoded({extended: true})); app.use(express.static('./public')); app.set('view engine', 'ejs'); const db = new sqlite3.Database(':memory:'); const flag = process.env.FLAG; // yes i know this is callback he..

    redpwnCTF - ret2generic-flag-reader

    redpwnCTF - ret2generic-flag-reader

    이번에는 ret2generic-flag-reader 문제를 풀어보자. 일단 아래의 C코드를 확인해보자. #include #include #include void super_generic_flag_reading_function_please_ret_to_me() { char flag[0x100] = {0}; FILE *fp = fopen("./flag.txt", "r"); if (!fp) { puts("no flag!! contact a member of rob inc"); exit(-1); } fgets(flag, 0xff, fp); puts(flag); fclose(fp); } int main(void) { char comments_and_concerns[32]; setbuf(stdout, NULL); ..

    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..

    Shakti CTF - Write up(HHJ)

    Shakti CTF - Write up(HHJ)

    난 이번에 One of the dummiest라는 4인 팀중 3명이 같이 참가 하였다. 우리는 총 11문제를 풀었다. 난 이제 그 문제들을 write up 하는 시간을 가져 볼것이다. 물론 다시 풀어본 문제도 라업을 쓸 것이다. 1. Sanity Check 이 문제는 ctf에 출석체크용 문제인데, 그래서 1점 짜리다. 이건 디스코드에서 flag를 찾을수 있다. 2. Just Run it! ctf.shakticon.in/files/7d262c6bf2eaf4594c86b241a6552576/run?token=eyJ1c2VyX2lkIjoyMjIsInRlYW1faWQiOjE0NCwiZmlsZV9pZCI6Mzd9.X82ABA.xx5kWQo9F30GNvGaktiL8Ldt_8w 이건 아주 쉬운 리버싱문제이다. 리버싱..