Forwarded from Кавычка (Emil Lerner)
Знали ли вы, что второй аргумент
Оказывается, glibc поддерживает синтаксис для указания кодировок, это можно сделать вот так:
В итоге, если вы можете для чужого приложения
1) переопределить переменную окружения
2) куда-нибудь записать свою so-шку и файл
3) дописать
то вы получите выполнение кода.
Конечно, в реальных приложениях такое вряд ли встретится, но это доказывает что даже в самых базовых библиотеках полно интересного.
Кстати, эта же система кодировок-модулей используется и в
Подробности можно прочитать в посте японца, который это заметил.
fopen (тот самый, который w или, например, r+) умеет исполнять код? Ну почти.Оказывается, glibc поддерживает синтаксис для указания кодировок, это можно сделать вот так:
fopen("file", "w,ccs=<encoding>"). Сами кодировки подгружаются динамически, функции для работы с каждой кодировкой лежат в отдельном .so-файле. Конфиг, содержащий пути к этим библиотекам называется gconv-modules и обычно лежит где-нибудь в /usr/lib/x86_64-linux-gnu/gconv/, но если переопределить переменную окружения GCONV_PATH, то он будет браться из указанной директории. И path traversal, конечно, в нем полностью поддерживается.В итоге, если вы можете для чужого приложения
1) переопределить переменную окружения
GCONV_PATH2) куда-нибудь записать свою so-шку и файл
gconv-modules3) дописать
,css=payload во второй аргумент fopenто вы получите выполнение кода.
Конечно, в реальных приложениях такое вряд ли встретится, но это доказывает что даже в самых базовых библиотеках полно интересного.
Кстати, эта же система кодировок-модулей используется и в
iconv (и утилите, и библиотеке), поэтому трюк можно использовать для обхода disabled_functions в php. Правда, для того, чтобы задать GCONV_PATH должен быть разрешен putenv, а это уже само по себе небезопасно.Подробности можно прочитать в посте японца, который это заметил.
Тут залили видосы с GoLab 2019, правда почему-то дни 2 и 3, а 1го не вижу
https://www.youtube.com/channel/UCMEvzoHTIdZI7IM8LoRbLsQ/playlists
https://www.youtube.com/channel/UCMEvzoHTIdZI7IM8LoRbLsQ/playlists
Сборник трешовых айти вакансий, давайте до 4к подписчиков добьём)
https://xn--r1a.website/youhadnojob
https://xn--r1a.website/youhadnojob
Telegram
You Had No Job
Пятничный душ в уютном кругу коллег
There's a balance with both expressiveness and type systems. Too little (PHP, JavaScript) is suboptimal, and too much (Scala, Haskell, Rust) is also suboptimal.
Please note it depends very much on what you're building, as to where that tradeoff lies. For some things I use Rust. For others I use JavaScript. I don't touch PHP, Java, Scala, or Haskell for anything in the world - you can't practically pay me enough to want to work with them. For me, for web applications and server side software, Go is in the sweet spot more than any other language I've tried, and I've tried almost 30 by now.
Go is not always elegant, it's not always the right tool, and sometimes frustrating - but it's incredibly good at enabling better productivity than the alternatives in this niche. Sample size of one, this is my opinion, and other disclaimers apply.
(с) HN
Please note it depends very much on what you're building, as to where that tradeoff lies. For some things I use Rust. For others I use JavaScript. I don't touch PHP, Java, Scala, or Haskell for anything in the world - you can't practically pay me enough to want to work with them. For me, for web applications and server side software, Go is in the sweet spot more than any other language I've tried, and I've tried almost 30 by now.
Go is not always elegant, it's not always the right tool, and sometimes frustrating - but it's incredibly good at enabling better productivity than the alternatives in this niche. Sample size of one, this is my opinion, and other disclaimers apply.
(с) HN
Теперь в VSCode для го можно будет получить покрытие кода, тестами из одного файла. Ноис.
Ишус https://github.com/microsoft/vscode-go/issues/2873
Мой ПР https://github.com/microsoft/vscode-go/pull/2884
Ишус https://github.com/microsoft/vscode-go/issues/2873
Мой ПР https://github.com/microsoft/vscode-go/pull/2884
Хочется видеть больше таких будней из жизни SRE разных фирм. Конечно же большинство оседает в приватных вики или прост чатах (мыж не пишем мини-постмортемы, да? :)
Конечн ценности в "давайте раскатывать GIN на колонке с текстовым поиском" несет мало ценности, но с кешами нгинх довольно неочевидно.
https://habr.com/ru/company/flant/blog/471892/
Конечн ценности в "давайте раскатывать GIN на колонке с текстовым поиском" несет мало ценности, но с кешами нгинх довольно неочевидно.
https://habr.com/ru/company/flant/blog/471892/
Хабр
6 практических историй из наших SRE-будней
Современная веб-инфраструктура состоит из множества компонентов разного назначения, имеющих очевидные и не очень взаимосвязи. Это становится особенно хорошо ви...
Узнал, что авторы i18next (популярная либка для и18н) немножко рекламируют сервис для работы с переводами.
https://locize.com/
https://locize.com/
Locize
Continuous Localization Platform for Developers & Translators
Bridging the gap between localization and development
Завтыкал чуть больше чем на 10 минут читая исходники Citus. Отличный код на Си, теперь в пример буду ставить.
Пример https://github.com/citusdata/citus/blob/master/src/backend/distributed/commands/table.c
Пример https://github.com/citusdata/citus/blob/master/src/backend/distributed/commands/table.c
GitHub
citus/table.c at main · citusdata/citus
Distributed PostgreSQL as an extension. Contribute to citusdata/citus development by creating an account on GitHub.
Возникло желание купить монитор, возможно 4к. Хотя не знаю, надо ли. Если у вас есть история успеха или история неуспеха (тип модель моника, что стало лучше, что хуже, на что обратить внимание) - с радостью вас выслушаю @olegkovalov
Нашел отличную и официальную организацию от AWS с кучей примеров. В общем-то а как еще втянуть людей в свою секту? Но вещь полезная.
https://github.com/aws-samples?type=source
https://github.com/aws-samples?type=source
Еще вчера нашел крутой проект по исправлению/улучшению точности в мат выражениях с плавающей точкой.
Репа на гитхабе живет уже с 6 лет и написано все на Racket. Пока в документацию не влезал, но должно быть интересное чтиво.
Если здесь есть люди, кто кодит математику и вам важна точность, и вот если потестите либку - дайте знать что как, интересно на реальных вещах увидеть :)
Проект http://herbie.uwplse.org/
Репо https://github.com/uwplse/herbie
Репа на гитхабе живет уже с 6 лет и написано все на Racket. Пока в документацию не влезал, но должно быть интересное чтиво.
Если здесь есть люди, кто кодит математику и вам важна точность, и вот если потестите либку - дайте знать что как, интересно на реальных вещах увидеть :)
Проект http://herbie.uwplse.org/
Репо https://github.com/uwplse/herbie
Почему никому нельзя доверять? Да все просто, есть Couchbase, медиана на ответы 5мс на все операции (get, touch, insert, upsert, remove) и стабильно держит 12-15к запросов.
Но вот рандомно (раз в пару денй, неделю, без какой либо закономерности), латенси может прыгнуть в 10 раз (что сильно заметно), и даже пара случаев в 1000 раз.
При этом со стороны бд все в норме. Грешили на жавовского клиента, добавили прогрев, но все равно не спасло. И вроде не болит, но из-за таймаута получаев 5хх и соотв алёрт (из-за трафика 5хх заметное колво). Мде
Но вот рандомно (раз в пару денй, неделю, без какой либо закономерности), латенси может прыгнуть в 10 раз (что сильно заметно), и даже пара случаев в 1000 раз.
При этом со стороны бд все в норме. Грешили на жавовского клиента, добавили прогрев, но все равно не спасло. И вроде не болит, но из-за таймаута получаев 5хх и соотв алёрт (из-за трафика 5хх заметное колво). Мде