리버싱 2차시

이동규·2026년 5월 31일

Layer7과제

목록 보기
8/22

문제들의 공통점

풀이할 문제들의 공통점들이다

step 1

어셈블리를 c로 디컴파일한다
출력과 입력, 임력을 검증하는 함수들이 나온다


step 2

검증하는 함수를 알려준다


step 3

검증하는 함수에 사용되는 배열을 알려준다


step 4

검증하는 것을 성공시키면 correct가 출력되고 그 값을 플래그 형식에 맞춰서 제출하면 정답이 나온다

rev-basic-1

함수를 보니 친절히 하나하나 나와있다

rev-basic-2


배열을 보러 들어가보니 친절히 플래그가 나와 있었다

rev-basic-5

a1[i+1] + a1[i] != byte[i]

a1[i] != byte - a1[i+1]

a1[i+1] + a1[i] = byte[i]

byte[0] = a1[0] + a1[1]

byte[1] = a1[1] + a1[2]

byte[2] = a1[2] + a1[3]

byte[0] - byte[1] = a1[0] - a1[2]
byte[1] - byte[2] = a1[1] - a1[3]
byte[2] - 

결론: 이렇게 하면 답이없다

추리를 진행하자
byte[23] = 0
a1[23] +a1[24] = 0
a1[22] + a1[23] = 76
a1[23]=0
a1[24]=0
a1[22] = 76
#include <stdio.h>

unsigned char byte[] =
{
  0xAD, 0xD8, 0xCB, 0xCB, 0x9D, 0x97, 0xCB, 0xC4, 0x92, 0xA1, 
  0xD2, 0xD7, 0xD2, 0xD6, 0xA8, 0xA5, 0xDC, 0xC7, 0xAD, 0xA3, 
  0xA1, 0x98, 0x4C, 0x00
};

int main(){
    int a=76;
    int a1[24]={};
    for(int i=21;i>=0;i--){
        a1[i+1] = byte[i]- a;
        a = byte[i]-a;
    }
    *(a1[24]) = a1[23];
    for(int i=0;i<24;i++){
        printf("%c",(char)a1[i]);
    }
    return 0;
}

이러면 L이 하나 출력되지 않는 현상이 일어나지만 그래도 플래그를 구할 수 있다

rev-basic-8

(unsigned __int8)(-5 * *(_BYTE *)(a1 + i)) != byte_140003000[i]

-5*a1[i] = byte[i]

unsigned char ida_chars[] =
{
  0xAC, 0xF3, 0x0C, 0x25, 0xA3, 0x10, 0xB7, 0x25, 0x16, 0xC6, 
  0xB7, 0xBC, 0x07, 0x25, 0x02, 0xD5, 0xC6, 0x11, 0x07, 0xC5, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00
};

8비트만 남아서 -5를 곱하면 8비트 부분만 남고 그 외의 것들은 다 날아간다
하나하나 아스키코드만 생각하고 무차별 대입 해준다면?
플래그를 구할 수 있었다

#include <stdbool.h>
#include <stdio.h>

char byte[] = {
  0xac, 0xf3, 0x0c, 0x25, 0xa3, 0x10, 0xb7, 0x25,
  0x16, 0xc6, 0xb7, 0xbc, 0x07, 0x25, 0x02, 0xd5,
  0xc6, 0x11, 0x07, 0xc5, 0x00,
};

int main() {
  char input[21] = {};
  for (int i = 0; i < 21; ++i) {
    for (int j = 0; j < 127; ++j) {
      if ((char)(j * -5) == byte[i]) {
        input[i] = j;
        printf("%s\n", input);
        break;
      }
    }
  }
}


선택과제 수정해서 제출하겠습니다

0개의 댓글