[HackCTF] Yes_or_No
·
WriteUp/HackCTF
libc 버전 관련해서 생각보다 짜증나는 문제였음... ldd 명령어와 pwntools에서도 libc 파일을 고를 수 있음을 잊지 말자!! → System을 두번 호출해야 하는 이유는 아직도 모르겠다... → 한번 호출해도 system에는 잘 들어간다... 하지만 system을 돌다가 갑자기 SIGSEGV 오류 뜨면서 죽어버린다... 왤까? NX → Shellcode 실행 불가 38번째 줄 gets를 이용해서 BOF를 발생시켜야 한다. RTL기법을 사용해서 Libc leak을 진행하고 system('/bin/sh')를 실행시키는 문제인 것 같다. 우선 38번째 줄에 접근하기 위한 조건을 알아야 하는데 이는 어셈블리 분석을 통해 알아보도록 하자. gets가 실행되기 전 cmp문에서 eax 가 어떤 값을 가..
[HackCTF] BOF_PIE
·
WriteUp/HackCTF
NX : Shellcode 실행 X PIE : 메모리 주소 랜덤화 →BOF로 문제를 풀어보자. 메인함수는 되게 간단하다. welcome()도 IDA로 까보겠다. welcome함수의 위치를 출력하고 v1에 입력을 받는모습. retrun에 있는 scanf에서 BOF가 일어난다. IDA로 어떤 함수가 있는지 보던 중 j0n9hyun이라는 함수를 발견했다. 이 함수가 FLAG를 출력하는 함수인 것 같다. 이번 문제에는 PIE가 걸려있지만 앞서 welcome()에서 welcome()함수의 위치를 알려준다. 즉, 함수들 간의 offset을 구해서 j0n9hyun()의 위치를 파악하고, BOF로 ret에 j0n9hyun()의 주소를 덮어주면 될 것 같다. offset은 gdb를 통해서 간단하게 구할 수 있다. exp..
[HackCTF] Offset
·
WriteUp/HackCTF
CANARY X → Buffer Overflow 가능 NX → 모든 공간에서 Shellcode 삽입 및 실행 불가 RELRO → GOT Overwrite 불가 PIE → 주소 랜덤화 BOF를 일으켜 문제를 해결해야 한다. main함수에서는 어떤 함수를 호출할 것인지 물어보고 입력받은 버퍼값을 select_func으로 바로 넘겨주는 모습이다. 입력받아온 함수의 이름이 one과 같으면 one()를 return, 아니면 two()을 return한다. strcmp(s1,s2)는 다음과 같은 출력을 만들어 낸다. 1: ASCII 코드 기준으로 문자열2(s2)가 클 때 0: ASCII 코드 기준으로 두 문자열이 같을 때 1: ASCII 코드 기준으로 문자열1(s1)이 클 때 one()과 two()는 특정 문자열을 ..
[HackCTF] Simple Overflow Ver 2
·
WriteUp/HackCTF
따로 주목할만한 보호기법은 안걸려있는 모습 입력받은 데이터를 저장하는 버퍼의 주소와 입력받은 데이터를 한 문자씩 출력하는 간단한 프로그램. Again을 물어보고 y를 입력으로 제공하면 다시 입력을 받을 수 있는 모습이다. IDA로 확인한 BOF 취약점은 scanf에 있다. 따라서 다음과 같은 방법으로 exploit을 시도할 수 있다. ① 버퍼의 주소를 먼저 파악한다. ② 해당 버퍼에 쉘코드를 삽입하고 return address를 버퍼의 주소로 덮어 BOF를 발생하게한다. gdb로 뜯어보면 ret이 어디 위치에 있는지 알 수 있다.( 140 바이트 이후) from pwn import * # context.log_level = "debug" #p = process('./Simple_overflow_ver_2..
[HackCTF] x64 simple_size_BOF
·
WriteUp/HackCTF
main을 덤프뜬 코드 Dump of assembler code for function main: 0x0000000000400636 : push rbp 0x0000000000400637 : mov rbp,rsp 0x000000000040063a : sub rsp,0x6d30 0x0000000000400641 : mov rax,QWORD PTR [rip+0x200a08] # 0x601050 0x0000000000400648 : mov ecx,0x0 0x000000000040064d : mov edx,0x2 0x0000000000400652 : mov esi,0x0 0x0000000000400657 : mov rdi,rax 0x000000000040065a : call 0x400520 0x0000000000..
[HackCTF] 내 버퍼가 흘러넘친다!!!
·
WriteUp/HackCTF
메인 함수를 덤프뜬 모습 Dump of assembler code for function main: 0x080484cb : push ebp 0x080484cc : mov ebp,esp 0x080484ce : sub esp,0x14 0x080484d1 : mov eax,ds:0x804a040 0x080484d6 : push 0x0 0x080484d8 : push 0x2 0x080484da : push 0x0 0x080484dc : push eax 0x080484dd : call 0x80483b0 0x080484e2 : add esp,0x10 0x080484e5 : push 0x80485b0 0x080484ea : call 0x8048380 0x080484ef : add esp,0x4 0x080484f2 :..
[HackCTF] Basic_FSB
·
WriteUp/HackCTF
주어진 파일을 먼저 disassemble 해보자. Dump of assembler code for function main: 0x080485ed : lea ecx,[esp+0x4] 0x080485f1 : and esp,0xfffffff0 0x080485f4 : push DWORD PTR [ecx-0x4] 0x080485f7 : push ebp 0x080485f8 : mov ebp,esp 0x080485fa : push ecx 0x080485fb : sub esp,0x4 0x080485fe : mov eax,ds:0x804a044 0x08048603 : push 0x0 0x08048605 : push 0x2 0x08048607 : push 0x0 0x08048609 : push eax 0x0804860a ..
[HackCTF] gift
·
WriteUp/HackCTF
0x08048546 : push ebp 0x08048547 : mov ebp,esp 0x08048549 : push ebx 0x0804854a : add esp,0xffffff80 0x0804854d : call 0x8048480 0x08048552 : add ebx,0x1392 0x08048558 : push 0x3c 0x0804855a : call 0x80483f0 0x0804855f : add esp,0x4 0x08048562 : mov eax,DWORD PTR [ebx-0x4] 0x08048568 : mov eax,DWORD PTR [eax] 0x0804856a : push 0x0 0x0804856c : push 0x2 0x0804856e : push 0x0 0x08048570 : push eax..
[HackCTF] RTL_World
·
WriteUp/HackCTF
gdb를 이용해 파일을 디스어셈블시키자. 0x08048983 : push ebp 0x08048984 : mov ebp,esp 0x08048986 : sub esp,0xa0 0x0804898c : mov eax,ds:0x804b060 0x08048991 : mov DWORD PTR [esp+0xc],0x0 0x08048999 : mov DWORD PTR [esp+0x8],0x2 0x080489a1 : mov DWORD PTR [esp+0x4],0x0 0x080489a9 : mov DWORD PTR [esp],eax 0x080489ac : call 0x8048600 0x080489b1 : mov DWORD PTR [ebp-0x8],0x0 0x080489b8 : mov DWORD PTR [esp+0x4],0x..
[HackCTF] ROP
·
WriteUp/HackCTF
0x08048470 : lea ecx,[esp+0x4] 0x08048474 : and esp,0xfffffff0 0x08048477 : push DWORD PTR [ecx-0x4] 0x0804847a : push ebp 0x0804847b : mov ebp,esp 0x0804847d : push ecx 0x0804847e : sub esp,0x4 0x08048481 : call 0x804844b 0x08048486 : sub esp,0x4 0x08048489 : push 0xe 0x0804848b : push 0x8048530 0x08048490 : push 0x1 0x08048492 : call 0x8048340 0x08048497 : add esp,0x10 0x0804849a : mov eax,0x0..
d2n0s4ur
'HackCTF' 태그의 글 목록