분류 전체보기
-
[Webhacking.kr] Challenge 27Wargame/Webhacking.kr 2023. 4. 23. 06:51
Challenge 27을 풀어보자. 문제 화면을 보면 SQLi 문제라는 것을 바로 알 수 있다. 특별히 입력을 하기 보다는 빠르게 페이지 소스를 보도록 하자. 필터링이 되는 것은 #, select, (, 공백, limit, =, 0x 이다. no에 알맞는 값을 넣어주면 되는데 admin의 no 값이 2라는 힌트가 있다. 이 정보들을 이용해서 SQLi를 수행하면 문제가 해결된다. 이번 문제는 간단하게 해결이 가능하다. 공백은 /**/이라는 주석 기호로 우회하도록 하자. 그리고, 주석 처리는 #이 필터링되고 있으므로 다른 방법인 ;%00을 이용해보자. = 기호는 like를 이용해 우회하고, admin은 우회할 필요가 없었는데 이제 보니 우회를 해버렸다.. 위의 정보를 토대로 작성한 쿼리문은 2)/**/or/..
-
[pwnable.kr] Level 8 - legWargame/pwnable.kr 2023. 4. 23. 06:33
Level 8 - leg를 풀어보자. 문제를 보면 아빠는 arm을 공부하라고 하는데, 본인은 leg를 더 선호한다고 한다. (study가 공부가 아닐 수도 있지만 그냥 넘어가도록 하자.) 우선 문제에서 알려준 파일들을 다운로드하기 위해 Kali에서 wget을 사용한다. 파일을 알아보기 전에, ssh로 접속을 하여 동작을 보도록 하자. leg 파일을 실행하니, 문구가 출력되고 입력을 받고 있다. 'test'를 입력하자 하나의 문장이 출력되고 나서 프로그램이 종료된다. 동작을 봤으니, ssh 접속을 종료하고 다운로드 받았던 파일들을 보도록 하자. 먼저 leg.c 파일을 보니, key1, 2, 3의 함수가 있고 main 함수를 실행하고 있다. 이 key 함수들은 모두 어셈블리어로 되어 있는데, 문제에서 언급한..
-
[Webhacking.kr] Challenge 32Wargame/Webhacking.kr 2023. 4. 9. 20:21
Challenge 32를 풀어보자. 문제 화면을 보면 RANK와 NAME, Hit가 있다. 이름별로 점수에 따른 순위가 정해진 것 같은데, 찾아보면 내가 로그인한 아이디도 있다. 아마도 사이트에 등록된 계정들이 있는 것 같다. 우선은 아무 이름이나 클릭을 해보았다. 그랬더니 맨 위에 위치한 이름의 Hit가 78 / 100 에서 79 / 100으로 바뀌었다. 클릭을 할 때마다 점수가 오르는 것 같다. 그래서 100 / 100을 만들기 위해 더 클릭을 해보았지만, 점수가 오르지 않았다. 더 이상의 힌트는 없는 것 같으니 코드를 보도록 하자. 코드에서도 특별한 힌트는 없는 것 같다. 마우스를 올렸을 때, 색깔이 변한다거나, 클릭을 하면 hit라는 파라미터로 옮겨진다는 것 정도만 알 수 있다. 두 번의 클릭이 ..
-
[pwnable.kr] Level 7 - inputWargame/pwnable.kr 2023. 4. 9. 13:29
Level 7 - input을 풀어보자. 문제를 보면 자신의 입력을 컴퓨터 프로그램에 전달하는 방법을 묻고 있는 것 같다. Kali에서 ssh로 해당 문제에 접속을 해보도록 하자. 존재하는 파일들을 보면, flag와 input 파일 그리고 input의 소스 코드가 있다. 우선 input 파일을 실행해보자. 파일을 실행하면 문구가 3줄 나오는데, 맞는 입력을 하면 flag를 얻을 수 있다고 한다. 어떤 입력이 맞는건지 알아봐야 하므로, 소스 코드를 보도록 하자. 이전 문제들보다 긴 코드가 나오는데, 총 5개의 Stage로 나누어져 있다. 하나씩 살펴보면서 문제를 풀어보도록 하자. Stage 1은 argv에 관한 것이다. 이 단계를 클리어하기 위해서는 먼저 argc, 즉 입력 인자의 갯수가 100개여야 한다..
-
[pwnable.kr] Level 6 - randomWargame/pwnable.kr 2023. 4. 9. 11:37
Level 6 - random을 풀어보자. 문제를 보면 프로그래밍에서 어떻게 무작위 값을 사용할 수 있는지 물어보는 것 같다. Kali에서 ssh로 해당 문제에 접속을 해보도록 하자. 존재하는 파일들을 보면, flag와 random 파일 그리고 random의 소스 코드가 있다. 우선 random 파일을 실행해보자. 파일을 실행했을 때, 아무런 변화가 없어 임의의 값 'test'를 입력해보았다. 그랬더니 틀렸다고 나타나며, 2^32 번의 시도를 해야될 수 있다고 알려준다. 그 정도의 시도를 할 수는 없으므로 파일을 분석해보도록 하자. 먼저 random.c 파일을 확인해보자. 소스 코드를 보면 rand() 함수에 의해 random 값이 주어지고, key 값을 입력한다. 입력하는 값인 key와 random 값..
-
[Webhacking.kr] Challenge 38Wargame/Webhacking.kr 2023. 4. 9. 11:22
Challenge 38 을 풀어보자. 문제 화면을 보면 LOG INJECTION이라는 문구가 반겨준다. 그 외에 입력 창과 'Login' 버튼이 있는 것 말고는 다른 힌트는 없는 것 같다. 소스 페이지로 가는 링크가 없으므로 크롬의 개발자 도구로 코드를 보도록 하자. 페이지 코드를 보면, form으로 index.php에 post를 하고 있다. 그런데 주석 처리된 부분을 보면 admin.php 페이지가 따로 있는 것 같다. 저 페이지를 확인해보도록 하자. admin.php는 log viewer 페이지라고 되어 있다. 이전 문제 화면에서 입력을 했을 때, ip와 입력 값을 보여주는 페이지인 것 같다. (admin.php 입력) 문제 해결을 위해서는 'admin'으로 로그인을 해야 한다고 알려 준다. 다시 원..
-
[Webhacking.kr] Challenge 24Wargame/Webhacking.kr 2023. 4. 9. 10:56
Challenge 24를 풀어보자. 문제 화면을 보면 client ip와 agent가 표시되어 있으며 Wrong IP!라는 문구가 출력되어 있다. 특별한 힌트는 없는 것 같으므로, 소스 코드를 보도록 하자. 소스 코드를 보면 ip 변수가 '127.0.0.1'이 되면 문제가 해결된다. ip는 REMOTE_ADDR에서 가져 오는데, str_replace 함수로 인해 필터링을 거친다. 그리고 이 문제에서 가장 중요한 것은 extract 함수이다. SERVER와 COOKIE에 대해 사용하고 있는데, 이 함수는 보안에 취약해 현재 사용하지 않는 함수라고 한다. 취약한 점으로는 이 함수를 이용하여 변수 선언을 하면, 내부의 변수를 덮어버릴 수 있다고 한다. extract 함수를 좀 더 이해하기 위해 아래의 사진을 ..
-
[Webhacking.kr] Challenge 18Wargame/Webhacking.kr 2023. 4. 9. 10:41
Challenge 18을 풀어보자. 문제 화면을 보면 노골적으로 SQLi 문제라는 것을 알 수 있게 한다. 소스 페이지를 보는 링크가 있으므로, view-source를 보도록 하자. no 파라미터에 값을 넣어 공격을 수행할 수 있을 것 같다. 그런데 preg_match에 다른 필터링도 있지만, 공백과 괄호를 필터링 중이다. 이것을 우회할 수 있는 쿼리를 입력해야 문제를 해결할 수 있다. 공백 필터링을 우회하는 많은 방법들(%09, %0a, %0b, %0d, /**/, ...)이 있다. 그 중에서 %0a를 이용해 이번 문제를 해결해보도록 하겠다. 우선 기존에 입력되어 있던 select 문의 where 조건의 and 를 끝내기 위해 ''(%27%27)을 입력했다. 그 후 %0a로 줄을 바꾸면서 입력을 진행하..