[Webhacking.kr] Old - 13 Write Up
2021. 6. 16. 20:37
워게임/webhacking.kr
어떤한 기능을 가진 페이지인지는 한번에 파악을 못 했지만, 힌트로 SQL Injection 문제라고 알려주고 있다. HTML 코드를 살펴봤지만 힌트로 보이는 것은 없었다. 그래서 나는 일단 값을 보내서 어떤 결과를 출력하는지 살펴봤다. 1을 보내니, Result 값으로 1이 출력되었다. 1말고 다른 정수들을 넣어봤지만, 결과는 0이 출력되었다. 아마 False 값으로 0이 출력되는 듯하다. True로 만들어서 보내니, 1이 출력되었다. 일단 직접 확인한 테이블 안에 있는 no는 1밖에 없는 것으로 보인다. SQLi을 진행하기 전에 필터링되는 문자들을 찾아봤다. 직접 손으로 테스트를 해보니, 공백, =, like, >, >>', columnName) return columnName url = 'https:..
[Webhacking.kr] Old - 9 Write Up
2021. 6. 14. 18:26
워게임/webhacking.kr
Webhacking.kr Write Up Old - 9 패스워드와 페이지 넘버가 있었다. 문제를 파악하기 위해 각 페이지를 확인을 해봤다. No 3번 페이지에서 힌트가 주어졌다. 컬럼이 id와 no이 있다는 것이다. 그리고 no 3의 id는 password라는 중요한 단서를 주어졌다. 위 정보를 활용하여 no 파라미터에 SQLi를 삽입하여 no 3의 id를 찾아보도록하겠다. 일단 필터링되는 문자를 찾아보도록 하겠다. 직접 값을 넣어보면서 확인해보니, ', 공백, Select, From, =, >,
[Webhacking.kr] Old - 45 Write Up
2021. 6. 11. 05:43
워게임/webhacking.kr
어디서 많이 본 페이지가 나왔다. 디폴트 값을 Get 메소드로 서버에 보내니, id가 출력되었다. 코드가 주어져서 확인을 해봤다. if($_GET['id'] && $_GET['pw']){ $db = dbconnect(); $_GET['id'] = addslashes($_GET['id']); $_GET['pw'] = addslashes($_GET['pw']); $_GET['id'] = mb_convert_encoding($_GET['id'],'utf-8','euc-kr'); if(preg_match("/admin|select|limit|pw|=|/i",$_GET['id'])) exit(); if(preg_match("/admin|select|limit|pw|=|/i",$_GET['pw'])) exit();..
[Webhacking.kr] Old - 40 Write Up
2021. 6. 8. 06:20
워게임/webhacking.kr
문제 페이지에 들어가니, 3개의 파라미터로 로그인을 하는 페이지가 나왔다. Input의 Value가 지정되어 있어서 값들이 채워져 있다. 디폴트 값을 확인해보니, type이 Password라서 안보였던 값이 볼 수 있었다. 디폴트 값인 No = 1, Id = guest, Pw = guest로 로그인을 시도하니, Get 메소드로 파라미터가 전달되고 ‘Success - guest’가 출력된 후 로그인 페이지로 리다이렉트되었다. 나는 순서상 No이 가장 먼저 있어서 쿼리문에 들어가는 것도 No가 먼저 들어갈 거라는 추측으로 다양한 시도를 해봤다. 그 중 하나로 no의 값을 1말고 다른 숫자를 넣어봤지만, Failure이 출력되었다. 많은 숫자들 중에서 오직 0만 아무 출력도 되지 않고 그대로 리다이렉트를 하였..
[Webhacking.kr] Old - 28 Write Up
2021. 6. 7. 18:13
워게임/webhacking.kr
파일 업로드 페이지가 나왔다. Flag가 안 나올 것을 알지만, flag.php 파일을 클릭하여 출력해봤다. 새 하얗다… 아무것도 출력이 안됐다. 아마도 PHP 코드 안에 flag가 있는데 PHP가 실행되어서 아무것도 나오지 않는 듯 하다.. “그렇다면, 웹쉘을 업로드하면 웹쉘이 작동될까?”라는 생각을 하고 웹쉘을 업로드하였다. PHP가 실행되지 않고, 읽기 모드로 브라우저에 출력되었다. flag.php는 실행되면서, 내가 올린 파일은 실행도 안된다는 것에 한탄을 하면서 flag.php의 php 비활성화 방법을 찾아봤다. 1시간이 넘는 시간 동안 인터넷에 검색과 내가 알고있는 방법을 동원해도 통하지 않아서, 결국 다른 사람의 풀이 참고하였다. 다른 사람들은 .htaccess를 통해 간단하게 php 비활성..
[Webhacking.kr] Old - 22 Write Up
2021. 6. 7. 18:11
워게임/webhacking.kr
Admin으로 로그인하는게 이번 문제의 미션이다. 혹시 guest 계정도 있을 것을 같아서 guest/guest로 로그인 시도하니, Login Fail이 출력되었다. admin/admin으로 로그인을 시도하니, 이번 역시 Login Fail이 출력되었다. 이번엔 SQLi를 시도하니, 패스워드가 틀렸다고 출력되었다. False를 삽입하면 어떻게 되는지 궁금하여, admin' and 1=0#를 넣어서 시도하였다. True의 값과 다른 출력을 볼 수 있었다. 이것을 이용하여 Blind SQLi를 시도할 수 있을 것 같다. 로그인이 성공하면 어떤 결과가 나오는지 궁금하여, Join 페이지에 들어가서 lrtk/lrtk으로 계정을 만들었다. 로그인을 해보니, 패스워드의 해시값이 출력됐다. 해당 해시의 길이가 32 ..
[Webhacking.kr] Old - 2 Write Up
2021. 6. 4. 17:57
워게임/webhacking.kr
아무 반응이 없어서 코드를 확인해보니, 주석으로 시간과 admin 페이지가 표시되어 있었다. Admin 페이지에 들어가니, 비밀번호를 입력하는 Form이 있었다. 그래서 SQLi 문제인 듯하여, '를 넣음으로써 Error를 일으켜서 Error를 출력하려고 했다. 하지만, ' 포함하여 다양한 값들을 넣어지만 똑같은 Alert창이 출력되었다. 공격 백터가 Admin의 입력 Form이 아닌 듯하여, 다른 백터를 찾아봤다. 쿠키를 보니 Time이라는 쿠키를 볼 수 있었다. 해당 쿠키값을 True로 변경하니, 주석으로 표시된 시간이 변경이 되었다. 이번에는 False로 변경하여 확인하니, 이번에도 시간이 변경되었다. True와 False의 결과를 비교하니, 시간의 초 부분이 변경이 되었다. 그런데 보다가 True..
[Webhacking.kr] Old - 50 Write Up
2021. 6. 3. 14:31
워게임/webhacking.kr
SQLi 공격이 문제가 나왔다. if($_GET['id'] && $_GET['pw']){ $db = dbconnect(); $_GET['id'] = addslashes($_GET['id']); $_GET['pw'] = addslashes($_GET['pw']); $_GET['id'] = mb_convert_encoding($_GET['id'],'utf-8','euc-kr'); foreach($_GET as $ck) if(preg_match("/from|pw|\(|\)| |%|=|>|| \', \", \\, \0\0 preg_match 함수 : union 지금까지는 못봤던, mb_convert_encoding 함수가 보였다. 해당 mb_convert_encoding($_GET['id'],'utf-8','e..