๐Ÿ“šSTUDY/๐ŸŽ‡๋‹คํ• (dafit.me)

[DF913] 02. ๋ช…๋ น ์ธ์ž๋กœ ์ˆซ์ž์˜ ์ดํ•ฉ ๊ตฌํ•˜๊ธฐ

ํ•ด๋Š”์„  2020. 2. 10. 20:55

02. ๋ช…๋ น ์ธ์ž๋กœ ์ˆซ์ž์˜ ์ดํ•ฉ ๊ตฌํ•˜๊ธฐ

http://www.dafit.me/question/?q=YToxOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjt9&bmode=view&idx=2968780&t=board

 

[DF913] ํŒŒ์ด์ฌ ๊ธฐ์ดˆ ํ›ˆ๋ จ 10์ œ : ๋‹คํ•, ๋ฐ์ดํ„ฐ์‚ฌ์ด์–ธ์Šค ์—ฐ์Šต๋ฌธ์ œ

๐Ÿ”ฅ ๋ฌธ์ œ ์„ค๋ช…ํŒŒ์ด์ฌ์˜ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์„ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์—ฐ์Šต๋ฌธ์ œ 10์ œ์ž…๋‹ˆ๋‹ค. (ver.3.6.) ๐Ÿ”ฅ ์ถ”์ฒœ ๋Œ€์ƒ ๋ฐ ํ•™์Šต ๋ชฉํ‘œํŒŒ์ด์ฌ ๊ณต๋ถ€๋ฅผ ์ตœ๊ทผ์— ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋งˆ์นœ ์ž.→ ์ด ๋‚œ์ด๋„ ์ˆ˜์ค€์„ ํ•ด๊ฒฐํ•ด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.("๋‚ด๊ฐ€ ์ตœ๊ทผ์— ํŒŒ์ด์ฌ์„ ๊ณต๋ถ€ํ–ˆ๋Š”๋ฐ, ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?")ํŒŒ์ด์ฌ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์„ ๋‹ค์‹œ ์—ฐ์Šต ๋ฐ ๋ณต์Šตํ•ด์•ผํ•  ํ•„์š”์„ฑ์„ ๋А๋ผ๋Š” ์ž.→ ํŒŒ์ด์ฌ์˜ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ์„ ํ›ˆ๋ จํ•จ์œผ๋กœ์จ, ์ˆ™๋ จ๋„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ”ฅ ๋‚œ์ด๋„โ˜…

www.dafit.me

 

์ฒ˜์Œ์— ๋ณด๊ณ  add_all ํ•จ์ˆ˜๋Š” ๋งŒ๋“ค๊ธฐ ์‰ฝ๋„ค...๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๊ฐ€ (๋‹จ, ~~)์„ ๋ณด๊ณ  ์‚ด์ง ๋‹นํ™ฉํ–ˆ๋˜ ๋ฌธ์ œ๋‹ค. 

๋™์•„๋ฆฌ์—์„œ ์‹œ์Šคํ…œํ•ดํ‚น ์Šคํ„ฐ๋””๋ฅผ ๋“ค์„ ๋•Œ exploit์„ ๋ฐฐ์šฐ๋ฉด์„œ gdb์—์„œ python ์‹คํ–‰ํ•˜๋Š” ๋ฒ•์„ ๊ฐ™์ด ๋ฐฐ์›Œ์„œ ๊ทธ๋‚˜๋งˆ ๊ธˆ๋ฐฉ 

'add_all.py โ€’c 1 2 3'์ด๋Ÿฐ ์‹คํ–‰ ๋ฐฉ์‹์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ž˜์„œ ๋Œ€์ถฉ ๊ณต๋ถ€ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฑด๊ฐ€...

 

(1)

์ด ๋ถ€๋ถ„์€ ์ €๋ฒˆ ํ•™๊ธฐ ๋•Œ ๋“ค์—ˆ๋˜ ๋‚ด์šฉ์ด ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ๋‹ค. *args์™€ **kwargs์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ด์—ˆ๋Š”๋ฐ ๋ฐฐ์šธ ๋• ์ดํ•ดํ•˜๋А๋ผ ๊ณ ์ƒํ–ˆ์ง€๋งŒ ๋ฐฐ์šฐ๊ณ  ๋‚˜๋‹ˆ ์“ธ๋ชจ๊ฐ€ ๋งŽ๋‹ค.

 

์•„๋ž˜ ๋ธ”๋กœ๊ทธ๊ฐ€ ๋‚ด์šฉ์„ ์ž˜ ์ •๋ฆฌํ•œ ๊ฒƒ ๊ฐ™์•„ ์ฒจ๋ถ€ํ•œ๋‹ค.

https://brunch.co.kr/@princox/180

 

[๋‚˜๋ฆ„ ์ค‘๊ธ‰ ํŒŒ์ด์ฌ1] *args์™€ **kwargs

ํ•ญ์ƒ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค์‹œ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž | ์ด ๊ธ€์€ ํŒŒ์ด์ฌ์˜ ๋ฌธ๋ฒ•์„ ๋ชจ๋ฅด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. python์˜ ํ•จ์ˆ˜ ์ž‘์„ฑ ์š”๋ น, ์ธ์ž(argument)์™€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ดํ•ดํ•œ๋‹ค๋ฉด ๋„์›€์ด ๋˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ ์ด๊ฒƒ์€ ํฌ์ธํ„ฐ์ธ๊ฐ€?! C์–ธ์–ด๋ฅผ ๋ฐฐ์šธ ๋•Œ ๊ฐ€์žฅ ํž˜๋“  ๊ทธ๊ฒƒ! ๋ฐ”๋กœ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค! ๊ทผ๋ฐ.. ์‚ฌ์ž๋ฅผ ํ”ผํ–ˆ๋”๋‹ˆ ํ˜ธ๋ž‘์ด๋ฅผ ๋งŒ๋‚ฌ๋‹ค๊ณ  ใ… ใ…  ํŒŒ์ด์ฌ์„ ๋ฐฐ์šฐ๋ ค๋Š”๋ฐ ๋ณ„ ํ‘œ์‹œ(asteri

brunch.co.kr

๊ทธ๋ž˜์„œ ๋‚ด ํ’€์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

def add_all(*arg):
    sum = 0
    for i in arg:
        sum += i
    return sum

๋ช‡ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›์„์ง€ ๋ถˆํ™•์‹คํ•˜๋‹ˆ *์„ ๋ถ™์—ฌ์„œ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์ธ์ž๋“ค์„ ํŠœํ”Œ ํ˜•ํƒœ๋กœ arg์— ์ €์žฅํ•œ๋‹ค.

ํŒŒ์ด์ฌ์˜ ํŽธํ•œ ๋ฐ˜๋ณต๋ฌธ! for in์„ ์ด์šฉํ•ด์„œ arg์˜ ๋ชจ๋“  ์ธ์ž๋“ค์„ ๋”ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํ„ดํ•œ๋‹ค. ๋!

add_all(1, 2, 3)
6
add_all(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
55

์ž˜ ์ž‘๋™ํ•œ๋‹ค.

 

(2)

๋ฌธ์ œ์˜ Cmdํ™˜๊ฒฝ!

์‹œ์Šคํ…œ ํ•ดํ‚น์—์„œ ๊ณต๋ถ€ํ•  ๋•Œ๋Š” c๋กœ ์“ฐ์ธ exeํŒŒ์ผ์„ python์œผ๋กœ ์ž…๋ ฅ์„ ์คฌ๋˜ ๊ฑฐ๋ผ pythonํŒŒ์ผ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋ช…๋ น ์ธ์ž๊ฐ€ ์ „๋‹ฌ๋˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์—ด์‹ฌํžˆ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋‹ค.

 

์•„๋ž˜ ๋ธ”๋กœ๊ทธ์—์„œ ๋„์›€์„ ๋ฐ›์•˜๋‹ค.

https://brownbears.tistory.com/202

 

[Python] ์ปค๋งจ๋“œ๋ผ์ธ ์ธ์ž๊ฐ’ (์Šคํฌ๋ฆฝํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ) ๊ตฌํ•˜๊ธฐ

ํŒŒ์ด์ฌ์„ ์‹คํ–‰ํ•  ๋•Œ ์ปค๋งจ๋“œ๋ผ์ธ์— ์ธ์ž๊ฐ’์„ ์ฃผ๊ณ  ์ด๋ฅผ ์ฝ”๋“œ์ƒ์—์„œ ๋ฐ›๊ณ ์‹ถ์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. # ํŒŒ์ด์ฌ ์‹คํ–‰ ๋ช…๋ น์–ด $ python3 test.py --settings=settings.local # ์ฝ”๋“œ๋ถ€๋ถ„ import sys for i in rang..

brownbears.tistory.com

import sys
for i in range(1, len(sys.argv)):
	print(sys.argv[i])

system๋ชจ๋“ˆ์„ ์ด์šฉํ•ด์„œ ๋ฐ›์€ ์ž…๋ ฅ๋“ค์„ ํ•˜๋‚˜์”ฉ ๋‹ค ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ตฌ๋ฌธ์ธ๋ฐ ์—ฌ๊ธฐ์„œ ํฌ์ธํŠธ๋Š” ๋ฒ”์œ„๊ฐ€ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฑฐ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ,

 

python ํŒŒ์ผ ์ด๋ฆ„. py ~~ ๋ช…๋ น ์ธ์ž

 

๋ฅผ cmd ์ฐฝ์— ์ž…๋ ฅํ•ด์„œ ์‹คํ–‰ํ•˜๋Š”๋ฐ ์ €๊ธฐ ์ € 'ํŒŒ์ผ ์ด๋ฆ„. py'๋ถ€ํ„ฐ ํŠœํ”Œ์— ์ €์žฅ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, 0๋ฒˆ์งธ ๋ถ€๋ถ„์— ํŒŒ์ผ ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€ ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ ๊ผญ ์ œ์™ธ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

import sys
sum=0
for i, j in enumerate(sys.argv):
    if(i!=0 and i!=1):   #add_all.py โ€’c ์„ ์ œ์™ธํ•ด ์ฃผ๋Š” ๊ตฌ๋ฌธ
        sum+=int(j)
print(sum)

๋‚˜๋Š” enumerate๋ฅผ ์ด์šฉํ•ด์„œ ํŠœํ”Œ์— ๋ฒˆํ˜ธ๋ฅผ ์ƒˆ๊ฒจ์ค˜์„œ ๋ฒˆํ˜ธ๊ฐ€ 0๊ณผ 1์ผ ๋• ๋”ํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ€๋„๋ก ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์ง€๊ธˆ ์ƒ๊ฐํ•ด ๋ณด๋‹ˆ๊นŒ range(2, sys.argv)๋กœ ํ–ˆ์–ด๋„ ๊ดœ์ฐฎ์•˜์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

์—ฌ๊ธฐ์„œ ์‹œ์ž‘ ๋ถ€๋ถ„์ด 2์ธ ์ด์œ ๋Š” ์šฐ๋ฆฌ์˜ ์ž…๋ ฅ์€ python add_all.py -c 1 2 3 ์ด์—ฌ์„œ add_all.py์™€ -c ๋‘ ๊ฐœ๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

cmd ํ™˜๊ฒฝ์—์„œ๋„ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.