분류 전체보기
-
DreamHack 2단계 php-1DreamHack 2021. 8. 7. 18:10
DreamHack 2단계 php-1 문제를 풀어보겠다. 플래그가 /var/www/uploads/flag.php 에 있다는 것을 알 수 있다. index.php 에서 main.php 를 include 함수를 통해 GET 방식으로 불러온다는 것을 볼 수 있다. view.php 에서 flag 문자열을 필터링하여 접속할 수 없게 해놓은 것을 볼 수 있다. flag.php 파일은 Permission denied 되어있는 것을 볼 수 있다. flag 필터링을 우회하는 기법중 php wrapper 가 있다.. 여기서 파일에 대한 filter 를 사용하여 flag.php 파일을 출력할 것이다. http://host1.dreamhack.games:9636/?page=php://filter/convert.base64-en..
-
DreamHack 2단계 image-storageDreamHack 2021. 8. 6. 16:18
DreamHack 2단계 image-storage 문제를 풀어보겠다. 파일 upload 는 upload.php 에서 동작하는데, 필터링에 대한 부분이 없다는 것을 볼 수 있다. 업로드를 하면, list 에서 업로드 한 파일을 볼 수 있는데, 이는 list.php 를 보면, 값을 출력해준다는 것을 볼 수 있다. 위 그림과 같이 flag.txt 를 출력하기 위해서 system 함수를 활용한다. 파일을 저장하고 업로드를 한다. list.php 로 이동하면, 업로드 한 파일들이 나오는데, upload.php 를 보면, 이렇게 FLAG 가 출력된다.
-
DreamHack 2단계 csrf-1DreamHack 2021. 8. 3. 16:48
DreamHack 2단계 csrf-1 문제를 풀어보겠다. 접속을 하면 네 페이지가 나오는데, vuln 함수에서 script 문이 * 로 필터링 된다는 것을 볼 수 있다. memo 함수는 flag 에 입력한 값이 성공시 출력되는 페이지이다. 왜냐하면, memo 함수에서 이미 hello 라는 문자열이 있기 때문에 쿠기 값이 존재한다고 생각할 수 있다. notice flag 함수는 admin 계정 권한에 속한다는 것을 알 수 있다. flag 함수는 스크리브 언어를 기입하여, 공격하는 페이지이다. 이렇게, 각각의 페이지를 확인할 수 있다. read_url 함수를 보면 이 함수에서 쿠키가 생성되고, domain 이 127.0.0.1:8000 이다. 우리가 제공받은 주소와 포트도 다르기 때문에 쿠키 값에는 저장되어..
-
DreamHack 1단계 basic_exploitation_003DreamHack 2021. 7. 30. 16:30
DreamHack 1단계 basic_exploitation_003 문제를 풀어보겠다. 위 그림에서 NX 보호 기법이 활성화 되어있음에 따라 쉘 코드가 실행되지 않다는 것을 알 수 있다. 또한, RELRO 가 Partial 로 되어있는 것으로 보아 GOT Overwrite 가 가능하다는 것을 알 수 있다. 특징으로 함수 호출 시, 해당 함수의 주소를 알아와서 쓰기가 가능하다는 것이다. - PLT 는 코드, GOT 는 주소 값이 저장된 공간 main 함수 : heap_buf 에 0x80만큼 사이즈가 동적 할당되는데, 128 바이트가 동적 할당되고, stack_buf 에 0x90만큼 할당되는데, 144 바이트가 할당된다. 그리고 initialize 함수가 실행되고, gets 로 buf 를 입력을 받는다. in..
-
DreamHack 1단계 basic_exploitation_002DreamHack 2021. 7. 15. 16:33
DreamHack 1단계 basic_exploitation_002 문제를 풀어보겠다. 위 그림에서 NX 보호 기법이 활성화 되어있음에 따라 쉘 코드가 실행되지 않다는 것을 알 수 있다. 또한, RELRO 가 Partial 로 되어있는 것으로 보아 GOT Overwrite 가 가능하다는 것을 알 수 있다. 특징으로 함수 호출 시, 해당 함수의 주소를 알아와서 쓰기가 가능하다는 것이다. - PLT 는 코드, GOT 는 주소 값이 저장된 공간 main 함수 : buf 에 0x80만큼 사이즈가 할당되는데, 128 바이트가 할당된다. 그리고 initialize 함수가 실행되고, gets 로 buf 를 입력을 받는다. initialize 함수를 보면, 실행되고 30초가 지나면 Time Out 메시지를 출력하고 프로..
-
DreamHack 1단계 basic_exploitation_001DreamHack 2021. 7. 14. 14:07
DreamHack 1단계 basic_exploitation_001 문제를 풀어보겠다. 위 그림에서 NX 보호 기법이 활성화 되어있음에 따라 쉘 코드가 실행되지 않다는 것을 알 수 있다. main 함수 : buf 에 0x80만큼 사이즈가 할당되는데, 128 바이트가 할당된다. 그리고 initialize 함수가 실행되고, gets 로 buf 를 입력을 받는다. initialize 함수를 보면, 실행되고 30초가 지나면 Time Out 메시지를 출력하고 프로그램을 종료한다. read_flag 함수 : system 명령어로 flag 값을 보여준다는 것을 알 수 있다. 즉, 호출하는 부분이 없으므로, 강제로 호출해야 한다. 스택의 기본 구조는 Buffer + SFP (4Byte) + RET (4Byte) 이다. ..
-
DreamHack 1단계 basic_exploitation_000DreamHack 2021. 7. 14. 13:04
DreamHack 1단계 basic_exploitation_000 문제를 풀어보겠다. main 함수 : buf 에 0x80만큼 사이즈가 할당되는데, 128 바이트가 할당된다. 그리고 initialize 함수가 실행되고, printf 로 buf 의 주소를 출력해주고, scanf 를 통해서 입력을 받는다. initialize 함수를 보면, 실행되고 30초가 지나면 Time Out 메시지를 출력하고 프로그램을 종료한다. buf 의 크기는 128 바이트가 할당되는데 scanf 로 입력받는 바이트는 141 바이트이므로, 버퍼 오버플로우(BOF) 가 발생할 수 있다. 스택의 기본 구조는 Buffer + SFP (4Byte) + RET (4Byte) 이다. buf 의 크기는 128 Byte 이고 SFP 의 크기는 4..
-
DreamHack 1단계 path traversalDreamHack 2021. 7. 11. 20:51
DreamHack 1단계 path traversal 문제를 풀어보겠다. Path traversal 취약점은 디렉터리 인덱싱과 비슷한 문제이다. 입력된 userid 값은 위 그림에서 볼 수 있듯이, /api/user/{userid} 에 저장된다. FLAG 는 /api/flag 에 저장이 된다. 저장된 값은 /api/user/{userid} 에 FLAG 값은 /api/flag 에 저장이 되기 때문에, ../flag 를 입력해보겠다. ../flag 을 입력하고 보면, 실패한 것을 알 수 있다. 실패한 이유를 보기 위해, Burp Suite 를 실행시키고 Intercept ON 으로 한다. View 를 클릭하면, userid = undefined 로 되어있는 것을 알 수 있다. undefined 를 ../fla..