전체 글(18)
-
pwnable.kr을 마치며...
이틀 전 2022년 5월 19일 새벽 5시 34분 KST에 마지막 pwnable.kr 챌린지인 crcgen을 완료했다. 이로써 모든 pwnable.kr의 모든 챌린지를 완주했다. 오랜 시간 공을 들여서 완주를 했다는 생각을 하니 뿌듯하다. 본인은 굉장히 어렵게 문제들을 다 풀었는데 이게 DEFCON이나 CTF 대회들보다 훨씬 쉽다니 참 놀라울 따름이다. pwnable.kr은 장대희 교수(현 성신여대)님이 (아마도) 대학원 시절에 만든 사이트이다. 컴퓨터 기술이 빨리 바뀌고 업데이트되는 것에 비하면 꽤 오래된 사이트라고 할 수도 있을 것 같다. 본인 앞에 이미 수많은 분들이 이미 완주를 하고 떠났었다. 역시 취약점에 대해 다루는 사이트이다 보니 문제의 취약점에 대해 제보하신 분들이 많고, 시스템 자체의 취..
2022.05.21 -
Inspecting the Implementation of QEMU: How QEMU Handles Self-modifying Code
Some weeks ago, I was trying to solve malware in pwnable.kr. I basically already knew that QEMU basically uses compiler technology called TCG and kind of easily inferred that there could be some timing issues related to code modification at runtime, so I merely "easily" solved it. However, I wanted to find out why. Saying that again, I wanted to check with my own eyes and clearly find out how it..
2022.04.19 -
[윈도우] 프로그램이 입력에 즉각 반응하지 않거나 잘못 반응하는 문제
요즘 시대에는 컴퓨터 기법, 그 중 텍스트와 관련된 기법이 많이 발전해서 텍스트처럼 입력하는 경우에도 특이한 입력이 들어오면 특정 동작을 수행해주는 경우가 있다. 필자는 컴퓨터 전공이라 프로그램을 많이 다루기 때문에 이러한 기능을 자주 애용한다. 이러한 동작의 예시로는 크롬 주소표시줄의 구글 검색 모드 전환 기능, 또는 코딩 텍스트 편집기에서 주석 처리 기능 등이 있을 수 있다. 아래 스크린샷은 이러한 기능의 예시를 보여주고 있다. 해당 기능들은 필자가 굉장히 많이 사용하는 기능 두가지를 가져온 것이다. 구글 크롬 주소표시줄에서 ?로 입력을 시작하면 아래와 같이 검색 모드로 자동으로 전환되며, 검색어를 입력하고 엔터를 누르면 해당 검색어로 구글 검색엔진에 검색이 된다. 그 다음 스크린샷은 필자가 자주 사..
2020.10.19 -
서버시간 확인 방법과 그 정확도에 관한 고찰
안녕하세요. orangecalculator입니다. 1. 개요 최근에 서울대학교의 수강신청이 있었습니다. 그런데, 그 전까지는 그러려니 했지만 이번에 수강신청을 하면서 서버시간 확인 서비스인 navyism과 한국표준과학연구원(KRISS)에서 제공하는 표준시간 확인 서비스 utck 중 어떤 서비스가 좋을까라는 생각을 문득 하게 되었습니다. 먼저 제 주변 친구들에게 확인해본 결과 어떤 것이 우세하게 선호되는 것 같지는 않았고, 대부분의 친구들이 두 서비스 중 하나를 선호하는 것 같았습니다. 저는 컴퓨터를 배운 입장에서 두 서비스의 질이 어떤지 궁금해졌습니다. 그래서 한번 코드를 뜯어보았습니다. 이 글에서는 navyism과 utck를 분석하기 위한 배경지식을 먼저 알아보겠습니다. 그 후에는 코드의 분석결과를 알..
2020.08.16 -
[BOJ] 브루트 포스
오늘부터는 (시시한 거 그만하고) 슬슬 알고리즘을 해보도록 하겠습니다. 오늘의 주제는 브루트 포스입니다. 브루트 포스는 그냥 무식하게 하나하나 다 해보는 방법입니다. 한마디로 난 그런 거 잘 모르겠고 일단 부딪혀. [BOJ 2798] 3개의 카드를 고르는 경우를 모두 해보는 방법입니다. 3개의 카드를 고르기 때문에 3중 for문입니다. #include #include using namespace std; int nearestsum(const vector & cards, int limit){ int maxsum = 0; for(int i=0;i
2020.07.30 -
[BOJ] 재귀
바로 시작해보겠습니다. [BOJ 10872] switch-case문으로 구현해주었습니다. #include unsigned int fact(unsigned int N){ switch(N){ case 0: case 1: return 1; default: return fact(N-1) * N; } } int main(){ int N; scanf("%d",&N); printf("%d", fact(N)); } [BOJ 10870] switch-case문으로 구현해주었습니다. 2 #include unsigned fibb(unsigned N){ switch(N){ case 0: return 0; case 1: case 2: return 1; default: return fibb(N-1) + fibb(N-2); } }..
2020.07.29