전체 글

전체 글

    codegate2022 예선 후기

    보호되어 있는 글입니다.

    2022 Hayyim CTF 후기

    보호되어 있는 글입니다.

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