어제 풀었던 랜덤 값 문제와 비슷한 문제를 찾던 중 디미 ctf 2018 mm 문제를 발견했다.디미 ctf 당시에 못 풀고 저장해뒀던 문제라 꼭 다시 풀어보고 싶었다. srand에 seed값으로 0x17A3을 넣고 rand값과 입력값을 연산한 후 memcmp로 unk_201020의 배열들과 비교한다. 이때 이 값들은 0xa8,0x73 -> 0x73a8 로 배열에 들어가게 된다는 사실을 동적 디버깅중 알아냈다. 12345678910111213141516171819202122232425262728293031from ctypes import *import string libc = CDLL('/lib/x86_64-linux-gnu/libc.so.6') table=[0x73a8,0x39cc,0x4e0a,0x8d8..
컴퓨터를 정리하던 중 예전에 다운로드 받았던 리버싱 문제들을 발견했다. 폴더명은 디미고 본선 리버싱50이었는데 정확히 무슨 ctf였는지 모르겠다.디미ctf 2017 본선 문제였다고한다.그당시에는 풀지못해서 다운로드만 해놓고 손절했던것같은데 지금보니 쉬운 문제였다. srand에 seed값으로 0x3FD1CC7을 주기 때문에 고정된 값이 나온다.즉 그 값들을 테이블로 이용해서 브루트포스를 돌릴 수 있다.1234567891011121314151617181920import stringflag=""table=[0x4D,0x0CB,0x0C3,0x0BB,0x19,0x0A,0x1A,0x7F,0x50,0xF8,0x18,0x08,0x89,0x0C1,0x0A8,0x0CF,0x0BA,0x0BE,0x0EC,0x75,0x90,0..