Webhacking.kr 24번

문제를 봅시당 ~!

내 ip 와 브라우저 정보가 나와있다. 

일단 페이지소스를 확인을 해보면 index.phps 가 주석처리 된 것을 알 수가 있다.

index.phps 로 들어가보면 주석 처리 되어있던 소스를 확인 할 수 있다.


소스를 분석해 본 결과 이 문제를 해결하려면 ip를 127.0.0.1로 변환하면 해결이 된다고 나와있다.

하지만 그 위에 if문을 보면 ip가 12, 7. , 0. 이 되면 공백으로 바뀐다고 나와있다.

그렇다면 먼저 ip를 어떻게 변환을 시켜야 할까?
위 소스를 보면 REMOTE_ADDR 쿠키 값을 이용해서 변환 시켜야 한다고 한다.

또한 쿠키를 이용해 ip를 만들어야한다!
 
하지만 이 문제를 해결하려고 하면 ip 값이 127.0.0.1 이 되어야하는데 12, 7. , 0. 이가 되면 공백으로 변하게 된다.
어떻게하면 변하지 않고 해결 할 수 있을지 생각을 잘 하시고 ! 공백으로 변하지않게 만들어준 후,
 REMOTE_ADDR 쿠키를 생성해주고 만들어준 ip 를 써준 다음 확인을 눌러준다. 

그렇게 한 다음 새로고침을 해주게 되면!

해결 !!


'Wargame write up > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 16번  (0) 2019.01.31
Webhacking.kr 14번  (0) 2019.01.28
Webhacking.kr 4번  (0) 2019.01.28
Webhacking.kr 26번  (0) 2019.01.28
Webhacking.kr 38번  (0) 2019.01.28

Webhacking.kr 16번

문제를 먼저 봅시다.


큰 *과 작은 *만 나와있다.  뭔지 몰라서 키보드로 아무거나 눌러보니


없던 * 들이 생겨나는 것을 확인 할 수 있다!

왜 저렇게 되는지 소스코드를 확인 해 보자~



보라색 박스를 중요시하게 보자! 분석을 해보자면!

일단, mv 함수를 선언을 해주고 cd 값을 mv함수에 입력을 해준다.

그리고 kk(별 모양 만들어주는 함수)를 호출을 한 뒤 위치를 정해준다.

만약 cd가 100이면 위치를 왼쪽으로 +50만큼 이동, cd가 97이면 위치를 왼쪽에서 -50 이동, cd가 119이면 위치를 위쪽으로 -50만큼 이동, cd가 115이면 위치를 위쪽으로 +50 이동을 한다.

그리고 마지막으로 cd 값이 124이면 어떤 페이지로 이동한다고 분석을 했다.

여기서 100,97,119,115,124 이 숫자들은 아스키 코드표라고 생각이 들어 아스키 코드표를 보았다!


아스키 코드표에서 100은 d를 의미한다.

그러면 우리가 필요한 숫자 124가 어떤 것인지 찾아보니 | (파이프)를 의미한다.

그렇게 되면, | (파이프)를 입력을 해보면 어떨까?


| (파이프)를 입력을 해주니 저렇게 패스워드가 나왔다.

Auto에 들어가서 flag 값을 입력하면 짜란 ! 성 공 !





'Wargame write up > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 24번  (0) 2019.01.31
Webhacking.kr 14번  (0) 2019.01.28
Webhacking.kr 4번  (0) 2019.01.28
Webhacking.kr 26번  (0) 2019.01.28
Webhacking.kr 38번  (0) 2019.01.28

  Webhacking.kr 14번


일단 문제 먼저 봅시다.



아무것도 모르니까 한번 admin을 넣어보면 다음과 같이 Wrong 이라고 뜬다.



1234 넣어보니 또 Wrong 이라고 뜬다. 



소스 코드 분석을 해보자..



빨간 박스 위주로 분석을 해보면 url 변수에 document.URL 값을 넣어주고 document.URL은 현재 실행되는 url 값을 읽는다.

index0f 함수로 .kr 위치가 ul변수이다. 그리고 ul 변수 값에 30을 곱해준다. 그리고 만약 ul이라는 값이 pw와 같으면 password를 출력한다.


* index0f 함수 : 문자열에서 특정 문자열의 위치를 찾아서 index를 반환 해주는 함수 즉, 배열의 조건 문장을 숫자로 가져오는 것!


URL 주소는 http://webhacking.kr/challenge/javascript/js1.html 이다.


URL 주소를 배열로 만들어보면....! 다음과 같이 됩니다.



ul 값의 처음은 . 이니 배열로 따지면 17이 된다.  따라서 ul = 17이 된다.


ul = ul * 30 이니까 17 * 30 = 510 이 된다.


폼에 510을 넣어주게 되면 



password 값이 나온다.   저 패스워드 값을 flag에 넣어주게 되면



문제 해결~~~~~~~~~~~~~~~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~

'Wargame write up > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 24번  (0) 2019.01.31
Webhacking.kr 16번  (0) 2019.01.31
Webhacking.kr 4번  (0) 2019.01.28
Webhacking.kr 26번  (0) 2019.01.28
Webhacking.kr 38번  (0) 2019.01.28

  Webhacking.kr 4번 문제


문제를 보면 이상한 값이 나와있다.


password에 'admin', '1234' 등을 넣어봤지만 ㄷ ㅏ 실패애,,~


그럼 저 값을 일단 디코딩을 해봅시다.  base64로 디코딩을 해보면 " c4033bff94b567a190e33faa551f411caef444f2 " 인 값이 나왔다


저 값을 구글에 쳐보니,,,,,



SHA -1 이라고 나왔다.

* SHA-1 이란? : SHA 함수 종류 중 하나이고 최대 2^64 비트의 메시지로부터 160bit의 해시값을 만든다.

* 해시값 : 해시 함수는 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수를 말하고, 이러한 해시함수를 적용하여 나온 고정된 길이의 값을 말한다.

그래서 SHA-1 디코딩을 해보면




a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 "  값이 나온다.


또 다른 SHA-1 값이 나와 제출을 해봤더니 아니라고 뜨길래 한번 더 디코딩을 해주게 되면




블러 처리 된 값이 나온다.


저 값을 플래그 값으로 제출을 하게 되면,,!




문제 해결 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~! 

'Wargame write up > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 24번  (0) 2019.01.31
Webhacking.kr 16번  (0) 2019.01.31
Webhacking.kr 14번  (0) 2019.01.28
Webhacking.kr 26번  (0) 2019.01.28
Webhacking.kr 38번  (0) 2019.01.28

  Webhacking.kr 26번 문제



문제를 보면 index.phps 가 나온다.


한번 눌러 봅시다~!~!~



소스 코드가 보입니다. 


php 소스코드를 첫 줄 부터 분석을 해보면


  1. get 방식으로 id 변수에 저장된 값이 admin이면 나간다
  2. get 방식의 id 변수에 저장된 값을 urldecode을 한 후에 다시 id 변수에 저장
  3. 만약 id 변수에 저장 된 값이 admin이면 해결
이렇게 간단하게 분석을 끝내고 get방식으로 url에 admin으로 써보면 eregi 함수로 인해 강제 종료가 된다.

그러면 !! url 인코딩을 해서 넣어봅시다.

admin을 인코딩하면 %61%64%6D%69%6E 이다.  이것을 get 방식으로 url에 넣어주게되면 



no! 라고 뜨고 id = admin 이라고 필터링이 되서 나타난다.


왜 그런지 구글링을 해보니,, 인코딩 값을 전달을 하게 되면 서버에 전달이 되서 동시에 서버 php가 해석을 하기 때문이라고 한다.


그러면 한번 더 인코딩을 해준 뒤에 get 방식으로 전달을 하게 되면 ,,



문제 해결~!~!

'Wargame write up > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 24번  (0) 2019.01.31
Webhacking.kr 16번  (0) 2019.01.31
Webhacking.kr 14번  (0) 2019.01.28
Webhacking.kr 4번  (0) 2019.01.28
Webhacking.kr 38번  (0) 2019.01.28

  Webhacking.kr 38번

이 문제를 푸시려면 https://unabated.tistory.com/entry/Log-Injection 를 보시고 이해를 하시면 됩니다.

일단 문제를 보면 Log Injection이라고 나옵니다.


Log Injection이란 spl lnjection 처럼 파라미터를 통해 로깅을 조절하는 방법을 말합니다.

여기서 로깅은 프로그램 개발이나 운영 시 발생하는 문제점을 추척하거나 운영 상태를 모니터링 하기 위한 텍스트입니다.


다시 문제로 돌아와서 페이지 소스를 살펴보니



login 버튼을 누르면 값이 전달되고 admin 값을 누르면 admin.php로 이동한다는 걸 알게 됩니다.

그래서 admin을 차고 login을 누르게 되면 이렇게 admin이 아니라고 한다.



그렇다면 다른 계정으로 들어가볼까? 

yell이라는 계정으로 들어가봅시다.


그럼 yell의 ip값이 있는 log가 나타나게 됩니다.


그렇다면 yell은 되면서 왜 admin은 안될까? 혹시 몰라 admin 앞에 공백을 줘봤다.  (\n admin)


그럼 저렇게 admin이 밑으로 내려갔다는 것을 알 수 있었다.

이렇게 admin 앞에 무언가가 있어야 된다고 깨닫고 Log Injection에 대해 찾은 블로그를 참고해서 플래그 값을 적었더니 




해결이 됐습니다 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

'Wargame write up > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 24번  (0) 2019.01.31
Webhacking.kr 16번  (0) 2019.01.31
Webhacking.kr 14번  (0) 2019.01.28
Webhacking.kr 4번  (0) 2019.01.28
Webhacking.kr 26번  (0) 2019.01.28

+ Recent posts