본문 바로가기

CTF

(51)
[Codegate 2018] Impel Down Codegate 2018 Impel Down Misc 853pt python jail 문제다. 실행시켜보면 4개 명령어를 입력받는데 4개의 명령어가 아닐시에 이런 오류를 뿜어낸다eval() 으로 인자를 받으므로 os를 import 시켜 보았다. 입력할때 특수문자 필터링이 걸린다. name으로 명령어를 넣고 eval(name)을 활용하였다. 성공적으로 ls 명령 실행결과가 추출되었다.이름에는 필터링이 걸리지 않는다 그러면 이제 플래그를 얻을 수 있다. [Solve]12345678from pwn import * p = remote("ch41l3ng3s.codegate.kr",2014)print p.recvuntil("Name :")p.sendline('__import__("os").system("sh")')..
[AceBear Security Contest] secure login AceBear Security Contest secure login Reversing 711pt 실행해보면 현재 시간을 알려주면서 NAME 과 password를 입력받는다. IDA로 열어보았다. sub_8048AA3 함수를 먼저 호출 한 뒤에 name 값과 password 값을 입력 받은 후 sub_8048950함수에서 password를 암호화 시킨다. 후에 암호화 시킨 password와 s2(F05664E983F54E5FA6D5D4FFC5BF930743F60D8FC2C78AFBB0AF7C82664F2043) 값이 같다면 해당 서버에서 플래그를 추출한다. 먼저 sub_8048AA3 함수를 보면 알람 함수가 보이고 key data를 불러오는 함수가 보인다. (key 제일 중요)그 다음 현재 시간을 기준으로..
[Codegate 2017] EasyCrack 101 Codegate 2017 EasyCrack 101 reversing 문제이다. Binary.zip 파일을 다운받으면 해당 파일안에 101개의 바이너리 파일이 들어있다. 바이너리 파일 101개의 key값들을 구한 후에 해당 사이트에 key를 순서대로 넣는다면 flag가 나올 것 같다. 일단 prob1을 열어봤다. main sub_400697 인자값을 받은 후 인자를 Check 하는 간단한 크랙이다. 101개 각각의 바이너리 key를 구해야한다. 하나하나 잡는건 너무 비효율적이라고 생각하여 angr를 사용하였다. 일단 angr를 사용할 시 필요한 부분은 find(Correct 문) 주소이다. avoid 주소는 없어도 되지만 있다면 angr의 속도를 높여줄 수 있다. 다행인 것은 101개의 바이너리 동작구조가..
[Codegate 2017] angrybird 메인 함수에서 exit함수를 호출하지 않도록 수정해줘야 한다. 어셈으로 보자 cmp eax, 0 부분을 cmp eax, 1로 바꿔주면 된다. 보면 이런 코드가 대략 2천줄 정도 있는데 z3 아니면 angr로 풀라는 소리같다. z3으로 풀면 너무 시간이 오래 걸리기 때문에 angr를 사용했다.그전에 수정해야 할 것이 있다.먼저 sub_40072A() 함수는 그냥 nop 처리 해주고 sub_4006f6 에서 dword_606060 값을 리턴하는데 이게 fgets의 입력 size가 된다. 이 부분이 현재 1이므로 21(0x15)로 바꿔주어야 한다. 이런식으로 fgets 인자값중 size 인자를 변수 n 대신에 0x15로 바꿔주면 된다.이제 파일을 저장한 후 angr 돌리면 된다. [Solve]123456789..
[SECCON 2017] JPEG file SECCON 2017 JPEG file (rev 100pt)JPEG 구조 관련 문제 같습니다. 이미지가 손상되었다고 생각하고 jpeg structure을 찾아보았습니다.https://en.wikipedia.org/wiki/JPEGSyntax and structure 부분을 자세히 봐야 합니다.Syntax and structureA JPEG image consists of a sequence of segments, each beginning with a marker, each of which begins with a 0xFF byte followed by a byte indicating what kind of marker it is. Some markers consist of just those two b..
[Defcon 2016] Baby-re 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax@4 __int64 v4; // rbx@4 unsigned int v5; // [sp+0h] [bp-60h]@1 unsigned int v6; // [sp+4h] [bp-5Ch]@1 unsigned int v7; //..
[CSAW CTF 2017] tableEZ CSAW CTF 2017 tableEZ Reversing 100pt 문제입니다 해당 문제를 IDA로 문제를 대략 파악할 수 있습니다.1. s2 배열에 암호화된 data를 복사 2. flag를 input 받음3. input = get_tbl_entry(input)4. 암호화된 input 과 s2 비교 s2로 복사된 data는 다음과 같습니다해당 암호화 데이터는 리틀엔디안 형식으로 저장되어 있기 때문에 따로 정렬해주었습니다. 27 B3 73 9D F5 11 E7 B1 B3 BE 99 B3 F9 F9 F4 30 1B 71 99 73 23 65 99 B1 65 11 11 BE 23 99 27 F9 23 99 05 65 CE get_tbl_entry 함수를 보면 trans_tbl 배열과 input 각 자리 값을 ..
[Christmas CTF 2017] Simple_Bit Christmas CTF 2017 Simple_Bit 문제이다사람들은 꽤 많이 풀었지만 나한텐 약간 어려웠다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148..