-
AntiVirus Oracle
서론 CONFidence CTF 2020 Teaser라는 대회에서 Angry Defender라는 문제가 나왔습니다. 해당 문제는 Windows Defender의 특성을 이용해서 문제의 답에 해당하는 Flag를 얻어내는 문제었는데, 이 방법이 흥미로워서 이번에 공유하게 되었습니다. 본론 AV Oracle이란? 일반적으로 보안에서 Oracle이라는 이름이 붙은 공격들은 서버가 원하는 정보를 알고 있고 서버와 Interactive하게 통신이 가능할 때 해당 정보의 일부를 유출시킬 수 있는 공격들입니다. 대표적으로 Padding oracle attack과 RSA LSB oracle attack이 있습니다. (공교롭게도 둘은 모두 암호학적 공격이네요.) AV Oracle은 일반적인 컴퓨터 환경에서 사용되는 Antivirus의...
-
JavaScript의 형변환
JavaScript만큼 프로그래머들이 농담 따먹기를 하는 프로그래밍 언어가 PHP 말고 있을까요? JavaScript의 매력이자 악명 높은 점이 타입의 유연성입니다. 변수를 선언할 때 타입을 지정할 필요가 없으며, 서로 타입이 다른 변수들끼리 연산을 해야 할 때 최대한 에러를 내지 않는 방향으로 진행이 됩니다. 이런 규칙을 통해 ![]+-*만 이용해서 0부터 1000까지 만들라는 이런 문제도 있습니다. 하지만 일반적으로 이런 변환 과정은 갸우뚱할 때가 많으며, 프로그래머 개그의 단골 소재이기도 합니다. 이 포스트에서는 형변환(coercion)에 깔려있는 법칙들을 설명하고자 합니다. Alexey Samoshkin님의 이 포스트에서 지대한...
-
AI tutorial - Image Classification
AI tutorial - 1 . Image Classification Contents 들어가며 이미지 분류기란? Pytorch로 만든 이미지 분류기 발전 방향 참고 들어가며 인공지능 분야에 대한 관심과 발전이 비약적으로 상승하고 있는 시대입니다. 인공지능의 시대라고 할 정도로 인공지능은 우리의 삶에 도움을 주고 있고, 그 정도도 끊임없이 상승하고 있죠. 비전공자 또는 일반적인 사람들도 인공지능에 대해 알고자 하고, 공부하고자 하는 사람이 늘어났습니다. 인공지능을 발전시킨 딥러닝, 머신러닝 기술들은 현재진행형 상태입니다. 많은 연구가 진행되고 있고, 성능을 계속 향상시키는 논문들이 발표되고 있습니다. 속도는 빠르게, 정확도는...
-
Erdös-Ginzburg-Ziv 정리
서론 0과 1이 $X$개 있을 때, 그 중 항상 같은 수가 $N$개 이상 있게 하는 최소의 $X$는 $2N-1$이다. $X=2N-2$인 경우에는, 0과 1이 $N-1$개 존재하면 불가능하다. $X = 2N-1$개 있을 때는, 비둘기집의 원리에 의해서 항상 0이 $N$개 혹은 1이 $N$개 존재한다. 우리는 이 비둘기집의 원리의 일반화된 버전을 생각해 본다. 임의의 정수가 $X$개 있을 때, 그 중 합이 $N$의 배수가 되는 $N$개를 고를 수 있는 최소의 $X$는 얼마인가? 수로 0과 1만 가능한 것이 아니라, 모든 정수가 가능하다....
-
GCC 확장 기능 2
서론 지난 글에서는 GCC에서 다양한 목적들을 가진 방대한 양의 확장 기능들을 제공한다는 것을 보았습니다. 이번 글에서는 지난 글에 이어 더 많은 확장 기능들을 살펴보고 어떻게 활용할 수 있을지에 대해 설명하도록 하겠습니다. 포인터를 사용한 goto 표준에서 goto문은 이름을 지정한 레이블로만 점프가 가능합니다. GCC에서는 이를 확장시켜서, 레이블이 위치한 주소를 얻어와 포인터를 사용하여 goto를 할 수 있도록 만들어 줍니다. 예시 코드는 다음과 같습니다. #include <stdio.h> int main(void) { int i = 0; void *ptr = &&start; start: printf("hello\n");...