전체 글

전체 글

    2022 목?표

    보호되어 있는 글입니다.

    IDA python

    보호되어 있는 글입니다.

    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..

    YISF 본선 후기 겸 Write up

    어제 YISF가 끝났는데 나는 2문제를 풀면서 10위에 머물렀다. 그래도 한문제도 못풀줄 알았는데 리버싱과 웹에서 한문제씩이 엄청 쉽게 나오면서 몇문제는 풀수 있었다. 대회가 10시 시작인데 9시까지 순천향대학교로 가야되서 5시 50분에 나와서 7시 12분 KTX를 타고 갔다. 패턴이 꼬여서 2시에 일어나는 바람에 대회 12시부터 꾸벅꾸벅 졸았던것 같다;; ELF와 웹 php문제를 풀었는데 리버싱의 Path문제를 거의 6시간 잡고 있었다. 힌트에 어그로가 너무 끌리는 바람에 시간을 너무 썼던것 같다. Path문제도 대회가 끝나고 풀긴 했다. 대충쓰는 Write up ELF 일단 이문제는 퍼블 따고싶어서 야매로 정연산을 짜지도 않고 pwntools로 바이너리를 가져와서 풀었다. IDA로 까보면 이게 메인 ..