본문 바로가기

웹 해킹 (Web)/webhacking.kr

(23)
[webhacking.kr] 웹해킹.kr old-6번 (100) 이번에는 webhacking.kr의 old-6번 문제입니다. 소스 코드를 이용하는 문제고, 100점이 배점되어 있습니다. 문제에 들어가면 위와 같은 화면이 나옵니다. ID와 PW를 가르쳐 주는가 봅니다. 소스 코드를 보겠습니다. 소스 코드를 두 단계로 나누어 보겠습니다. 첫 번째 코드는 encode를 하는 코드입니다. val_id와 val_pw를 base64 방식으로 20번 encode하고, str_replace() 과정을 거쳐서 쿠키에 저장합니다. 쿠키에 아주 긴 값이 들어가 있는 것을 보니 맞는 것 같습니다. 두 번째 코드는 암호화를 한 역순으로 복호화를 해줍니다. str_replace() 과정을 먼저 거치고, base64 방식으로 20번 decode 해줍니다. 마지막 부분에서 decode_id가 a..
[webhacking.kr] 웹해킹.kr old-15번 (50) 이번에는 webhacking.kr의 old-15번 문제입니다. javascript를 이용하는 문제고 50점이 배점되어 있습니다. 문제를 클릭하면 alert() 창이 뜨고, webhacking.kr의 메인 화면으로 이동합니다. 문제를 볼 새도 없이 메인 화면으로 이동하니, 문제를 볼 수 있게 만들어 보겠습니다. chrome의 설정으로 들어가서, 사이트 설정으로 들어갑니다. 콘텐츠 부분을 보면 javascript를 허용할지 차단할지 선택하는 기능이 있습니다. webhacking.kr 사이트를 차단시키고, old-15번의 문제로 접속해 보겠습니다. 아무것도 보이지 않는 모습입니다. 소스 코드를 보겠습니다. location.href 속성으로 / 루트 디렉터리로 돌아가는 모양입니다. URL에 ?getFlag를 대..
[webhacking.kr] 웹해킹.kr old-33번 (200) 이번에는 webhacking.kr의 old-33번 문제입니다. php를 이용하는 문제고 200점이 배점되어 있습니다. 처음 들어가면 33-1 이라고 나옵니다. 단계별로 푸는 문제인가 봅니다. 소스 코드를 보겠습니다. php문에서 GET 방식으로 전달되는 get이 hehe이면 Next로 넘어갈 수 있는 것 같습니다. GET 방식으로 전달되므로 URL을 조작해 보겠습니다. 위와 같이 입력하니 Next 버튼이 활성화되었습니다. Next 버튼을 누르면 URL이 lv2.php로 바뀌면서 33-2로 이동합니다. 33-2의 소스 코드를 보겠습니다. 33-2 문제는 POST방식으로 전달된 post에는 hehe를, post2에는 hehe2를 전달하면 풀리는 문제입니다. 저는 burpsuite를 이용해서 풀어보겠습니다. ..
[webhacking.kr] 웹해킹.kr old-25번 (150) 이번에는 webhacking.kr의 old-25번 문제입니다. php를 이용하는 문제고 150점이 배점되어 있습니다. 들어가보면 위와 같은 화면이 출력됩니다. 위 문자열들은 리눅스의 ls 명령어를 사용한 것으로 보여지고, 그 아래 textarea에는 hello world라고 적혀있습니다. 소스 코드를 보겠습니다. 별로 건질 것이 없어 보입니다. URL을 확인하여 보겠습니다. GET 방식으로 file이라는 name에 hello가 대입된 것으로 확인됩니다. textarea에 hello world가 적힌 것으로 보아 file에 hello.php를 넣어서 열린 것으로 확인됩니다. 디렉터리에 flag.php, hello.php, index.php가 있으므로 URL에 index와 flag를 넣어보겠습니다. inde..
[webhacking.kr] 웹해킹.kr old-23번 (200) 이번에는 webhacking.kr의 old-23번 문제입니다. php를 이용하는 문제고, 200점이 배점되어 있습니다. 처음 들어가면 위와 같은 화면이 나옵니다. input form이 보이고, 제 목표는 script 태그를 주입하는 거라고 합니다. 소스 코드를 보겠습니다. 소스 코드만을 보고 해결법을 알 수 없을 것 같습니다. 그냥 무작정 값들을 대입해 보겠습니다. 12345, a, b,
[webhacking.kr] 웹해킹.kr old-26번 (100) 이번에는 webhacking.kr의 old-26번 문제입니다. php를 이용하는 문제고, 100점이 배점되어 있습니다. 문제에 들어가면 위와 같은 검은 화면만 뜹니다. 소스 코드를 보겠습니다. 코드를 보니 GET 방식으로 넘겨주는 id가 admin일 때 문제가 해결됩니다. 그 위에는 id를 urldecode() 함수를 통하여 디코딩 해주었습니다. 디코딩을 해주었으니 인코딩을 해주어 원래대로 변환해주어야 합니다. 인코딩 표를 참고하겠습니다. admin => %61%64%6d%69%6e 입니다. GET 방식으로 넘겨주므로 URL을 바꿔보겠습니다. 인코딩을 진행한 값을 넣어도 admin으로 자동 변환됩니다. 웹 서버와 브라우저 간의 통신에서, 브라우저는 form에서 입력받은 데이터를 자동으로 인코딩한 값을 P..
[webhacking.kr] 웹해킹.kr old-24번 (100) 이번에는 webhacking.kr의 old-24번 문제입니다. php를 이용하는 문제고, 100점이 배점되어 있습니다. 문제에 들어가보면 위와 같은 화면이 나옵니다. client ip와 agent의 정보가 출력됩니다. 그 아래에는 IP 주소가 잘못되었다고 나옵니다. 소스 코드를 보겠습니다. 아래에 if 조건문을 보니 ip 변수가 127.0.0.1이 되면 solve가 됩니다. 위에서 ip 변수에는 REMOTE_ADDR이라는 변수를 대입하였습니다. REMOTE_ADDR 변수는 사용자의 ip 주소를 나타냅니다. 이 ip 변수를 조작하여 127.0.0.1로 변환하면 문제가 풀릴 것입니다. 쿠키에는 REMOTE_ADDR이 존재하지 않아서 REMOTE_ADDR이라는 이름을 가진 쿠키를 생성하겠습니다. 크롬에서는 어..
[webhacking.kr] 웹해킹.kr old-1번 (200) 이번에는 webhacking.kr의 old-1번 문제입니다. PHP를 이용하는 문제고, 200점이 배점되어 있습니다. 처음 들어가면 위와 같은 화면이 뜹니다. 레벨이 1인 상태로 소스 코드를 보겠습니다. 아래쪽에 있는 php문을 해석해보면, user_lv이 6 이상이면 1로 처리되고, 5보다 크면 풀린다고 합니다. user_lv 쿠키를 확인하고 값을 5와 6 사이의 값인 5.5로 넣어보겠습니다. 쿠키 값을 5.5로 바꾸니 문제가 해결되었습니다.
[webhacking.kr] 웹해킹.kr old-32번 (150) 이번에는 webhacking.kr의 old-32번 문제입니다. 소스 코드를 이용하는 문제고, 150점이 배점되어 있습니다. 처음 들어가면 아래와 같은 랭킹이 출력됩니다. 맨 밑으로 내려보면 1218등에 본인의 id가 적혀있을 것입니다. 랭킹을 1등으로 만들거나, hit 수가 100을 만족하면 풀릴 거라고 생각하였습니다. 한 번 투표를 하면 1 / 100 이 되고, 이후에 투표를 하려면 이미 투표를 했다고 경고창이 뜹니다. 목표를 달성하려면 경고창이 뜨지 않게 해야하기 때문에, 쿠키를 보겠습니다. 쿠키에 vote_check라는 쿠키가 존재합니다. 값은 ok로 설정되어 있습니다. 이를 삭제하고 다시 본인의 id를 클릭하면, hit 수가 정상적으로 올라갑니다. 쿠키를 삭제하고 클릭하고를 반복하다보니 너무 힘들..
[webhacking.kr] 웹해킹.kr old-14번 (100) 이번에는 webhacking.kr의 old-14번 문제입니다. javascript를 이용하는 문제고, 100점이 배점되어 있습니다. 들어가면 input box가 존재합니다. 소스 코드를 보겠습니다. 변수 ul에 해당하는 값을 입력하면 되는 것 같습니다. indexOf() 함수에 대하여 찾아보니 문자열에서 입력한 문자의 위치를 인덱싱해주는 함수입니다. 크롬의 console 창을 띄워 ul을 구해보겠습니다. 540이라는 값이 나옵니다. 이를 input box에 넣고 check 버튼을 누르면 문제를 해결할 수 있습니다.