본문 바로가기

Wargame Write-Up/HackCTF69

[HackCTF] (Forensic) Question? 풀이 압축파일을 풀어보면, 이런 사진이 나온다. 파일이름이 Do_you_know_HxD 이니, 문제를풀라는게아니라 Hxd 로 열어봐야겠다. HackCTF{~} 형식이니, HackCTF{ 를 검색하면 플래그가나온다. 2020. 4. 13.
[HackCTF] (Pwnable) BOF_PIE 풀이 3008 포트로 접속하면 뜬다. 주소를 알려주고 입력을 받는다 [ main ] welcome 함수호출 후, Nah 를 출력하고 종료한다. [ welcome ] do you know j0n9hyun ? 을 출력하고, welcome 함수의 주소를 출력해주고, [ebp-0x12] 에 값을 입력받는다. NX 와 PIE 가 설정되어있다. stack 이나 heap 에 쉘코드를 올려 실행할수없고, 절대주소를 사용할 수 없다. flag 를 출력해주는 j0n9hyun 함수이다. 절대주소를 사용할 수 없으니, welcome 함수와 j0n9hyun 함수의 offset 차이를 구해서, j0n9hyun 함수의 주소를 구한뒤, BOF 로 ret 주소를 j0n9hyun 함수의 주소로 조작하면 되겠다. 두 주소의 차이 = welco.. 2020. 3. 25.
[HackCTF] (Pwnable) Offset 풀이 원하는함수를 물어본다. 함수리스트에는 one, two, print_flag 함수가 있다. 하지만 one 함수만 작동이 된다. main 함수다. which function ~~ 를 출력하고, [ebp-0x27] 에 입력을 받고, select_func 함수의 인자로 전달해 호출한다. [ select_func ] [ebp-0x2a] 에 0x1F (31d) 만큼 내가입력한 문자열을 복사한다. 그리고, "one" 과 비교를해서 같으면 [ebp-0xC] 에 one 함수주소를 넣고, [ebp-0xC] 를 eax 로 옮겨서 eax 를 호출한다. 이전 문제들과 다르게 NX, PIE 가 설정되어있고, RELRO는 FULL이다. FULL RELRO : GOT overwrite 를 방지한다. ( GOT 주소를 조작할수없다 ).. 2020. 3. 25.
[HackCTF] (Pwnable) Simple_Overflow_ver_2 풀이 문제파일 실행시, 데이터를 입력받고, 버퍼의 주소를 알려준다. 계속할수있고, n 을 누르면 종료한다. ida 로 열어보면, buffer : [rbp-0x88] 이란 걸 알 수 있다. 버퍼의 주소도 알려주니, 저번처럼 쉘코드 작성 후 , ret address 에 buffer 의 주소를 넣으면 된다. 메모리보호기법이 설정되어있지 않으니, ret address 를 덮어쓸 수 있다. 하지만, main함수를 분석하다보면, [ebp-8] 값이 입력한 문자열의 길이보다 작을때 buf 의 주소를 출력해준다. 쉘코드+DUMMY+buffer address 형식으로 payload 를 작성하면, [ebp-8] 에도 DUMMY 값이 들어가게된다. DUMMY 를 a 로 채운다면, [ebp-8] : 0x61616161 이 들어가서.. 2020. 3. 21.