Новости информационной безопасности

Quals: Saudi and Oman National Cyber Security CTF 2019. WriteUp

Пропускаем файл через Detect It Easy:

mvd7dwoahf4ld1cfvstovigne7g.png

Открываем DNSpy x86

Файл действительно очень небольшой и состоит из одного пользовательского события — Button_Click:

string value = new string(new char[]
			{
				this.Letters[5],
				this.Letters[14],
				this.Letters[13],
				this.Letters[25],
				this.Letters[24]
			});
			if (this.TextBox1.Text.Equals(value))
			{
				MessageBox.Show(new string(new char[]
				{
					this.Letters[5],
					this.Letters[11],
					this.Letters[0],
					this.Letters[6],
					this.Letters[26],
					this.Letters[8],
					this.Letters[28],
					this.Letters[11],
					this.Letters[14],
					this.Letters[21],
					this.Letters[4],
					this.Letters[28],
					this.Letters[5],
					this.Letters[14],
					this.Letters[13],
					this.Letters[25],
					this.Letters[24],
					this.Letters[27]
				}));
			}

Также в текущем классе объявлена строка:
public char[] Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ{}_".ToCharArray();

Есть два варианта решения — в статике и динамике. Сперва решим статическим методом:
# text - текст метода
>>> for i in range(len(letters)):
	text = text.replace(f"this.Letters[{i}]", letters[i])
>>> print(text)
string value = new string(new char[]
			{
				F,
				O,
				N,
				Z,
				Y
			});
			if (this.TextBox1.Text.Equals(value))
			{
				MessageBox.Show(new string(new char[]
				{
					F,
					L,
					A,
					G,
					{,
					I,
					_,
					L,
					O,
					V,
					E,
					_,
					F,
					O,
					N,
					Z,
					Y,
					}
				}));
			}

Когда мы убедимся, что программа не несет вред, можно отладить ее в динамике. Ставим бряку (точку останова, breakpoint) на начало метода, смотрим в локальных переменных, добываем переменную value, после чего нам выведется сообщение с флагом.

Флаг: FLAG{I_LOVE_FONZY}

Дата: 2019-02-11 09:50:02

Источник: https://habr.com/ru/post/439590/