728x90
반응형
1. intro
2. code 및 분석
2.1. code
char __fastcall sub_7FF7D69F2C40(__int64 a1, int a2)
{
int v2; // ebx
int v3; // edx
int v4; // edx
int v5; // edx
int v6; // edx
int v7; // edx
int v8; // edx
int v9; // edx
int v10; // edx
int v11; // edx
int v12; // edx
int v13; // edx
int v14; // edx
int v15; // edx
int v16; // edx
int v17; // edx
int v18; // edx
int v19; // edx
int v20; // edx
int v21; // edx
int v22; // edx
int v23; // edx
int v24; // edx
int v25; // edx
int v26; // edx
__int64 v27; // rbx
__int64 v28; // r8
__int64 v29; // r8
__int64 v30; // rdx
__int64 v31; // r8
__int64 v32; // rdx
__int64 v33; // r8
__int64 v34; // rdx
__int64 v35; // r8
__int64 v36; // rdx
__int64 v37; // r8
__int64 v38; // rdx
__int64 v39; // r8
__int64 v40; // rdx
__int64 v41; // r8
__int64 v42; // r8
__int64 v43; // rdx
__int64 v44; // r8
__int64 v45; // r8
__int64 v46; // rdx
__int64 v47; // r8
v2 = qword_7FF7D69F7880;
sub_7FF7D69F2B80(qword_7FF7D69F7880, a2, 30, 470, 80, -16777216);
sub_7FF7D69F2B80(v2, v3, 35, 470, 75, -16777216);
sub_7FF7D69F2B80(v2, v4, 40, 470, 70, -16777216);
sub_7FF7D69F2B80(v2, v5, 45, 470, 65, -16777216);
sub_7FF7D69F2B80(v2, v6, 50, 470, 60, -16777216);
sub_7FF7D69F2B80(v2, v7, 55, 470, 55, -16777216);
sub_7FF7D69F2B80(v2, v8, 60, 470, 50, -16777216);
sub_7FF7D69F2B80(v2, v9, 65, 470, 45, -16777216);
sub_7FF7D69F2B80(v2, v10, 70, 470, 40, -16777216);
sub_7FF7D69F2B80(v2, v11, 75, 470, 75, -16777216);
sub_7FF7D69F2B80(v2, v12, 80, 400, 60, -16777216);
sub_7FF7D69F2B80(v2, v13, 30, 470, 90, -16777216);
sub_7FF7D69F2B80(v2, v14, 35, 470, 30, -16777216);
sub_7FF7D69F2B80(v2, v15, 40, 470, 35, -16777216);
sub_7FF7D69F2B80(v2, v16, 45, 470, 50, -16777216);
sub_7FF7D69F2B80(v2, v17, 50, 470, 40, -16777216);
sub_7FF7D69F2B80(v2, v18, 55, 400, 90, -16777216);
sub_7FF7D69F2B80(v2, v19, 60, 470, 60, -16777216);
sub_7FF7D69F2B80(v2, v20, 65, 470, 30, -16777216);
sub_7FF7D69F2B80(v2, v21, 70, 470, 80, -16777216);
sub_7FF7D69F2B80(v2, v22, 75, 470, 70, -16777216);
sub_7FF7D69F2B80(v2, v23, 80, 470, 60, -16777216);
sub_7FF7D69F2B80(v2, v24, 80, 470, 80, -16777216);
sub_7FF7D69F2B80(v2, v25, 80, 470, 70, -16777216);
sub_7FF7D69F2B80(v2, v26, 90, 470, 90, -16777216);
v27 = qword_7FF7D69F7880;
sub_7FF7D69F17A0(qword_7FF7D69F7880, 40i64, v28, 4278190080i64);
sub_7FF7D69F1C80(v27, 80i64, v29, 4278190080i64);
sub_7FF7D69F2640(v27, v30, v31, 4278190080i64);
sub_7FF7D69F20F0(v27, v32, v33, 4278190080i64);
sub_7FF7D69F2390(v27, v34, v35, 4278190080i64);
sub_7FF7D69F1240(v27, v36, v37, 4278190080i64);
sub_7FF7D69F1F20(v27, v38, v39, 4278190080i64);
sub_7FF7D69F1560(v27, v40, v41, 4278190080i64);
sub_7FF7D69F1C80(v27, 360i64, v42, 4278190080i64);
sub_7FF7D69F19D0(v27, v43, v44, 4278190080i64);
sub_7FF7D69F17A0(v27, 440i64, v45, 4278190080i64);
sub_7FF7D69F2870(v27, v46, v47, 4278190080i64);
return 0;
}
2.2. 분석
어쨌든 중요한 함수는 위의 부분이다.
프로그램이 실행되면 플래그를 그리는 위치를 덮어서 안보이게 한 다음,
sub_7FF7D69F17A0 함수부터 플래그를 그려주기 때문에 읽을 수 없다.
그러므로 sub_7FF7D69F2B80 함수가 아무 작동도 하지 않게 바꿔버리면 플래그가 튀어나올 것이다.
강의에 나와있는 것과 같이 프로그램 실행 및 해당 함수의 시작 지점을 ret으로 바꿔버리면 된다.
3. exploit
와....
그리도 ida에서 실행해보려고 애썼는데 안되던게 갑자기 된다능...?!
난 뭐한거지...
728x90
반응형
'Wargame > Dreamhack' 카테고리의 다른 글
rev-basic-2 (0) | 2023.01.19 |
---|---|
rev-basic-3 (0) | 2023.01.19 |
Holymoly (0) | 2023.01.12 |
rev-basic-0 (0) | 2023.01.06 |
rev-basic-1 (0) | 2023.01.06 |