목록Webhacking.kr (12)
Maru's
너의 목적은 를 입력하는 것이다. 입력하면 no hack이란다 ㅡㅡ 일단 천천히 무엇이 필터링 되었는지 확인해보니 script 와 alert가 필터링 되어있다. Script와 alert를 필터링 된것을 우회하면 클리어 가능 한 것으로 보인다. a%00l%00e%00r%00t%00(%001%00)%00; 이렇게 %00을 곳곳에 집어넣어 필터링을 우회해주면 클리어 가능하다.
개인적으로 더럽게 노가다문제였다. (하는 방법을 모르니.. ) Login 과 Join 있다. Join을 누르면 밑처럼 Access_Denied 가 뜨고 윗처럼 login을 누르면 /mem/login.php로 넘어간다 여기서 이상한점은 mem이라는 곳으로 넘어가는 것 이여서 디렉토리 리스팅 취약점이 있을까 확인을 해보았다. Index of /hint라는 곳에 접근이 가능했고 이곳에는 join.php 파일이 있어 들어가 보았다. 들어가보니 아무것도 없어 소스를 보니 이 문제가 왜 300점 인지 알거같은 난독화가 되어 있었다. 이 난독화 된 코드를 정리해보면 Challenge 5 이렇게 였고 이걸 조금더 풀어보면 if (eval(document.cookie).indexOf(oldzombie) == -1) { ..
웹해킹 1번문제를 보면 저상태에서 index.phps라는 링크가 걸려있다 저쪽으로 넘어가보자. 소스를 보면 Cookie의 User_lve이 1로 설정되고 그 밑 은 6보다 작거나 같으면 User_lv가 1로 설정되고 5보다 클 경우에만 solve가 된다. EditThisCookie라는 크롬확장프로그램을 사용하여 User_lv 쿠키를 생성 후 5.5 즉 5보다는 크고 6보다는 작은 값을 넣어주면 문제가 해결된다.
은근히 어려운 척 하면서 쉬운문제고 찝찝했던 문제이다. 소스를 보면 난독화 되어있다. String.fromCharCode 함수는 안에 숫자값을 아스키 값으로 문자로 바꾸어주고 eval은 javascript로 실행될 수 있게 해준다. 저쪽 난독 화 되어 있는 부분을 개발자 모드의 콘솔에 붙여넣으면 소스를 얻을 수 있다. 뭐 이런 저런 함수들이 추가되어있는데 나는 Password를 출력해주는 제일 처음 조건문만 보았다. ck 가 == "="이하 enco3))까지 이면 password 는 ck에서 =를 뺀 것이라고 되어있다. 위 구문 중 조건문만 개발자 모드에 돌려주면 Youaregod~~~~~~~~~!이라는 것을 얻을 수 있고 auth 에 입력하면 클리어 할 수 있다.
42번문제는 두가지 링크가 있는데 하나는 눌러보면 test.txt로 이동하고 test.zip은 눌러보면 Access Denied 를 띄웁니다. 소스를 보면 살짝 웃긴게 test.txt는 down=test.txt를 base64인코딩 한것으로 보이는 링크 그리고 밑은 그냥 alert를 집어넣었네요 ㅡ.ㅡ 저 인코딩한 것으로 의심되는 것을 디코딩 해보니 test.txt가 되는 것으로 보아 업로드 할 떄 base64로 인코딩하여 저장하는 것 같습니다. test.zip를 base64 인코딩 하여 저쪽에 있는 dGVzdC50eHQ=를 수정하여 text.zip의 base64인코딩 코드로 갈아넣습니다. 그리고 다시 본창으로 돌아와 download를 누르게 되면 test.zip파일이 다운로드 됩니다. 열어보면 암호가 걸..
이번 문제는 매우 짜증나는 33번 문제입니다. 총 10가지 문제를 한문제에다 200점짜리로 넣어놨습니다.ㅡ.ㅡ 33-1번 문제입니다. 링크를 하나주고 밑에는 Wrong이라고 되어있습니다. 소스를 확인해봅시다. 소스를 확인하면 get이라는 변수에 hehe라는 입력값이 들어가면 next라는 링크를 준다고 합니다. get방식으로 URL에 get=hehe 를 입력해주면 쉽게 풀립니다. 33-2번문제도 똑같은 문제입니다. 다만 이번엔 POST방식으로 post에 hehe post2에 hehe2를 넣어야 Next라는 링크를 준다고 합니다. POST방식과 GET방식의 차이는 GET방식은 URL에 노출되고 POST방식은 폼안에 쓰인다고 합니다.(URL에 보이지 않습니다.) 문제를 푸는 방법은 크롬의 개발자도구를 사용하여..
25번 화면의 페이지의 문제는 file에 입력받아 그 입력된 것에 따라서 출력 되는 것으로 보입니다. 소스를 확인해보면 아무것도 힌트를 얻을 수 없습니다. 혹시나 파일에 다른것을 입력 해보지만 아무런 반응이 없습니다. 여기서 예상 해 볼 수 있는 것은 hello.txt의 내용이 hello world이고 hello를 입력 값으로 주었을 때 hello.txt가 출력된 다고 볼 수 있습니다. 그러므로 입력 값 뒤엔 .txt가 붙는 소스가 첨가 되 있을 것 같습니다. 문제에 문자열끝을 알려주는 널문자를 첨가하여 File에 Password.php%00을 넣어준다면 널문자까지 문자열 끝으로 인식해 password.php가 출력 됩니다.
26번 문제를 들어가면 index.phps라는 링크가 나온다. 클릭해보면 이런 소스를 볼 수 있다. 소스를 보자면 eregi함수로 GEt[id]가 admin일 경우 no!를 출력한다. 그리고 GET[id]는 Urldecode되어서 다시 GET[id]로 들어간다. 그 이후 if문이 나오는데 GET[id]가 admin일 경우 문제가 해결된다고 되어있다. 일반적으로 admin을 URL인코딩 해서 입력하면 된다고 생각 할 수 있다. 하지만 no!를 출력한다. 그 이유는 기본적으로 URL인코딩 되어 넣어주면 그 값을 디코딩을 한번 해주기 때문이다. 그렇기 때문에 admin의 인코딩 값인 %61%64%6d%69%6e를 다시 인코딩 해준다. 값을 넣어주면 풀리는 걸 알 수 있다. 주의점은 admin을 두번 인코딩 해..
처음 클릭해 보면 client ip(현재 제 IP가 나오기 때문에 지웠습니다) agent가 나옵니다. 그리고 소스를 보려 Burp Suite로 확인해 보면 주석처리된 source : index.phps를 볼 수 있습니다. 그리고 index.phps로 이동할 수 있습니다. index.phps에 들어가서 소스를 보면 extract($_SERVER); extract($_COOKIE); 로 서버와 쿠키의 배열의 키값을 변수화 주게 된다. 그리고 ip변수에 REMOTE_ADDR(사용자가 현재 페이지를 보고 있는 시스템의 IP 주소 환경변수임)를 넣어주고 agent에는 USER_AGENT 값을 넣어줍니다. 그리고 그 밑의 if문을 보면 문자열 변경함수로 ip의 변수값에 12가 잇으면 공백 7.이 있으면 공백 0.이..
17번문제를 클릭해보면 하얀색 체크박스가 뜬다. 그리고 Burp Suite로 소스를 잡아볼 수 있다. 소스는 unlock이라는 변수에 엄청나게 긴 연산이 들어있고 그 밑은 입력값이 unlock과 같으면 Password "+unlock/10을 알려준다. 라고 되어있다. 사실상 전부 더해서 10을 나누고 auth에 입력해도 되겠지만 좀더 똑똑하게 푼다면 밑 소스에 조건문을 1로 수정해준다. 그리고 1을 입력하면 조건문이 참이므로 password가 출력 되게 되고 이것을 auth에 적으면 문제는 클리어한다.