풀이
Run Disk.img at Virtual Machines
Disk.img is Floppy Disk
- thx to KSHMK
Flag is consist of 23 chars.
Disk.img는 DOS/MBR boot sector이다.
qemu-system-i386 -fda Disk.img -s -S로 부팅 되기전, stop을 걸고 gdb 원격 디버깅을 할 수 있다.
2일차.. 아직도 뭐가 flag인지 못찾았다.
0x7c00, 0x10200에 bp를 걸고 삽질을 하고 있지만, 이상한 텍스트는 발견되지 않았다.
혹시, 내가 입력한 값과 뭐를 비교하는건가?

n일차: 혹시, 내가 입력한 값과 뭐를 비교하는건가? 라고 생각한게 맞았다.
bp를 적당한 곳에 걸고, 입력 값에 대한 연산을 수행하는 로직을 발견했다.

이 로직을 이해하면 이 문제는 끝이다.
의외로 로직을 발견하고 문제를 해결하는 시간은 오래 걸리지 않았다.
처음부터 문제가 어렵다고 생각한게 문제였다.
#include <stdio.h>
int main() {
	int key[30] = { 0x12,0xd6,0x93,0xe3,0xf4,0xdd,0x86,0x33,0x60,0x56,0x25,0xda,0x9b,0x9f,0x9e,0xc9,0x9f,0xf0,0x4c,0xaF,0xc6,0xf5,0x49,0x00 };
	char ans[30] = { 0, };
	int temp;
	int t_temp;
	int c_temp;
	for (int i = 0x20; i <= 0x7e; i++) {
		temp = i << 3;
		t_temp = temp;
		temp = temp >> 8;
		c_temp = temp | t_temp;
		c_temp = c_temp & 0xff;
		ans[0] = i;
		for (int q = 0; q <= 22; q++) {
			c_temp = key[q] ^ c_temp;
			ans[q + 1] = c_temp;
			c_temp = c_temp ^ (q + 1);
			temp = c_temp << 3;
			t_temp = temp;
			temp = temp >> 8;
			c_temp = temp | t_temp;
			c_temp = c_temp & 0xff;
			printf("%s\n", ans);
		}
	}
}
'Wargame > wargame.kr' 카테고리의 다른 글
| [Wargame.kr] 현재 상황 (0) | 2020.08.06 | 
|---|---|
| [Wargame.kr] baskin game 풀이 (697p) (0) | 2020.08.05 | 
| [Wargame.kr] plz variable 풀이 (644p) (0) | 2020.08.05 | 
| [Wargame.kr] adm1nkyj 풀이 (479p) (0) | 2020.08.03 | 
| [Wargame.kr] pw_crack 풀이 (514p) (0) | 2020.08.03 |