분류 전체보기

GET 방식이란..? get, post 방식에 대한 설명은 다른 블로그 등에 잘 나와있으므로 자세히 하지는 않겠다. get 방식은 url을 통해 다른 페이지로 값을 전달하는 것을 말한다. get 방식으로 값을 전달할 경우 대상 페이지 url 맨뒤에 ?를 작성하고 키와 전달할 값을 넣는다. 여기서 키는 대상 페이지에서 전달된 값을 사용할 때 사용한다. 예) "https://dyp4r.php?id=admin" 위 예시 url은 dyp4r.php 페이지에 키 값은 'id'로 'admin'이라는 문자열 값을 전달하는 것이다. 해당 페이지에서는 키 값인 'id'로 'admin' 값을 사용할 수 있다. 만약 전달하고자 하는 값이 여러개라면 값들 사이를 &으로 구분지어서 전달할 수 있다. 예) "https://dyp..
-php 코드 작성- PHP 코드는 사이에 작성해야 한다. -출력- echo, print() 함수를 이용하면 어떤 문자나 문자열, 값, 변수 등을 화면에 출력할 수 있다. 정확히 말하면 화면에 출력한다기보다는 html 코드로 출력하는 것인데, 이때 출력할 값에 html 태그가 포함돼 있다면 해당 html 태그가 작동한다. 위 예제에서 . 기호는 문자열을 연결해주는 역할을 한다. 파이썬에서 문자열 사이에 + 기호가 있을 때의 작동을 생각하면 된다. 아래는 echo에 을 안 붙였을 때의 결과다. -자료형과 변수- 다른 언어들과 마찬가지로 int, float, string, boolean 등등의 자료형이 존재한다. 파이썬처럼 변수를 선언할 때 타입을 지정해줄 필요 없이 들어가는 값에 맞춰 자료형이 변한다. 변..
· CTF
Misc - Welcome misc의 1pt 문제 Welcome이다. 단순히 디스코드에 접속하기만 해도 flag를 준다. flag{W3Lcom3_7o_CS4w_D1ScoRD} Pwn - Alien Math 리버싱이 조금 필요한 간단한 시스템 해킹 문제다. 실행해보면 퀴즈 같은걸 내고 사용자의 입력을 받은 후 점수를 출력해주는 것 같다. main 함수를 확인해보면 rand 함수를 통해 값을 생성하고, 그 값이 사용자가 입력한 값과 같으면, 그 다음 단계로 넘어가는 것 같다. 하지만 srand 함수로 시드를 설정해주지 않았기 때문에 rand 함수는 항상 같은 값을 생성하게 된다. gdb로 확인해보면 생성되는 값은 0x6b8b4567인 것을 알 수 있다. 구한 값을 입력해보면 다음 단계로 넘어가는 것을 볼 수..
· CTF
Web - Basic (10 points) RTLxHA CTF 2021의 웹 카테고리의 Basic 문제다. 링크만 주어져 있다. 해당 링크로 들어가면 위 사진처럼 로그인 창이 뜨는데, 시험 삼아 sql injection을 이용한 인증 우회 공격을 시도해봤다. id : 1' or '1' = '1' -- pw : 1234 (
HackCTF의 RTC 문제다. 문제 명처럼 return to csu 기법을 사용해야한다. 덕분에 rtc 공격을 복습할 수 있는 좋은 경험이 됐다. 문제 파일로는 바이너리 파일과 libc가 주어진다. 바이너리를 실행해보면 "Hey, ROP! What's Up?"이라는 ROP에게 안부를 물어보는 문구가 출력되고 그 다음 줄에 입력을 받는다. 보호기법을 확인해보면 NX bit만 걸려있는 것을 볼 수 있다. full relro가 아니라 partial이기 때문에 got overwrite 기법도 사용 가능할 것이다. 일단 ida로 열어보겠다. 코드는 굉장히 간단하다. write 함수로 문구를 출력해준 뒤 read 함수로 0x200byte만큼 입력을 받는다. 딱봐도 overflow가 발생한다. 쉘을 얻게해주는 함수..
-실습 1-1- 이 실습은 Lab01-01.exe와 Lab01-01.dll 파일을 사용한다. 파일에 관한 정보를 얻으려면 1장에서 사용한 기법과 도구를 사용하고 다음 질문에 대답해보자. -질문- 1. http://www.virustotal.com/에 파일을 업로드한 후 보고서를 보자. 기존 안티바이러스 시그니처에 일치하는 파일이 존재하는가? Yes, exe, dll 모두 많은 백신이 트로이목마 악성코드로 진단하고 있다. Lab01-01.exe를 virustotal에 올리면 49개의 백신에서 악성코드로 진단하는 것을 볼 수 있다. AhnLab V3 백신이 맨 위에 보인다. Lab01-01.dll을 virustotal에 올리면 40개의 백신에서 악성코드로 진단하는 것을 볼 수 있다. 2. 이 파일은 언제 컴..
Win32 DLL -Kernel32.dll- 메모리 관리, 파일, 하드웨어 접근, 입출력 명령, 프로세스와 스레드 생성 등의 기능을 하는 API가 들어있다. Win32 프로그램 동작을 수행하는데 핵심적인 api들이 많이 들어있어 자주 사용하는 dll이다. -Advapi32.dll- 서비스 관리자, 레지스트리 같은 추가적인 핵심 윈도우 컴포넌트에 접근할 수 있다. -User32.dll- 창, 메뉴 같은 윈도우 사용자 인터페이스의 표준 요소들을 생성하고 다룬다. 또한 gui를 구현할 수 있게 해주고, 사용자 행위 제어와 반응 컴포넌트 등 모든 사용자 인터페이스 컴포넌트를 담고 있다. -Gdi32.dll- 그래픽 장치 인터페이스(GDI) 함수들이 있다. 그래픽 조작 관련 api들이 들어있다 생각하면 될 것 같..
HackCTF의 Look at me 문제다. 문제를 푼 뒤 다른 사람의 write up들을 확인했을 때, 내 풀이와 차이가 많이 나서 당황했다. (나는 sysrop로 풀었지만 다른 사람들은 mprotect 함수를 이용해 쉘 코드가 존재하는 주소에 실행 권한을 준 뒤, 해당 주소로 ret를 변조해 풀었다.) 문제 파일로는 바이너리 하나만 주어져 있다. 바이너리 파일을 실행해보면 "Hellooo..."가 첫 줄에 출력되고 두 번째 줄에서 사용자 입력을 받음을 알 수 있다. 보호기법은 nx bit만 걸려 있는 것을 알 수 있다. 또한 32bit 바이너리인 것을 알 수 있다. ida로 바이너리를 열어보면 함수가 엄청 많이 존재하는 것을 볼 수 있다. 이는 이 바이너리가 static linking 방식으로 컴파일..
HackCTF의 암호학 문제 Great Binary다. 머리 좀 식힐겸 한 번 풀어봤다. 문제 파일의 압축을 풀어보면 hoooo.txt 파일이 나온다. 이 txt 파일 안의 내용을 해독한다면 flag를 얻을 수 있을 것 같다. 이미지 안에는 딱봐도 2진수처럼 보이는 값들이 들어있다. 낮은 점수의 문제라는 점과 솔버(solver)수가 많은 것을 고려했을 때, 그냥 2진수를 10진수로 변환한 뒤 해당 10진수 값에 해당하는 아스키 문자를 구한다면 flag가 나오지 않을까 생각이 든다. with open('./hoooo.txt', 'r') as f: array = f.read().split(' ') for i in array: print(chr(int(i,2)), end='') print() 위와 같은 코드를..
이번에 풀이할 문제는 HackCTF의 SysROP문제다. 이름처럼 Syscall을 활용한 ROP 공격을 수행해야될 것 같다. 문제 파일로는 binary와 libc 파일이 주어져 있다. 바이너리 파일을 실행해보면 사용자의 입력만 받고 종료되는 것을 볼 수 있다. 보호기법은 NX bit만 걸려있다. main함수를 ida로 확인해보면 read 함수로 0x78byte만큼 buf에 입력을 받는데, 이 과정에서 overflow가 발생하는 것을 알 수 있다. nx bit가 걸려있기 때문에 rop 공격을 하는 식으로 가야겠지만, 문제는 출력해주는 함수가 없다. system 함수를 통해 쉘을 얻든, 원샷 가젯을 쓰든 libc base를 구해야지 가능한 것인데 leak를 위한 출력함수가 없기에 현재의 내 지식으로는 일반적..
dyp4r
'분류 전체보기' 카테고리의 글 목록 (2 Page)