0x.Wargame/WebHacking.kr
-
0x15.webhacking.kr - 320x.Wargame/WebHacking.kr 2018. 3. 24. 13:00
0x15.webhacking.kr - 32 초반 분석을 잘 못해서 상당히 고민한 문제였다. 문제는 다음과 같이 생겼고, 순위가 있고 이름과 hit가 있다. 아마 이 hit를 올려야 되는 문제 같다. 마지막 부분에 join이 있는데, 눌러보았더니 이름이 리스트에 추가가되었다. 소스코드로 뜯어보니 저 부분을 누르면 ?hit=pwnwiz 가 href 되는데, no라는 문구가 뜬다.여기서 초반 분석을 잘 못 한 것이 1/100으로 오르는것을 확인하지 못하고 계속 시도를 해서 왜 no가 뜰까라는 삽질을 했다. 생각을 하다가 쿠키값을 확인해보았는데, vote_check라는 부분이 있었고 Ok라는 값이 들어가있었다. 이 값을 지워보았더니 ?hit=pwnwiz를 했을때 값이 올라갔다.쿠키를 지우고 hit를 진행하는 방..
-
0x14.webhacking.kr - 270x.Wargame/WebHacking.kr 2018. 3. 23. 12:47
0x14.webhacking.kr - 27 SQL injection 문제인데 생각보다 많은 시간을 할애하였다 ㅠㅠ 1이라는 값을 넣어보았더니 guest 가 출력된다. 이를 통해 no의 값이 1이면 guest라는 정보를 알 수 있다. 문제에서 원하는 조건이 무엇인지를 알아야 하기 때문에 index.phps 문을 살펴보았다. eregi를 통해서 여러가지를 필터링하고, no=($_GET[no])의 형태로 받는다. 여기서 주의깊게 봐야할 점은 필터링 목록에 " ( " 가 존재한다는 것이다. 우리가 어떤 값을 no에 집어넣게되면 괄호 안에 위치하게 되는데 마지막에는 닫히는 괄호인 " ) " 가 있기 떄문에 이 부분을 주석처리를 해줘야 한다. 또한 " = " 을 필터링 하고 있기 때문에, 이것 또한 우회를 해야 했..
-
0x13.webhacking.kr - 250x.Wargame/WebHacking.kr 2018. 3. 22. 14:09
0x13.webhacking.kr - 25 조금씩 문제가 재미있어진다. 하지만 그만큼 아는 것이 많이 없다는 것을 의미하기도 한다. 문제를 보니 디렉토리에 대한 정보를 볼 수 있다. 이 부분을 보고 커맨드 인젝션 문제가 아닐까 생각이 들었다. 주소창을 위와 같이 쳐보았더니 아무것도 출력이 되지 않았다. 아마 이 부분에 대한 출력이 가능하다면 무언가를 할 수 있을 것 같다. 소스코드를 까보았는데 url?file=hello와 같이 file 형식으로 읽어온다. 이 부분에서 아마 hello의 확장자 부분을 붙여주는게 아닐까라는 생각이 들었다. password.php.txt 처럼 처리가 될 경우를 생각해서 널 바이트 인젝션을 해보았다. ?file=password.php%00 결과를 보니 패스워드를 읽어올 수 있다..
-
0x12.webhacking.kr - 40x.Wargame/WebHacking.kr 2018. 3. 21. 16:02
0x12.webhacking.kr - 4 150점대의 문제를 풀기 시작하는데, 이 문제를 쉅 시간에 풀다가 저격당해서 많은 질문을 받게 되는 불운을 얻기도 하였다.. 뒤에 있는 ==때문에 base64라는 것을 한 눈에 알 수 있었는데, 이는 자릿수를 맞추기 위해 =를 뒷부분에 추가하는 base64의 특성 때문이다. 한 번 디코딩을 했는데 또 다시 암호화가 되어있어서 다시 디코딩 해보았지만 이상한 값이 결과로 나왔다. 대부분의 복호화를 지원하는 사이트에서 여러가지 복호화를 시도했지만 먹히지 않았다. 그래서 뻘짓을 하다가 0~f 즉, 16진수로만 이루어져 있으므로 관련 암호들을 찾다가 sha-1를 찾았다. 한 번 돌리고, 한 번 더 돌리니 값이 나왔다. 4번 솔브!!
-
0x11.webhacking.kr - 540x.Wargame/WebHacking.kr 2018. 3. 20. 23:16
0x11.webhacking.kr - 54 문제를 보니 다음의 뒤에 한 문자씩 계속 바뀌다가 마지막에는 ?를 표시한다. 자바스크립트로 장난을 쳐 놓은 것 같았다. 소스코드를 확인해보니 run 부분과 answer 부분이 있는데, run 부분은 지원여부를 체크하는 부분이고 answer는 뒷 부분에 값을 표시해주는 부분이다. 보면 ?m='+i 의 형태로 url을 setTimeOut을 이용하여 계속해서 변경한다. 아마 이 뒤에 뜨는 값들을 다 합치면 답이 될 것 같다. 크롬의 NETWORK 탭을 보니 m은 32개의 인덱스를 가지고 있었다. 콘솔을 사용해서 프로그래밍을 해보면 답을 알 수 있을 것 같다. for문을 돌려서 result를 출력해보니 다음의 값이 나왔다. 넣어보았더니 54번 솔브!!
-
0x10.webhacking.kr - 390x.Wargame/WebHacking.kr 2018. 3. 20. 22:44
0x10.webhacking.kr - 39 얼핏 보기엔 인젝션 문제이다. 아무 값이나 넣어보니 위와 같이 Warning이 떴다. 검색을 해 보았더니 쿼리문에 문제가 있을 경우 나오는 경고문인데 해당 값을 찾지 못했다는 의미이다. index.phps를 살펴보았더니, POST[id]를 여러가지로 필터링을 하고 substr로 15자리만 받는 것을 알 수 있다. 또한 쿼리문을 보면 $_POST[id] 부분이 포함되어 있는데, 싱글쿼터가 없는 것으로 보아 이 문제의 관건은 싱글쿼터의 처리라는 것을 알 수 있다. 고민을 해보았는데, str_replace에서 싱글쿼터를 2개로 바꾸기 때문에 만약 15번째에 싱글쿼터가 들어가면 두개로 변경된다 하더라도 두 번째 쿼터가 짤릴 것 같았다. 예상 적중! 39번 솔브!
-
0x08.webhacking.kr - 260x.Wargame/WebHacking.kr 2018. 3. 20. 22:05
0x08.webhacking.kr - 센스를 요구하는 문제였다. Index.phps를 까보면 다음과 같은데 admin이라는 값이 id로 들어오면 문제를 풀 수 있다. 근데 urldecode()를진행하기 때문에 encode()를 해야한다는 것과 eregi를 사용하기 때문에 admin을 바로 때려박을 수 없다는 점을 눈치챘을 것이다. 그래서 인코딩을 2번 진행을 해주면 한 번은 자동으로 디코딩이 진행될 것이고 urldecode를 통해 한 번 더디코딩이 진행될 것이다. 즉 admin을 2번 urlencode()를 해주면 된다. 26번 솔브!