본문 바로가기

CTF_78

[webhacking.kr] old-15(50) 풀이 [old-15] js - 들어가자 마자 Access_Denied 가 뜨며 webhacking.kr로 돌아간다. - request모듈을 통해 페이지 파싱을 해보았다. - alert("Access_Denied")라 뜨고 location.href를 통해 webhacking.kr로 돌아가게 된다.- flag는 ?getFlag로 들어가면 있는것 같다. - https://webhacking.kr/challenge/js-2/?getFlag를 입력하면 문제가 풀린다. 2020. 1. 30.
[webhacking.kr] old-14(100) 풀이 [old-14] js기초 - 바로 페이지 소스 부터 보자. - form 부분에서 check를 누르면 ck() 함수로 이동한다.- script를 보면 ck() 함수가 있고 ul 값과 내가 입력한 값이 맞으면 풀리게 된다. - console 창을 통해 자바스크립트 구문을 넣어주면 ul 값이 나온다.- 540을 입력하면 url이 https://webhacking.kr/challenge/js-1/?291600로 바뀌며 Clear! 2020. 1. 30.
[webhacking.kr] old-33(200) 풀이 [old-33] get, post, cookie 전송 - view-source를 눌러 소스 코드를 확인하자.- 뭔가 흰색 바탕이라 맘에 든다 ㅎ... - GET 방식으로 hehe를 보내면 된다. - get=hehe 를 url에 넣어 입력을 해주면 Next가 뜬다 (이때 까지만 해도 문제의 갯수를 몰랐다..) - 계속해서 view-source를 눌러보자. - 이번에는 POST 방식으로 hehe와 hehe2를 전송해주면 된다. - Edit as HTML 기능을 이용하여 form 태그를 작성 후 POST 방식으로 전송을 해주자. - Challenge 33-2 Clear ! - Next 를 누르자 - 계속해서 view-source를 누른다. - 이번에는 GET 방식으로 내 아이피 주소를 전송하면 된다.- 구글이.. 2020. 1. 26.
[webhacking.kr] old-26(100) 풀이 [old-26] urldecode 함수 활용 - view-source를 눌러 소스 코드를 확인하자. - admin을 preg_match를 통해서 비교를 한 후* preg_match에서 대소문자 구분이 없기 때문에 대문자를 이용하여 우회 가능하다.* 대소문자 구분을 하기 위해서는 preg_match("/admin/i",$_GET['id'])와 같이 i 옵션을 넣어 주어야 한다.- urldecode를 한 번 거치고 $_GET['id'] 와 admin 이 같으면 풀린다. - 처음 생각한 방법이다.. - urldecode 함수가 있으므로 a 를 %61로 우회하여 넣으면 될 것이라 생각했다..- 여기서의 문제점은 url로 id=%61dmin을 보낼때 한번 url decode를 거친다는 점이다.- 즉, $_GET[.. 2020. 1. 25.
[webhacking.kr] old-25(150) 풀이 [old-25] LFI 취약점 - 문제 25번에 들어가면 file 인자값으로 hello가 써져있다.- 밑에 textarea에는 hello world가 써져있다. - file에 flag를 쓰자 FLAG is in the code라는 글이 뜬다. - file에 index를 쓰자 아무 것도 없는 빈 칸이 뜬다. - file에 다른 값들을 넣으면 아무 것도 뜨지 않는다.- file에 flag.php나 hello.php를 입력해도 아무 것도 뜨지 않는다. - 위의 결과값으로 보아 file에 file명을 입력하면 자동으로 php가 붙어 include 되는 것 같다.- LFI 취약점을 이용하여 file에 구문을 넣어보자LFI(Local File Include) : include 구문을 통해 서버의 페이지를 inclu.. 2020. 1. 24.
[webhacking.kr] old-24(100) 풀이 [old-23] cookie 이용, str_replace 우회 - client ip 에는 나의 ip주소가 있고 agent에는 나의 인터넷 브라우저 정보가 적혀있다.- view-source를 통해 소스 코드를 보자 - 주목해서 봐야할 부분은 빨간 네모박스 부분 이다.- extract($_COOKIE);는 COOKIE에 있는 값을 변수로 만드는 것이다.- 예를들어 cookie에 REMOTE_ADDR : 123 이 들어 있으면, $REMOTE_ADDR의 변수에 123이 저장된다.- $REMOTE_ADDR = 123;- str_replace의 경우 이미 치환한 경우 다시 바꾸지 않는다. - 예를들어 str_replace("12","",$ip);에서 $ip = 1122 의 경우 $ip는 결과적으로 12가 된다.-.. 2020. 1. 16.
[webhacking.kr] old-23(200) 풀이 [old-23] eregi우회, xss - xss를 이용하는 문제이며 를 실행하면 문제가 풀리는것 같다. - 코드를 보면 GET 방식으로 입력을 받는다. - 역시 를 입력하면 no hack이라 뜬다. - 필터링 구문이 무엇인지 알기 위해 여러가지 문자를 넣어 보았다.- 허용 문자 : < - 필터링 문자 : sr, aa, im 등과 같이 문자+문자로 이루어진 조합 + xss 를 검색하다가 너무 생각이 안나서 구글링을 하여서 문제 풀이를 보았다.+ eregi우회를 통한 문제라고 한다. (요즘 eregi 함수는 주로 사용하지 않는다.)+ eregi의 취약점은 %00(URL)이 있으면 문자열 검사를 하지 못한다.+ 즉 aa는 no hack이 뜨지만 a%00a는 걸리지 않는다. - aa를 입력했을 때는, no h.. 2020. 1. 16.
[webhacking.kr] old-01(200) 풀이 [old-01] Cookie값 조작 - level : 1이 써져있으며, view-source를 눌러 페이지 소스코드를 볼 수 있다. - 페이지의 소스 코드이다.- is_numeric은 값이 숫자인지 확인하는 함수이다. $_COOKIE['user_lv']이 숫자가 아니라면 $_COOKIE['user_lv']를 1로 셋팅한다.- $_COOKIE['user_lv']이 6보다 크거나 같으면 $_COOKIE['user_lv']를 1로 셋팅한다.- $_COOKIE['user_lv']이 5보다 크면 문제가 풀린다.- $_COOKIE['user_lv']이 5보다 크고 6보다 작아야 하므로 5.1~5.9까지의 수를 $_COOKIE['user_lv']에 넣으면 된다. - 다시 문제 페이지로 돌아와 쿠키값을 확인한 뒤 us.. 2020. 1. 11.
[Suninatas] Web 07 풀이 (Requests모듈) [Web 07] _python requests 모듈 이용 이번에는 아이유 사진이 너무 크게 나와있어서 캡쳐를 하지 않았다..ㅠ 문제를 보면 맨 위에 Do U Like girls? 가 있고 아이유 사진, 중간에 YES 버튼, 맨 아래에 유나 사진이 있다. 힌트로는 Faster and Faster가 있고, YES 버튼을 누르면 Fail Your Too slow 라는 경고창이 뜬다..ㅠ 아무래도 페이지 로딩이 되고 바로 버튼을 눌러야 하는것 같다. python으로 코딩을 해보자. Requests 모듈 정리 import requestsURL='http://suninatas.com/challenge/web07/web07.asp'headers = {'Content-Type': 'application/json; ch.. 2019. 8. 16.
[Suninatas] Web 06 풀이 [Web 06] Hint 에 들어가면 suninatas의 글을 읽으라고 한다. suninatas의 README를 보면 위와 같은 팝업창이 뜨고 밑에는 쿼리문, 빈칸에 값을 입력하고 확인을 누르면 fail이 뜬다.. 다른곳에 힌트가 있나 싶어 다른 게시물을 봤는데 reference!에는 md5 암호화 사이트가 있고 Wating과 열공열공에는 알 수 없는 말만 있다. sql injection을 해봐야 겠다.. 기본적으로 몇개의 문자열은 필터링이 되고, 몇개는 안되는것 같다. '(싱글쿼터)를 막지 않아 입력을 하면 Worng Query가 뜬다. 이것을 이용하면 될 것 같다. 안막혀 있는 문자열을 확인해 보면, or ' - 등이 있다. 이것을 이용하면 된다. 문자열에 ' or '1' < '2' -- 를 .. 2019. 8. 15.
[Suninatas] Web 05 풀이 [Web 05] 빈칸에 어떠한 값을 넣고 Check를 눌러도 아무런 반응이 없다.. 페이지 소스를 보자. 스크립트 부분을 보면 eval(function(p,a,c,k,e,r) ... 이런식으로 작성이 되어있는데, 자바스크립트 코드가 페이지 소스에 보이지 않도록 난독화를 해놓은 것이다. 인터넷 사이트를 찾아보다 간단하게 자바스크립트 난독화를 풀수있는 해독화 사이트를 찾았다. https://www.strictly-software.com/unpack-javascript 이 사이트에 들어가 저 스크립트 부분을 넣고 Unpack 버튼을 누르면 해독화된 코드가 나온다. 코드를 보면 PASS함수에 n을 넣는다.. n의 값을 유추 하려다가 힌트에 있던 값이 생각났다. 이 값을 PASS에 넣으면 문자열이 반환된다. 나온.. 2019. 8. 15.
[Suninatas] Web 04 풀이 [Web 04] User-Agent는 현재 내가 사용하는 브라우저의 정보이다.Plus 버튼을 누르면 Point가 올라간다. 먼가 이상해서 페이지 소스를 보니 힌트에 Point를 50까지 만들어야 한다고 하고 SuNiNaTaS라는 글이 써져있었다.. 50까지 노가다를 하는줄 알고 Plus를 계속 누르다 보니 Point가 25에서 올라가지 않고, SuNiNaTaS 브라우저를 좋아한다는 경고창이 뜬다.. ㅠ 이 문제도 2번과 같이 Burp Suite나 Fiddler를 이용하여 정보를 변경해야한다. 하.. 위의 사진처럼 User-Agent: 부분을 SuNiNaTaS로 변경해 주면 Point가 올라간다. Burp Suite의 Repeater 기능을 이용하여 계속 보내주면 어느새 50 Point가 넘어가고 Auth.. 2019. 8. 15.
[Suninatas] Web 03 풀이 [Web 03] 문제에 들어가면 이렇게 떡하니 Notice 게시판에 글을 쓰라고 한다.. 뭔소린가 싶어 페이지 소스코드를 보니깐 아무 것도 없다.. 진짜로 Notice 게시판에 글을 써야하나보다.. ㅠ main을 눌러 Notice 게시판에 가보자. 우선 Notice 게시판의 URL은 /board/notice이다. 여기서도 아무리 찾아도 어떻게 글을 쓰는 것인지 알 수 없다.. ㅠ 혹시나 다른 게시판은 글쓰는 기능이 있는지 싶어 Free 게시판에 들어갔는데 다행히 write 버튼이 있었고 URL은 /board/free/write다. 이 URL로 Notice 게시판의 글쓰기는 /board/notice/write라고 추측할 수 있다. URL에 suninatas/board/notice/write를 입력하면 글을.. 2019. 8. 15.
[Suninatas] Web 02 풀이 [Web 02] 문제에 들어가면 ID 값과, PW 값을 넣고 Join을 눌러도 아무 변화가 없고, ID와 PW에 같은 값을 입력하면 You can't join! Try again 경고창이 뜬다. F12를 눌러 페이지 소스를 보자... ㅠ Join 버튼의 태그다. 버튼을 누르면 chk_form() 함수가 실행된다. script 부분의 chk_form()함수를 보자... ㅠ id값과 pw값을 받아와 같으면 경고창을 띄우고 아니면 submit()함수로 넘어간다. 그리고 script 태그 아래를 보면 힌트로 id = pw 라고 되어있다..? 즉, if( id == pw ) 를 통과한뒤 Burp Suite나 Fiddler를 이용하여 id값과 pw값을 같게 만들면 될 것 같다.. 하.. 맨 아래에 보이는 것처럼 i.. 2019. 8. 14.
[Suninatas] Web 01 풀이 [Web 01] 문제를 보면 빈칸에 문자열을 넣고 Check 버튼을 누르면 Request("str")에 의해 문자열이 str에 저장이 된다. 함수 들을 설명하면 Replace(str,"a","aad") 함수는 str에 저장되어 있는 문자열중 a를 aad로 변경한다. 예를들어 문자열 ad를 입력하면 Replace(str,"a","aad")의 결과값은 aadd가 된다. Mid(result,2,2) 함수는 result에 저장되어 있는 문자열의 2번째 부터 2글자를 자른다는 의미이다. 예를들어 abcd의 경우 bc 만 자르게 된다. result1 & reslut2 는 result1 + result2와 같다. 예를들어 result1=adm, result2=in 이면, result1&result2 의 결과값은 ad.. 2019. 8. 14.