Skip to content

Instantly share code, notes, and snippets.

View TheAirBlow's full-sized avatar
🤓
nerd emoji

TheAirBlow TheAirBlow

🤓
nerd emoji
View GitHub Profile
@TheAirBlow
TheAirBlow / CSBean.java
Created September 25, 2024 10:46
Edifier Button Controls
package com.edifier.lib_connect.model;
import java.util.ArrayList;
import kotlin.Metadata;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: CSBean.kt */
@Metadata(d1 = {"\u00004\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b!\n\u0002\u0010\u0000\n\u0002\b\u0003\b\u0086\b\u0018\u00002\u00020\u0001B7\u0012\b\b\u0002\u0010\u0002\u001a\u00020\u0003\u0012\b\b\u0002\u0010\u0004\u001a\u00020\u0005\u0012\b\b\u0002\u0010\u0006\u001a\u00020\u0003\u0012\b\b\u0002\u0010\u0007\u001a\u00020\b\u0012\b\b\u0002\u0010\t\u001a\u00020\b¢\u0006\u0002\u0010\nJ\t\u0010'\u001a\u00020\u0003HÆ\u0003J\t\u0010(\u001a\u00020\u0005HÆ\u0003J\t\u0010)\u001a\u00020\u0003HÆ\u0003J\t\u0010*\u001a\u00020\bHÆ\u0003J\t\u0010+\u001a\u00020\bHÆ\u0003J;\u0010,\u001a\u00020\u00002\b\b\u0002\u0010\u0002\u001a\u00020\u00032\b\b\u0002\u0010\u0004\
@TheAirBlow
TheAirBlow / writeup.md
Last active December 10, 2023 17:37
pwn formatter
  1. Сразу в глаза бросается следующая строчка кода: saved_path = str(saved_path)[:100]
    • Это даёт нам возможность сохранить файл пути, отличному от formatter'а.
    • Благодоря этому мы можем создать файл по любому пути - например, в /app/formatters.
    • saved_path всегда начинается с uploads/ + рандомный UUID и -.
    • Соответсвтвенно, нам нужен formatter длиной 100 - 8 - 36 - 1 = 55 символов.
    • После 55 символов мы можем изменить путь для check_output, у меня за это отвечает /../yaml
    • В итоге, мы получаем ../../../../../../../../../../../app/formatters/payload/../yaml.
  2. Программа делает все formatter'ы исполняемыми при запуске
    • Соответсвенно, нам нужно перезагрузить контейнер, либо крашнуть воркер.
  • Вспоминаем про существование /sbin/reboot и то, что у нас есть path injection.
@TheAirBlow
TheAirBlow / writeup.md
Last active November 23, 2023 07:26
VII Russian CTF Cup - Write Up

zion

Самое легкое задание - просто делаем cat core.2331 | grep -a ctfcup.

Stealer

Задание довольно легкое, просто занимает много времени.

  1. Запустим через Wine, узнаем, что это само-распаковывающийся архив.
  2. Позже находим файл Snake.exe, выглядящий как .NET Framework приложение.
  3. Деобфусцириуем Snake.exe, например, через de4dot и др.
  4. Ручками деобфускируем до конца (то, что de4dot не смог)
  5. Получаем следующий код для шифровки:
@TheAirBlow
TheAirBlow / end.c
Last active June 20, 2023 16:41
Samsung Odin v4 1.2.1-dc05e3ea decompilation
//----- (0000000000079100) ----------------------------------------------------
__int64 __fastcall DownloadEngine::writeProtectionFail(const char **this, int a2)
{
void *ptr[2]; // [rsp+0h] [rbp-38h] BYREF
char v4[40]; // [rsp+10h] [rbp-28h] BYREF
switch ( a2 )
{
case -7:
ptr[0] = v4;
@TheAirBlow
TheAirBlow / example.md
Last active December 29, 2022 14:18
SyntaxDefinition syntax

Basics

All of it boils down to just [list of types](text shown in usage).
Here's an example: [online_player integer string](<owner> <id> <name>)
The usage would be shown as &6Usage: &c/example <owner> <id> <name>.

Allowed types

online_player # Checks if the supplied string is a username of an online player.
cached_player # Checks if the supplied string is a username of a player that joined the server at least once.
short # Normal 16-bit integer, nothing more.
{
"id": 5,
"name": "Самостоятельная работа по теме: \"Алканы\"",
"description": "<p>Самостоятельная работа по теме \"Алканы\" предназначена для проверки знаний учащихся после изучения соответствующего раздела органической химии. Работа включает в себя 12 заданий на знания номенклатуры, строения, физических и химических свойств, получения и применения алканов.</p>",
"total_points": 187,
"time_limit": 45,
"discipline_id": 10,
"solutions_disabled": false,
"manual_check_tasks_deadline": null,
"difficulty": "entry",
{
"id": 47475,
"ulid": "01e4vdgcycxc76h779cqsk8baq",
"name": "Алканы",
"content": "\u003cp\u003e\u003cimg src=\"https://u.foxford.ngcdn.ru/uploads/tinymce_file/file/6770/a7a62d047e2d0f68.png\" alt=\"\" title=\"Ура! Химия!\" width=\"80\" /\u003e\u003cimg src=\"https://u.foxford.ngcdn.ru/uploads/tinymce_file/file/6771/74f2eeeedf86e117.png\" alt=\"\" title=\"Задача 1 уровня сложности\" width=\"80\" /\u003e\u003c/p\u003e\u003cp style=\"text-align: justify;\"\u003eКакие типы реакций характерны для алканов?\u003c/p\u003e",
"discipline_name": "химия",
"difficulty": "entry",
"themes_names": ["Алканы. Гомологический ряд, строение, номенклатура, изомерия", "Химические свойства алканов"],
"hint_cost": 12,
"hints_count": 0,
{
"id": 2637688,
"check_id": 4492843,
"subject_id": 1,
"teacher_id": 1957999,
"group_id": 3146988,
"name": "Мониторинг образовательных результатов 1 класс",
"draft": false,
"check_jobs": [
{
@TheAirBlow
TheAirBlow / solaris.c
Last active March 18, 2022 15:40
haha sussy solaris tutorial
#include <windows.h>
static ULONGLONG r, n;
int randy() {
return n = r, nA = 0x8ebf635bee3c6d25, nA = n << 5 | n >> 26, n *= 0xf3e05ca5c43e376b, r = n, n & 0x7fffffff;
}
DWORD WINAPI helly1(LPVOID 1 pParam) {
HDC DES = GetDC(0);
int w = GetSystemMetrics(0), h = GetSystemMetrics(1);
(self.webpackChunkskysmart_edu = self.webpackChunkskysmart_edu || [
]).push([['polyfills'],
{
98236: (n, d, e) =>{
'use strict';
e(24667),
e(40454),
e(65624),
e(97827),
e(61407),