본문 바로가기

Wargame/webhacking.kr56

webhacking.kr 46번 [SQL Injection] 46번 문제를 보면 아래와 같은 화면을 볼 수 있다. 여기서 form의 method가 get인 것과 action이 index.php라는 것을 알 수 있다. index.phps 코드는 아래와 같다. 코드를 보면 lv의 입력을 이용하여 id가 admin으로 입력되게 해야한다는 것을 알 수 있다. 먼저 1을 입력해보면,?lv=1 과 같이 전달되는 것을 알 수 있다. 따라서 ?lv=[any_number] or id=”admin” 과 같이 입력하면 될 듯하다. 단, 필터링에 유의하여 입력해야한다. 따라서 공백은 %0a로 입력하고 admin을 문자열로 전달하기 위해 char()를 이용하려고 한다. 아래 값을 참고하여 입력한다. 실제로 입력할 값은?lv=0%0aor%0aid=char(97.. 2019. 1. 29.
webhacking.kr 21번 [Blind SQL Injection] 21번 문제를 보면 다음과 같은 Blind SQL Injection 페이지를 볼 수 있다. 숫자를 입력했을 때 True가 나오는 것은 1, 2 정도인 것을 알 수 있다. 1, 2 이외의 숫자인 3을 넣었을 때는 False가 나온다. 또한 입력한 값은 no에 들어가고, id와 pw라는 column 이름을 알게 된다.따라서 length()를 이용하여 no가 1, 2인 것에 대해 id와 pw의 길이를 각각 구할 수 있다. 또한 substr()과 ascii()를 이용하여 각 바이트에 해당하는 값들을 구할 수 있다. Python을 이용하여 길이과 값을 구하면 아래와 같다. 따라서 blindsqlinjectionkk 로 인증하면 clear할 수 있다. 이 때 사용한 코드는 아.. 2019. 1. 29.
webhacking.kr 10번 10번 문제를 클릭하면 다음과 같이 O와 buy lotto를 볼 수 있다. 코드는 아래와 같다.클릭을 할 때마다 hackme의 posLeft가 1씩 증가 되고 800을 만들어야 한다. 이 때, 임의로?go= 을 이용하여 접근하면 no hack이라는 메시지가 나오기 때문에 실제로 값을 800으로 만들고자 한다. 그런데 Chrome에서는 클릭을 해도 아무 변화가 없기 때문에 safari를 이용했다. 클릭할 때마다 posLeft가 1씩 증가하여 위에서 보이는 것처럼 O의 위치가 이동한다. 따라서 800을 만들기 위해onclick=”this.style.posLeft+=800”;과 같이 1을 800으로 바꾸어 준다. 이렇게 되면 한 번만 클릭해도 800이 되어 clear할 수 있다. 2019. 1. 29.
webhacking.kr 12번 [Javascript] 12번 문제를 보면 javascript challenge라는 것을 볼 수 있다.Script 코드를 보면 WorkTimeFun에 fromCharCode 안의 숫자의 의미를 직접 파악하기는 어렵다. 따라서 개발자 도구의 콘솔을 이용하여 아래 코드를 복사하여 넣으면 된다. 그러면 아래와 같은 코드를 볼 수 있다. 이 때, ck의 값을 확인하여 패스워드인 경우 ck를 출력하는 것을 볼 수 있다.따라서 ck와 비교하는 대상을 다시 콘솔을 통해 실행해 보면 아래와 같은 문자열을 얻을 수 있다. 즉, 조건을 만족한 경우Password is youaregod~~~~~~~!이라는 것을 알 수 있다. 이 값으로 인증하면 clear할 수 있다. 2019. 1. 29.
webhacking.kr 56번 56번 문제를 클릭하면 다음과 같은 화면을 볼 수 있다. 이 때 hi~는 클릭하면 내용을 볼 수 있지만,readme의 경우 access denied가 나온다.따라서 다른 방법을 이용하여 admin의 내용을 봐야할 듯하다. 우선 subject에 있는 hi~와 readme를 입력해보면,hi~의 경우 입력하면 guest가 나오지만readme를 입력한 경우 admin이 나오지는 않는다. 숫자 0을 입력한 경우에는 admin과 guest가 모두 나오는 것을 볼 수 있다. 여기서 알 수 있는 점은admin이 나오는 input을 구해야한다는 것이다. 손으로 하나씩 입력하는 것은 힘드니 python을 이용하여 input을 구했다.먼저 와일드카드인 _를 이용하여 input의 길이를 알아냈다. 그 뒤, 가장 첫 글자부터 .. 2019. 1. 29.
webhacking.kr 52번 [Header Injection] 52번 문제를 클릭하면 다음과 같은 화면을 볼 수 있다.Header Injection 문제이며 클리어 조건은 아래와 같다. 따라서 아래와 같이?id=sand\r\nclear: sand를 입력하면 된다.\r\n은 %0d%0a이고, 공백은 %20이다. 이렇게 입력하면 clear된다. 2019. 1. 29.
webhacking.kr 19번 [NOT WORKING] 19번 문제를 열면 다음과 같이 id를 입력받는 것을 알 수 있다. admin이라는 문자가 value로 지정되어 있어서 submit 버튼을 눌러보면 admin이 아니라는 문자열이 출력된다. admin으로 로그인을 성공하면 되는 문제인 듯 하나,admin이 아닌 다른 문자를 입력하였을 때 아래와 같은 warning이 뜨고 제대로 작동하지 않는 것으로 추정된다. 2019. 1. 29.
webhacking.kr 36번 [NOT WORKING] 36번 문제를 보면 다음과 같이 힌트가 vi blackout이라는 것을 볼 수있다. vi에서 비정상적으로 종료되면 .swp 파일이 생기는 것을 이용하여webhacking.kr/challenge/bonus/bonus-8/.index.php.swp에 접근하려 하였으나 아래와 같이 Not Found라고 나오는 것을 볼 수 있다.구글링을 해보니 현재 동작하지 않는 것 같다 2019. 1. 29.
webhacking.kr 61번 61번 문제를 보면 아래와 같은 코드가 있다. id가 admin일 경우 clear할 수 있다.GET 방식을 사용하며 id가 없을 경우 guest로 입력되고,Union이나 select 등에 필터링이 적용되어 있다. 길이도 18자 이하여야한다. id에 admin이 입력해야 하므로 SQL Alias를 이용하여“admin” as id와 같이 입력하면 된다. 이 때, “가 문자열로 인식되면 안되기 때문에 16진수로 변환한 값인0x 61646d696e를 이용한다. 위와 같이 입력하면 clear할 수 있다. 2019. 1. 29.