전체 글
-
Dreamhack - Simple Patch Mewargame/Dreamhack 2024. 11. 26. 12:06
[LEVEL 1 - Simple Patch Me - reversing] 실제 시간으로 365일이 지나면 플래그를 출력하는 프로그램이 주어진다.프로그램을 패치하여 플래그를 획득하라고 되어있다. 일단 ida로 열어보면 main함수가 위와 같이 나온다.위 프로그램은 8760시간(365*24)이 지나지 않으면 1시간동안 sleep하고, 그 후 변수가 1 증가한다. dword_40404C를 8760으로 바꾸거나 sleep(0)으로 바꾸면 플래그를 얻을 수 있을 것으로 보인다.플래그를 출력하는 함수로 들어가본다. 개인적으로 그냥 궁금해서 __readfsqword() 함수가 뭔지 찾아보았다. https://learn.microsoft.com/ko-kr/cpp/intrinsics/readfsbyte..
-
CodeUp - 1018, 1019, 1020, 1021, 1022study/coding study 2024. 11. 19. 22:41
[기초 100제 - C언어] 1018 : [기초-입출력] 시간 입력받아 그대로 출력하기(설명)어떤 형식에 맞추어 시간이 입력될 때, 그대로 출력하는 연습을 해보자.참고scanf( ) 함수는 지정한 형식(format)에 따라 입력받는 함수이다.따라서, 입력받고자 하는 형식으로 표현해주면 된다.예시scanf("%d:%d", &h, &m); //콜론(:) 기호를 기준으로 두 수가 각 변수에 저장된다. 1019 : [기초-입출력] 연월일 입력받아 그대로 출력하기년, 월, 일을 입력받아 지정된 형식으로 출력하는 연습을 해보자. 1020 : [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기주민번호는 다음과 같이 구성된다.XXXXXX-XXXXXXX앞의 6자리는 생년월일(yymmdd)이고 뒤 7자리는 ..
-
Dreamhack - [wargame.kr] strcmpwargame/Dreamhack 2024. 11. 13. 14:11
[LEVEL 1 - strcmp - web] strcmp 함수를 우회하면 플래그를 얻을 수 있는 문제이다. 문제 환경에 접속하면 위와 같이 나온다. view-source를 클릭해보면 위와 같은 코드를 볼 수 있다. php 관련해 알고 있는 취약점이 없어서 구글링을 통해 알아본 결과 특정 버전의 php에서 strcmp()의 인자값으로 배열을 넣으면 NULL이 반환된다고 한다.또한 php는 NULL과 0을 ==로 비교할 때 True를 반환한다고 한다. 따라서 위의 하이라이트된 password 부분을 password[]과 같이 배열로 수정한다. 이제 chk 누르면 바로 위와 같이 플래그가 나온다. 플래그를 획득했다!
-
Dreamhack - [wargame.kr] fly me to the moonwargame/Dreamhack 2024. 11. 13. 14:01
[LEVEL 1 - fly me to the moon - web] 이 문제는 자바스크립트로 구현된 게임이 주어진다. 문제 환경에 접속하면 위와 같은 화면이 나온다. 게임이 종료될 때마다 개발자 도구의 네트워크 탭에서 high-scores.php가 생기는 걸 볼 수 있다.token.php는 10초마다 생겨난다.그리고 이 게임은 31337점에 도달해야함을 알 수 있다. 위는 burpsuite로 문제 환경에 접속한 후 게임이 종료되는 순간의 모습이다. 우클릭해서 send to repeater한 화면이다.score값을 목표값인 31337로 바꿔주고 send를 누르면 우측과 같이 Congratulations와 함께 플래그가 나온다. 플래그를 획득했다!
-
CodeUp - 1012, 1013, 1014, 1015, 1017study/coding study 2024. 11. 12. 23:04
[기초 100제 - C언어] 1012 : [기초-입출력] 실수 1개 입력받아 그대로 출력하기(설명)실수형(float)로 변수를 선언하고 그 변수에 실수값을 저장한 후저장되어 있는 실수값을 출력해보자.참고float x;scanf("%f", &x);printf("%f", x);와 같은 방법으로 가능하다. 1013 : [기초-입출력] 정수 2개 입력받아 그대로 출력하기(설명)정수(int) 2개를 입력받아 그대로 출력해보자.참고int a, b;scanf("%d%d", &a, &b); //엔터/공백으로 입력 데이터가 구분되어 입력printf("%d %d", a, b);와 같은 방법으로 가능하다. 1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명)2개의 문자(ASCII COD..
-
CodeUp - 1006, 1007, 1008, 1010, 1011study/coding study 2024. 11. 5. 23:04
[기초 100제 - C언어] 1006 : [기초-출력] 출력하기06(설명)이번에는 특수문자 출력에 도전하자!!다음 문장을 출력하시오."!@#$%^&*()"(단, 큰따옴표도 함께 출력한다.)참고% 기호가 앞에 붙는 문자를 형식 지정자(format specifier)라고 하며,그 위치에서 지정한 형식으로 값을 출력해 준다.따라서, 퍼센트 문자 %를 출력하기 위해서는 %%로 출력해 주어야 한다.예시printf("%%");** 주의 : 본 화면에서 복사하여 붙여넣기하면 제대로 되지 않을 수 있으니 직접 작성해야한다. 1007 : [기초-출력] 출력하기07(설명)윈도우 운영체제의 파일 경로를 출력하는 연습을 해보자. 파일 경로에는 특수문자들이 포함된다.다음 경로를 출력하시오."C:\Download\hel..
-
Dreamhack - php-1wargame/Dreamhack 2024. 11. 5. 21:57
[LEVEL 1 - php-1 - web] php로 작성된 Back Office 서비스에서 LFI 취약점을 이용해 플래그를 획득할 수 있고, 플래그는 /var/www/uploads/flag.php에 있다고 한다. 25번째 줄을 보면 따로 page는 따로 필터링하고 있는게 없다. list.php 내용이다. 여긴 필요한 정보는 없다. 여기서는 flag, : 필터링에 걸리면 Permission denied가 뜰 것이다. 문제 환경에 접속한 화면이다. List에 flag.php랑 hello.json이 있는데 flag.php는 앞서 코드에서 미리 본 것처럼 Permission denied가 뜬다. 즉, 공격 페이로드를 아무리 넣어도 필터링에 걸린다는 뜻이다. 필터링이 없는 메인..
-
Dreamhack - simple-sstiwargame/Dreamhack 2024. 11. 5. 21:32
[LEVEL 1 - simple-ssti - web] 존재하지 않는 페이지 방문 시 404 에러를 출력하는 서비스에서 SSTI 취약점을 이용해 플래그를 획득해야 한다. 문제에서 주어진 app.py이다.render_template_string()로 인해 템플릿 구문이 해석되어서 SSTI 취약점이 발생할 수 있다는 점을 인지하고 일단 문제 환경으로 접속한다. 문제 환경에 접속하면 위와 같이 나온다. 404Error 페이지에 들어왔는데 이렇게 뜨길래 Jinja Template에서 자주 쓰이는 공격 페이로드 중 {{config}}를 사용해본다. 바로 플래그값을 바로 확인할 수 있다. 플래그를 획득했다!