Hacking/Root Me

    ELF x86 - Ptrace

    안티 디버깅 기법이 적용된것 같다. 그냥 EIP를 옮겨서 if문을 우회할수 있을 것 같다. 이 분기에서 그냥 EIP를 0x08048436로 옮겨주면 우회가 된다. 내 입력값을 dl에 한바이트, 여기서 +4만큼 한 문자열에서 한바이트를 비교한다. 그러니까 내가 asdf를 넣으면 a와 e를 비교하는 것이다. 키의 첫글자는 e인것을 알 수 있다. 틀렸기때문에 분기가 갈리지만 그냥 EIP를 바꿔서 아래 분기로 가본다. 비슷한 로직이다. 내 입력값 두번째 인덱스와 ksuiealohgy+5한 인덱스와 비교한다. 키의 두번째 글자는 a이다. ksuiealohgy에다가 inc연산을 하는데 이는 +1을 해주는 연산이다. 그러므로 세번째 글자는 s이다. 여기는 0x0a를 더하는데 디버깅해서 값을 보면 al이 'y'인 것을..

    PYC - ByteCode

    pyc파일을 리버싱 하는 문제인데 pyc는 uncompyle6를 이용해 .py파일로 복구할 수 있다. pip install uncompyle6후에 uncompyle6 [pyc 파일]로 py파일을 디컴파일 할 수 있다. 처음에는 역연산 하려다가 그냥 브포 돌리는게 머리 덜아프고 빠를것 같아서 브포 돌렸다. 근데 일어난지 얼마 안되서 그런지 아니면 수업시간에 해서 그런지 이거 브포짜는데만 거의 1시간쯤 걸린것 같다. 심지어 코드도 더럽다ㅎ; l = [i for i in range(5,20)] sl = 'w, you love dec' print(l) print(sl) cmpl = [57, 73, 79, 16, 18, 26, 74, 50, 13, 38, 13, 79, 86, 86, 87] flag = '' fo..

    PE DotNet - Basic Anti-Debug

    .NET 안티디버깅 문제였는데 나는 언인텐으로 연산으로 풀었다. dnspy로 까보며면 이렇게 나오는데 Form1_Load에서 안티 디버깅을 하는것 같았다. 그래도 일단 디버깅 해보니까 bytes랑 key값은 영향을 안받는것 같아서 그냥 연산으로 flag를 뽑았다. l = '''0x07 0x6F 0x66 0x54 0x12 0x7B 0x70 0x37 0x6D 0x44 0x06 0x00 0x1E 0x1D 0x06 0x2B 0x0D 0x72 0x5F 0x58 0x38 0x21 0x5F 0x50 0x38''' l = l.split() print(l) key = 'I_Gu3$$_Y0u_Ju5t_Fl4gg3d_!!!' flag = '' for i in range(25): flag+=chr(eval(l[i]) ^ or..

    ELF ARM - Basic Crackme

    ARM분석은 처음해봤는데 베이직이라 그런지 86, x64랑 딱히 다른건 없었다. 그냥 바이너리를 실행시키는데 환경설정이 조금 필요한 정도? 그냥 IDA로 까본다. 메인 로직인것 같다. s가 인풋인것 같고 v5가 0이 되는 값을 찾으면 되는것 같다. 위의 if ( status != 6 )에서 len이 6이 아니면 종료되므로 s[6]은 0이다. s[3]^0x72가 0이 되려면 자기 자신과 0x72랑 xor 해야하므로 s[3]은 0x72가 되어야 한다. 이제 s[3] = 0x72인걸로 퍼즐을 맞추면 된다. if ( s[3] + 1 != *s )이므로 s[0] = 0x73 if ( *s != s[5] ) 이므로 s[5] = 0x73 if ( s[2] + 4 != s[5] ) 이므로 s[2] = 0x6f if (..

    REV(Cracking) - ELF x86 - 0 protection, ELF x86 - Basic, PE DotNet - 0 protection, ELF x86 - Fake Instructions

    오늘부터 쉬운문제라도 3일에 한문제씩은 풀고 Write up을 블로그에 작성해보려고 한다. 물론 언제는 빼먹을수도 있다. Reversing.kr문제들은 너무 매워서 일단 Root-me문제들로 해보려고 한다. 근데 Root-me도 몇문제 풀어보니까 쉬운것 같지는 않다,, ELF x86 - 0 protection 걍 IDA로 까면 보인다. FLAG = 123456789 ELF x86 - Basic 이것도 걍 IDA로 까면 보인다. FLAG = 987654321 PE DotNet - 0 protection 이름부터 DotNet인데 dnspy로 까봤다. 패스워드가 틀리면 이런걸 띄우는데 그냥 이 문자열 검색해서 조건문을 보면 flag가 있다. FLAG = DotNetOP ELF x86 - Fake Instruc..

    Web - Server Side(HTML, Open redirect~Install files, File upload - Double extensions~HTTP - Cookies, File upload - Null byte,SQL injection - Authentication )

    HTML f12를 눌러 관리자도구를 키면 바로 flag가 보인다. 저걸 password에 박는게 아니라 그냥 flag에 인증해야된다. Open redirect 페이스북으로 리다이렉트 해주는데 다른곳으로 바꿔본다. 저 h파라미터 안에 들어가는게 hash값인거같은데 문자열이 32개인걸 보니 md5인것 같다. url에 맞는 md5해쉬값을 넣으면 풀린다 User-agent admin 브라우저를 사용하란다. 프록시 툴로 user-agent를 admin으로 바꾸면 풀린다 Weak password 걍 admin/admin 하니까 풀렸다. PHP - Command injection 드림핵에서 비슷한 문제를 본적이 있다. 이름부터 커맨드 인젝션이기 때문에 ip주소 다음에 ls를 쳐봤다. cat index.php를 하면 ..