카테고리 sombra 문제 TEMPORAL 버튼을 누르면 php 파일 두개와db.sql이 다운받아진다. 소스를 확인해보면 아이디와 패스워드 값이 모두 노출되어 있다. 하지만 "gportero" 라는 아이디로 로그인하려고 보면 해당 아이디가 block되어 로그인이 불가능하다. 또한 addslashes를 사용하여 인젝션을 방지하고 있다. 처음엔 addslashes를 우회해야 된다고 생각하여 0xbf, 0xaa등을 시도했는데 euc-kr을 utf-8로 변환하는 코드가 있어야 가능한 방법이기 때문에 우회가 되지 않았다. 그 다음으로 본 것은 trim 함수다. trim은 문자열의 공백을 제거해주는 함수인데 스페이스바, 탭, 개행 문자, 캐리지 리턴, 널 등을 제거한다. trim으로 제거되지 않는 백스페이스(0x0..
카테고리 reversing 문제 keygenme.exe 파일이 주어지는데 해당 파일에서는 Name과 Serial 값을 입력 받아 매치되는지 확인한다. 이때 Name값을 이용하여 Serial 값을 생성하는데 Serial 값이 "SpuLhNlYlcVsbApvU"와 매치되는 Name값을 찾는 문제다. ida로 바이너리를 열어보면 Name으로 Serial을 계산하는 부분을 쉽게 찾을 수 있다. (sub_401080) v1은 5로, 항상 값이 일정하다. 5-71 = -66, 5-39 = -34 이고 각각에 97과 65를 더하면 둘 다 31이 된다. 알파벳을 31번 rotate 하고 있는 것이고, 알파벳은 26개이기 때문에 5번 rotate하는 것과 같다. Serial로부터 Name을 계산하려면 19(26-5)번 ..
카테고리 analysis 문제 압축 파일이 주어진다. 압축을 두 번 해제하면 malscript 라는 폴더에 다섯개의 vbscript 파일이 있는 것을 볼 수 있다. 이 파일들을 모두 분석하여 key url을 찾아야 한다. 파일은 위와 같은 형태로 난독화 되어 있다. 주석을 제거하고, 각각의 변수들을 문자로 치환하는 과정을 거쳐 난독화를 어느정도 해제했다. 이때 제일 처음 등장하는 function(위 파일에서는 AXSZWYG)이 첫 번째 인자의 문자열에 대한 decode를 수행하고 있다. 해당 함수가 호출되는 부분을 찾아 첫 번째 인자와 두번째 인자를 구해 난독화를 한 번 더 해제하면 사이트의 url들이 나타난다. 다섯개의 파일들을 분석한 결과, 다섯번 째 파일에서 key url을 찾을 수 있었다. Cod..
카테고리 matrix 문제 32 bit elf 바이너리가 주어진다. 이 바이너리는 code.txt를 해석하여 인스트럭션들을 실행한다. 인스트럭션을 호출하는 부분은 위 그림 중 22번 째 줄 부분이다. 여기서 instruction_table 배열에는 mov, add, sub, xor, cmp, jmp, je, jne, jl, jg, call, ret, push, pop, syscall 이 순서대로 있고, 각각의 함수들은 바이너리 내부에 구현되어 있다. 예를 들어서 coce.txt의 첫 번째 바이트가 0x0c 라면, 열 두 번째 함수인 push가 실행된다. 다음 실행할 인스트럭션은 세 번째 바이트의 값 + 3 만큼 건너뛴 위치가 된다. 만약 방금 실행한 인스트럭션이 pc 값을 변경할 만한 함수(jmp, re..