Wargame Site
-
|webhacking.kr| #10Wargame Site/Webhacking.kr 2019. 7. 5. 10:46
O 에 마우스를 올려놓으면 yOu 로 변화되는 것을 볼 수 있다. 소스 보기를 통해 확인해보자 소스는 다음과 같다. document.querySelector("#hackme") 을 뽑아서 style.posLeft 를 적절히 조절해주면 될 것 같다. posLeft 가 증가한 뒤 800 이면 되기 때문에 799 로 준 뒤 접근하면 될 것 같다. 이제 클릭을 해주면 800 이 되면서 if 구문이 실행될 것이다. 클릭하면 Clear 된다~
-
|webhacking.kr| #9Wargame Site/Webhacking.kr 2019. 7. 5. 09:25
우선, 전체적인 구조를 파악하는 것이 우선이다. no = 1 일 때 no = 2 일 때 no = 3 일 때 여기서 알 수 있는 점은 SQL injection 이 발생할 것 같은 느낌이 든다는 것이다. no > 3 일 때 우선, no 에 걸려있는 filtering 목록을 뽑아내는 것이 우선일 것이다. 아주 간단하게 코드를 구성해보았다. ( + sleep 도 시도해봤습니다. ) 그 결과 다음과 같은 문법이 필터되지 않는 것을 알 수 있었다. if 를 통해서 접근하면 해결될 것 같은 느낌이 든다. 등호의 사용이 불가하기 때문에 like 로 대체해서 사용하면 될 것 같다. no=1 일 때의 id 값이 Apple 인 듯 하다. (만약 궁금하다면 이에 맞는 쿼리를 만들어서 날려보면 알 수 있다.) no 이 3 이었..
-
|webhacking.kr| #8Wargame Site/Webhacking.kr 2019. 7. 3. 19:13
User-Agent 라는 글자 뿐이다. 얼른 소스보기하자 ㅎㅎ index.phps 로 들어간다. User-Agent 를 받아온 뒤 막막 처리하는 것이 보인다. 우선 burp suite 를 켰다. 프록시 툴을 이용해서 User-Agent 를 변경하는 방식으로 진행한다. 다음과 같은 많은 문자들을 필터링하는 것을 볼 수 있다. 어떤 문자를 필터링 하고 있는지 천천히 정리해보도록하자. 코드를 분석해보면 두 개의 query 가 동작한다. Query 1 > select id from lv0 where agent=' ' Query 2 > insert into lv0(agent,ip,id) values('$agent','$ip','guest') 1 번은 lv0 Table 로 부터 특정 agent 의 id 를 가져오는..
-
|webhacking.kr| #7Wargame Site/Webhacking.kr 2019. 7. 2. 16:39
기존의 SQL injection 과 다른 점이 있다면 rand 를 사용한다는 점이다. rand 에서 무엇이 나오냐에 따라서 괄호의 사용 개수가 달라진다. 그냥 rand 가 1 일 때를 가정한 뒤, Query 를 만들어준다음 몇 번 시도하면 뚫리지 않을까? lv 로 2 가 나와야 하므로 union select 2 와 같은 문법을 사용해야할 것이다. select lv from lv1 where lv = () union select 3-1 () 와 같은 형식의 Query 를 사용하면 된다. 몇 번 새로고침을 한 결과.. 계속 Not Acceptable 이 뜨는 것이다.. Webhacking.kr 의 몇몇 안 풀리는 문제 중 하나라고 한다..... 여느 Wirte Up 과 비교해보니 풀이방법은 맞은 것 같다. ..
-
|webhacking.kr| #6Wargame Site/Webhacking.kr 2019. 7. 2. 15:50
PHP Code 를 분석해보면, 위와 아래 두부분으로 나눌 수 있다. 위 부분은 val_id, val_pw 를 20번의 Base64 encoding 을 한 뒤, str_replace 를 거쳐 Cookie 에 그 값을 저장하는 코드이며, 아래 부분은 Cookie 값을 읽어와서 str_replace 를 통해 되돌리며 20번의 Base64 decoding 을 하는 과정이다. 클리어 조건을 보니 decode_id 와 decode_pw 의 결과가 "admin" 이면 된다. 그럼 그냥 코드를 복사해서 "guest / 123qwe" 를 "admin / admin" 으로 바꿔보자. http://phptester.net/ PHPTESTER - Test PHP code online Lorem Ipsum alternativ..
-
|webhacking.kr| #5Wargame Site/Webhacking.kr 2019. 7. 2. 14:59
좌측의 Login 을 클릭하면 다음과 같은 페이지가 나온다. 우측의 Join 을 클릭하면 다음과 같은 페이지가 나온다. 하지만, join 을 누르면 Access_Denied 를 볼 수 있다. 혹시나 불충분한 인가의 가능성을 믿고 mem/join.php 으로 접근해보았다. 그랬더니 접근이 가능했다. 다음과 같은 난독화 script 가 있어서 변환을 시켜주었다. if( eval(document.cookie).indexOf(oldzombie) == -1 ) { bye; }; if( eval(document.URL).indexOf(mode=1) == -1 ) { alert('access_denied') }; else{ [ Join ] } Join 으로 들어가기 위해서 필요한 두 가지 조건이 있다. cookie ..
-
|webhacking.kr| #4Wargame Site/Webhacking.kr 2019. 7. 2. 13:05
딱봐도 Base64 Decode 문제일 것이라는 생각을 떨칠 수 없다. c4033bff94b567a190e33faa551f411caef444f2 하지만, 회원가입에서 Base64 를 세 번 해서 공유기의 IP 를 암호화한 것처럼 명확한 결과가 나오지 않는다. 또 한번 Decode 를 해야한다. 암호문의 길이가 40 인 알고리즘이 뭐가 있을까? 길이가 40 이라는 것은 한 글자 당 4 bit 니까 160 bit 의 암호길이를 가지는 알고리즘으로 되어있을 것이다. 160 bit 의 암호문을 가지는 알고리즘은 SHA-1 이다. Decode 사이트에 돌려보면 디코드 할 수 있다. https://hashkiller.co.uk/Cracker/SHA1 SHA1 Cracker Page - Over 312.072 bil..