๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Tried. Failed. Logged.
728x90

๐ŸดCTF84

TryHackMe - Pickle Rick Writeup ๊ฐœ์š”๋ฏธ๊ตญ ์ธ๊ธฐ ์• ๋‹ˆ ๋ฆญ์•ค ๋ชจํ‹ฐ ํŒจ๋Ÿฌ๋”” CTF ๋ฌธ์ œ์ด๋‹ค. ์›ƒ๊ธฐ๊ฒŒ๋„ ์ด๋ฒˆ ๋ฌธ์ œ์—๋Š” ์Šคํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ํ”ผํด(?)๋กœ ๋ณ€ํ•œ ๋ฆญ์ด ๋‹ค์‹œ ์‚ฌ๋žŒ์œผ๋กœ ๋Œ์•„์˜ค๋ ค๋ฉด 3๊ฐ€์ง€์˜ ์–ด๋–ค ์žฌ๋ฃŒ๊ฐ€ ํ•„์š”ํ•œ๋ฐ ๋ฌธ์ œ ํ’€์ด์ž์ธ ์šฐ๋ฆฌ๊ฐ€(์ž‘์ค‘์˜ ๋ชจํ‹ฐ๊ฐ€ ๋˜์–ด์„œ) CTF ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์žฌ๋ฃŒ๋“ค์„ ์ฐพ๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค.   Question 1. What is the first ingredient that Rick needs?nmap ๋ช…๋ น์–ด๋กœ ๋ฆญ์˜ ์ปดํ“จํ„ฐ์— ์—ด๋ ค์žˆ๋Š” ์„œ๋น„์Šค๋“ค์„ ์Šค์บ๋‹ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด 2๊ฐœ๊ฐ€ ๋‚˜์˜จ๋‹ค. (ssh์™€ http)$ sudo nmap -sS -sV -T4 -p 1-100 10.10.232.9922/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.6 (Ubuntu Linux; protocol 2.. 2023. 5. 20.
DreamHack - Mitigation: Stack Canary ์‹ค์Šต ๋ฌธ์ œ(์นด๋‚˜๋ฆฌ ๊ฐ’ ๊ตฌํ•˜๊ธฐ) https://learn.dreamhack.io/112#p2477 ๋กœ๊ทธ์ธ | Dreamhack dreamhack.io ์šฐ์„  a๋ฅผ 8๊ฐœ ์ดํ•˜๋กœ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๋Š” ์—†์–ด ๋ณด์ธ๋‹ค. ๋งŒ์ผ a๋ฅผ 9๊ฐœ๋ฅผ ์ž…๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋’ท๋ถ€๋ถ„์— tTc(xU8๋ผ๋Š” ์ด์ƒํ•œ ๊ฐ’์ด ๋ถ™๋Š”๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๋ฉด ์นด๋‚˜๋ฆฌ ์˜์—ญ์—๋Š” ์ €๋Ÿฐ ์‹์œผ๋กœ ๊ฐ’์ด ์ €์žฅ๋ผ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์™œ a๋ฅผ 8๊ฐœ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์นด๋‚˜๋ฆฌ ๊ฐ’์ด ์ถœ๋ ฅ์ด ๋˜์ง€ ์•Š๋Š”๊ฐ€? ๊ทธ ์ด์œ ๋Š” ์นด๋‚˜๋ฆฌ์— ๋ฌธ์ž ๋ ๋ถ€๋ถ„์—๋Š” \x00์ธ ์ฆ‰ NULL์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— printf ์ถœ๋ ฅ์„ ํ•˜๋ฉด ๋ฌธ์ž์˜ ๋์œผ๋กœ ์ธ์‹์ด ๋˜์–ด ์นด๋‚˜๋ฆฌ ๊ฐ’์ด ํ•จ๊ป˜ ์ถœ๋ ฅ๋˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์นด๋‚˜๋ฆฌ๋ฅผ ์œ ์ถ”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” \x00 ๋ถ€๋ถ„์„ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ๋ฎ์–ด ์”Œ์–ด์„œ ๋‚˜๋จธ์ง€ 7๋ฐ”์ดํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  \x00์„ ๊ทธ ์•ž์—๋‹ค ๋ถ™์ด๋ฉด ์ง„.. 2023. 5. 1.
DreamHack - Return to Shellcode ํ’€์ด r2s.c // Name: r2s.c // Compile: gcc -o r2s r2s.c -zexecstack #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { char buf[0x50]; init(); printf("Address of the buf: %p\n", buf); printf("Distance between buf and $rbp: %ld\n", (char*)__builtin_frame_address(0) - buf); printf("[1] Leak the canary\n"); printf("Input: "); fflush(stdout); read(0, buf, 0x1.. 2023. 5. 1.
DreamHack - Quiz: x86 Assembly 1 ๋ฌธ์ œ end๋กœ ์ ํ”„ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋์„ ๋•Œ, 0x400000 ๋ถ€ํ„ฐ 0x400019๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์‘๋˜๋Š” ์•„์Šคํ‚ค ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์–ด๋А ๋ฌธ์ž์—ด์ด ๋‚˜์˜ค๋Š”๊ฐ€? [Register] rcx = 0 rdx = 0 rsi = 0x400000 ======================= [Memory] 0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10 0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d 0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c 0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00 =============.. 2023. 5. 1.
DreamHack - Return Address Overwrite rao.c // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0; } ๋ฒ„ํผ์˜ ์‚ฌ์ด์ฆˆ๋Š” 0x28(40 bytes)์ด๋ฉฐ, get_shell() ํ•จ์ˆ˜๋กœ return ํ•˜.. 2023. 4. 30.
DreamHack - basic_exploitation_000 ํ’€์ด basic_exploitation_000.c #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } int main(int argc, char *argv[]) { char buf[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf); return 0; } ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ 141 ๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ ๋ฌธ์ž์—ด์„ ์ž….. 2023. 4. 26.
DreamHack - basic_exploitation_001 ํ’€์ด checksec์œผ๋กœ ํŒŒ์ผ ๋ณดํ˜ธ ๊ธฐ๋ฒ•๋“ค ํ™•์ธ NX(No-eXecute) ๋ณดํ˜ธ ๊ธฐ๋ฒ•์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์‰˜ ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์ง€๋งŒ, Stack Canary๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์•„ Return Address Overwrite์— ์ทจ์•ฝํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. basic_exploitation_001.c ๋ถ„์„ #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } vo.. 2023. 4. 25.
DreamHack - login-1 ํ’€์ด ๊ด€๋ฆฌ์ž ๋ ˆ๋ฒจ ์œ ์ € ์•„์ด๋”” ์ฐพ๊ธฐ http://host3.dreamhack.games:20947/user/1 = MAXRESETCOUNT: ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ–ˆ์œผ๋ฉด ์ด๋Ÿฐ ์ทจ์•ฝ์ ์€ ์—†์—ˆ์„ ๊ฒƒ. ์„œ๋ฒ„ ์—๋Ÿฌ 500์„ ์ด์šฉ ์‹ ๊ทœ ๊ณ„์ •์„ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด resetCount ์˜์—ญ์—๋Š” NULL์ด ์ƒ๊ธฐ๊ฒŒ ๋˜๋ฉด์„œ ์•„๋ž˜์˜ resetCount = resetCount + 1 ๊ตฌ๋ฌธ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ฒฐ๊ตญ ๋ฆฌ์…‹ ์นด์šดํŠธ๋Š” ์ฆ๊ฐ€ ๋ชปํ•œ ์ฑ„ ์„œ๋ฒ„ ์ธก ์—๋Ÿฌ(500)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. updateSQL = "UPDATE user set resetCount = resetCount+1 where idx = ?" cur.execute(updateSQL, (str(user['idx']))) msg = f"Wrong BackupCode ! Left Count : .. 2023. 3. 27.
DreamHack - node-serialize (nodejs ์ง๋ ฌํ™” ์ทจ์•ฝ์ ) ํ’€์ด node-serialize ์ทจ์•ฝ์  ์˜ˆ์‹œ var serialize = require('node-serialize'); var x = { rce : function(){ require('child_process').exec('echo serialize exploited!', function(error, stdout, stderr) { console.log(stdout) }); }(), } serialize.serialize(x); var y = '{"username": "guest", "country": "Korea", "exec": "_$$ND_FUNC$$_function(){ require(\'child_process\').exec(\'echo unserialize exploited!\', functio.. 2023. 3. 27.
TryHackMe - Simple CTF (2) Writeup 6๋ฒˆ ์งˆ๋ฌธ. ํš๋“ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋กœ ์–ด๋””์—์„œ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋‚˜์š”?ํš๋“ํ•œ ๊ณ„์ •์œผ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค ์–ด๋””์— ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•˜๋ƒ๋Š” ์งˆ๋ฌธ ๊ฐ™์•˜๋‹ค. ์šฐ์„  ์•Œ๊ณ  ์žˆ๋Š” ๊ณ„์ •์€ mitch:secret์ด์—ˆ์œผ๋ฉฐ ์›น ์„œ๋ฒ„์˜ SSH์—๋„ ๋กœ๊ทธ์ธ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด ๋ณธ๋‹ค.  nmap์œผ๋กœ ์›น ์„œ๋ฒ„์˜ ssh ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ฐพ์•„์ค€๋‹ค. (result: 2222/tcp) ssh ๋กœ๊ทธ์ธ ๋‹จ๊ณ„์—์„œ ์›น ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž์ธ mitch ๊ณ„์ •์„ ๋˜‘๊ฐ™์ด ์ž…๋ ฅํ•˜๋‹ˆ ๋กœ๊ทธ์ธ์ด ์„ฑ๊ณตํ–ˆ๋‹ค.   6๋ฒˆ ์ •๋‹ต์€ "ssh"  7๋ฒˆ ์งˆ๋ฌธ. ์‚ฌ์šฉ์ž์˜ ํ”Œ๋ž˜๊ทธ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฐพ๋Š” ๊ฑด ๊ฐ„๋‹จํ•˜๋‹ค.์‰˜์— ๋“ค์–ด๊ฐ€์ž๋งˆ์ž ls๋ฅผ ์น˜๋ฉด user.txt๋ž€ ํŒŒ์ผ์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ ๊ทธ ๋‚ด์šฉ๋ฌผ์ด ๋ฐ”๋กœ ํ”Œ๋ž˜๊ทธ์ด๋‹ค.  7๋ฒˆ ์ •๋‹ต์€ "G00d j0b, keep up!"  8๋ฒˆ ์งˆ๋ฌธ. ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋‚˜์š”?.. 2023. 3. 18.
FTZ - level 9 hint ๋‹ค์Œ์€ /usr/bin/bof์˜ ์†Œ์Šค์ด๋‹ค. #include #include #include main(){ char buf2[10]; char buf[10]; printf("It can be overflow : "); fgets(buf,40,stdin); if ( strncmp(buf2, "go", 2) == 0 ) { printf("Good Skill!\n"); setreuid( 3010, 3010 ); system("/bin/bash"); } } ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ level10์˜ ๊ถŒํ•œ์„ ์–ป์–ด๋ผ. ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ๊ด€ํ•œ ๋ฌธ์ œ์ด๋‹ค. fgets ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ตœ๋Œ€ 40๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ์žˆ๋‹ค. ๋ฌธ์ œ๋Š” buf2์™€ buf ๋ณ€์ˆ˜์˜ ์‚ฌ์ด์ฆˆ๋Š” 10 ๋ฐ–์— ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํผ๊ฐ€ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ.. 2023. 3. 15.
FTZ - level 8 with ChatGPT ์˜ค๋žœ๋งŒ์— FTZ๋ฅผ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ตœ๊ทผ์— ChatGPT์— ์žฌ๋ฏธ๊ฐ€ ๋“ค๋ ค์„œ ๋‚ด๊ฐ€ ๋งŽ์ด ๋ฌด์ง€ํ•œ ์‹œ์Šคํ…œ ํ•ดํ‚น์— ๊ด€๋ จํ•œ ์งˆ๋ฌธ๋“ค์„ ํ•˜๋ฉด ์ฑ—๋ด‡ ์ธ๊ณต์ง€๋Šฅ์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋‹ต๋ณ€์„ ํ•ด์คฌ๋Š”๋ฐ ๊ทธ ๊ณผ์ •์— ์‹œ์Šคํ…œ ํ•ดํ‚น์— ํฅ๋ฏธ๊ฐ€ ๋‹ฌ์•„์˜ฌ๋ผ ๋‹ค์‹œ ์ด์–ด์„œ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ•œ ๊ฒƒ์ด๋‹ค. ์•„๋ฌดํŠผ level8์— ๋กœ๊ทธ์ธํ•˜์—ฌ ํžŒํŠธ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ level9์˜ shadow ํŒŒ์ผ์ด ์–ด๋”˜๊ฐ€์— ์ˆจ๊ฒจ์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ ์‚ฌ์ด์ฆˆ๋Š” 2700์ด๋ž€ ๋‚ด์šฉ์ด๋‹ค. shadow ํŒŒ์ผ์ด๋ž€? shadow ํŒŒ์ผ์€ ์‚ฌ์šฉ์ž ๊ณ„์ •์˜ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”์ธ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™”ํ•œ ์ƒํƒœ๋กœ ์ €์žฅ์ด ๋˜๋Š” ์•„์ฃผ ์ค‘์š”ํžˆ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค. /etc/shadow ํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฃจํŠธ ๊ถŒํ•œ๋งŒ ์—ด๋žŒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ผ๋ฐ˜ ์œ ์ €๋Š” ์—ด์–ด๋ณผ ์ˆ˜ ์—†๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•  ๋•Œ๋Š” ์‰๋„์šฐ ํŒŒ์ผ์„ .. 2023. 3. 15.
728x90