Планетарная важность
В оригинале есть GIF-ка и четыре кнопки, причём три из них нормальные, а четвёртая... с очередной ручкой
Из этого мы понимаем, что 1) имеем дело с RLE; 2) Линухом
(наверное, я лучше буду по частям писать)
В оригинале есть GIF-ка и четыре кнопки, причём три из них нормальные, а четвёртая... с очередной ручкой
/execute?cmd=get-statusИз этого мы понимаем, что 1) имеем дело с RLE; 2) Линухом
(наверное, я лучше буду по частям писать)
👍2❤1
Например, мы можем ввести
/execute?cmd=ls и узнать, что в системе имеются файлы: README.md main.py requirements.txt templates👍2❤1
main.py — это фласк с обычной логикой, а в README.md записано следующее:
```
## Панель управления ### Старт приложения Для запуска приложения выполните ```bash curl http://management:5000/start/### Обновления Для получения обновлений выполните
bash curl http://management:5000/getUpdates/### Перезагрузка Для перезагрузки приложения выполните
bash curl http://management:5000/restart/
```
👍5❤1
Раз уж нам надо перезагрузить приложение, то прописываем последнюю команду в cmd (вместо пробелов можно использовать, например,
${IFS??}👍4❤1
Последний шаг: убрать всю служебную информацию через флаг
-s, перейти на ссылке и насладиться флагом)😐2❤1🤷♂1
Пиццаувеличитель
Помню, что с этим заданием было довольно немало проблем: сначала пытались поменять JS-файл внутри сайта, потом ещё что-то
В итоге коллега @electrose пришёл к смехотворно простому решению: он просто обменял беконики... на беконики!
Кончилось всё это тем, что сайт спокойно пропустил эту сделку века, увеличив беконики в N раз, а затем честно переведя их в гастрофранки и купив пиццу огроменную (и флаг тож)
UPD: мы её купили, а не сайт, заметил ошибку
Помню, что с этим заданием было довольно немало проблем: сначала пытались поменять JS-файл внутри сайта, потом ещё что-то
В итоге коллега @electrose пришёл к смехотворно простому решению: он просто обменял беконики... на беконики!
Кончилось всё это тем, что сайт спокойно пропустил эту сделку века, увеличив беконики в N раз, а затем честно переведя их в гастрофранки и купив пиццу огроменную (и флаг тож)
UPD: мы её купили, а не сайт, заметил ошибку
❤4👍2
Кефтеме
Здесь понадобится Burp и внутренний Остап Бендер:
1. Регаемся и получаем 30 тугриков авансом;
2. Берём какие-то подкрадули, чтобы они входили в текущую сумму;
3. Используем промокод;
4. В бёрпе берём запрос на кэшбэк и пересылаем его в Repeater, чтобы повторить его N-ое количество раз;
5. Получаем профит в K тугриков;
6. Повторяем вышеописанные действия, пока не надоест;
7. "Честно" покупаем все боты за 1747 тугриков;
8. ...
9. PROFIT
Здесь понадобится Burp и внутренний Остап Бендер:
1. Регаемся и получаем 30 тугриков авансом;
2. Берём какие-то подкрадули, чтобы они входили в текущую сумму;
3. Используем промокод;
4. В бёрпе берём запрос на кэшбэк и пересылаем его в Repeater, чтобы повторить его N-ое количество раз;
5. Получаем профит в K тугриков;
6. Повторяем вышеописанные действия, пока не надоест;
7. "Честно" покупаем все боты за 1747 тугриков;
8. ...
9. PROFIT
👍2❤1
Осьмак (или Меня забеала это чёртова капча)
Google Объектив на прилагавшуюся фотку немедленно отправлял в Ереван, в Rooftop Apart Hotel
Оттуда, немного поискав, находим по Яндексу 3D-копию картины
Google Объектив на прилагавшуюся фотку немедленно отправлял в Ереван, в Rooftop Apart Hotel
Оттуда, немного поискав, находим по Яндексу 3D-копию картины
Нехорошие люди находились в левом жёлтом здании по адресу Ереван, ул. Павстоса Бюзанда, д. 97/2, этаж 9
И да, я всё это время думал, что фотография была сделана из камеры самих злоумышленников, не службы охраны
Из-за этого я 100500 раз вводил улицу Арама 60 или 64 и заставил агенство Скеллиге внести меня в чёрный список :(
Вот и все задачи, которые мы успели решить, дальше мы работали над Иваном Царевичем и Сатурниконом, но не смогли :(
Так что теперь жду Ваших райтапов в ЛС: @EvgenyKurmysa
UPD: Иван Грозным, а не Царевичем =/
Так что теперь жду Ваших райтапов в ЛС: @EvgenyKurmysa
UPD: Иван Грозным, а не Царевичем =/
Forwarded from Дядя Кит
1trzy4vvAsY_20230715-081701_060m00s_0720p~INCOMPLETE96aa02c.mkv
12 MB
Миелофононаблюдение.
Идем на стрим, втыкаем пару часов в слегка меняющуюся картинку. Потом вспоминаем, что скоро спать пора и качаем с репы на гитхабе yrewind.
Видим, что где-то в 8:16 миелофон еще был на скамейке и валяем ченить вроде
Конца скачивания не дожидаемся, все равно эта тулза сохраняет в mkv и сразу же идем смотреть на капибару
Идем на стрим, втыкаем пару часов в слегка меняющуюся картинку. Потом вспоминаем, что скоро спать пора и качаем с репы на гитхабе yrewind.
Видим, что где-то в 8:16 миелофон еще был на скамейке и валяем ченить вроде
.\yrewind.exe -url=https://www.youtube.com/watch?v=1trzy4vvAsY -start=20230715:0817 -duration=60Конца скачивания не дожидаемся, все равно эта тулза сохраняет в mkv и сразу же идем смотреть на капибару
👍5
Гнвоерк
Здесь всё относительно просто: надо много терпения, чтобы взять 10 итераций вордла... ну или же воспользоваться тулзой от @dsalakhov:
Здесь всё относительно просто: надо много терпения, чтобы взять 10 итераций вордла... ну или же воспользоваться тулзой от @dsalakhov:
❤1
Forwarded from Дaнияp
Привет, для Гнвоерк написал скрипт:
https://github.com/X-OrBit/MultipleWordleSolver/tree/main
https://github.com/X-OrBit/MultipleWordleSolver/tree/main
GitHub
GitHub - X-OrBit/MultipleWordleSolver: Код для решения нескольких Wordle с соревнования Tinkoff CTF
Код для решения нескольких Wordle с соревнования Tinkoff CTF - X-OrBit/MultipleWordleSolver
❤1🔥1
Forwarded from Дядя Кит
Люди в… каком?
Качаем пнг, смотрим на закодированную пикчу.
Скармливаем сайту картинки размером в несколько пикселей и убеждаемся, что стиратель только меняет местами пиксели, но не их цвет.
Делаем белую картинку размером с flashied.png (точно) и оставляем на ней один яркий пиксель. Видим, что его закинуло в рандомное место.
Добавляем к предыдущей картинке второй пиксель и делаем вывод, что пиксели друг на друга не влияют. Осталось дело за малым - собсна расшифровать пикчу.
Первым делом делаем пикчу такого же размера, но с уникальным цветом каждого пикселя.
Чтобы сохранить расположение пикселя, делаем дбконтекст и модельки для всей этой радости:
Затем рисуем собсна саму пикчу с градиентами
Совсем забыл, для того, чтобы битмап работал сильно быстрее (без накладных расходов на кучу всего) я сделал свой directbitmap с блекджеком и куртизанками. В демонстрационных целях можно с дефолтным.
А еще в net core просто так нет system drawing и поэтому надо подключить пакет Microsoft.Windows.Compatibility
Скармливаем градиент сайту и получаем на выходе нужную нам пикчу. Сопоставляем исходные и конечные позиции
Затем осталось самое простое - сопоставить финальные значения пикчи из условия и заведомо известные исходные значения. Заварите кофейку, оптимизации завезли только чуть-чуть
Ну собсна и все. Конца выполнения можно и не ждать
Качаем пнг, смотрим на закодированную пикчу.
Скармливаем сайту картинки размером в несколько пикселей и убеждаемся, что стиратель только меняет местами пиксели, но не их цвет.
Делаем белую картинку размером с flashied.png (точно) и оставляем на ней один яркий пиксель. Видим, что его закинуло в рандомное место.
Добавляем к предыдущей картинке второй пиксель и делаем вывод, что пиксели друг на друга не влияют. Осталось дело за малым - собсна расшифровать пикчу.
Первым делом делаем пикчу такого же размера, но с уникальным цветом каждого пикселя.
Чтобы сохранить расположение пикселя, делаем дбконтекст и модельки для всей этой радости:
using System.ComponentModel.DataAnnotations;
public class Context : DbContext
{
public Context()
{
DbLoggerCategory.Database.OpenConnection();
Database.EnsureCreated();
}
public DbSet<Pixel> Pixels { get; set; }
// The following configures EF to create a Sqlite database file in the
// special "local" folder for your platform.
protected override void OnConfiguring(DbContextOptionsBuilder options) =>
options.UseSqlite("Data Source=C:\\Games\\vms\\memory\\data.db");
}
public class Pixel
{
public Pixel(int colorArgb, int beforeX, int beforeY, int afterX, int afterY)
{
ColorArgb = colorArgb;
BeforeX = beforeX;
BeforeY = beforeY;
AfterX = afterX;
AfterY = afterY;
}
[Key]
public int ColorArgb { get; set; }
public int BeforeX { get; set; }
public int BeforeY { get; set; }
public int AfterX { get; set; }
public int AfterY { get; set; }
}
Затем рисуем собсна саму пикчу с градиентами
using System.Drawing;
#pragma warning disable CA1416
var dbitmap = new DirectBitmap(777, 437);
for (var x = 0; x < dbitmap.Width; x++)
for (var y = 0; y < dbitmap.Height; y++)
{
var r = x % 255;
var g = y % 255;
var b = (x / 255 + 1) * (y / 255 + 10);
dbitmap.SetPixel(x, y, Color.FromArgb(r, g, b));
db.Pixels.Add(new Pixel(Color.FromArgb(r, g, b).ToArgb(), x, y, 0, 0));
}
dbitmap.Bitmap.Save("C:\\Games\\vms\\memory\\gradient.png");
db.SaveChanges();
Совсем забыл, для того, чтобы битмап работал сильно быстрее (без накладных расходов на кучу всего) я сделал свой directbitmap с блекджеком и куртизанками. В демонстрационных целях можно с дефолтным.
А еще в net core просто так нет system drawing и поэтому надо подключить пакет Microsoft.Windows.Compatibility
Скармливаем градиент сайту и получаем на выходе нужную нам пикчу. Сопоставляем исходные и конечные позиции
using var db = new Context();
var bitmap = new Bitmap("C:\\Games\\vms\\memory\\noname.png");
for (var x = 0; x < bitmap.Width; x++)
for (var y = 0; y < bitmap.Height; y++)
{
var pixel = bitmap.GetPixel(x, y);
var dbpixel = db.Pixels.First(p => p.ColorArgb == pixel.ToArgb());
dbpixel.AfterX = x;
dbpixel.AfterY = y;
}
db.SaveChanges();
Затем осталось самое простое - сопоставить финальные значения пикчи из условия и заведомо известные исходные значения. Заварите кофейку, оптимизации завезли только чуть-чуть
using var db = new Context();
var bitmap = new Bitmap("C:\\Games\\vms\\memory\\flashiedю3.png");
var dbitmap = new DirectBitmap(777, 437);
var pixels = db.Pixels.ToList();
pixels.Sort((p1, p2) => p1.AfterX.CompareTo(p2.AfterX));
for (var x = 0; x < bitmap.Width; x++)
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (var y = 0; y < bitmap.Height; y++)
{
var pixel = bitmap.GetPixel(x, y);
var dbpixel = pixels.First(p => p.AfterX == x && p.AfterY == y);
dbitmap.SetPixel(dbpixel.BeforeX, dbpixel.BeforeY, pixel);
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.WriteLine(x);
if(x % 5 == 0)
dbitmap.Bitmap.Save("C:\\Games\\vms\\memory\\flag4.png");
}
Ну собсна и все. Конца выполнения можно и не ждать
👍1💩1