웹해킹공부 11

webhacking.kr 59번 풀이

view-source 클릭 개발자 도구를 이용해서 살펴보니까 login할 때 쓰이는 아이디와 번호다 lid, lphone이네요! 소스코드를 정리해 봅시다. 1. lid와 lphone에 함수 addslashes를 적용한다. 2. lid와 lphone에에 해당하는 id와 lv를 선택한다. 3. id가 존재하면 lv를 출력한다. 4. 만약 lv==admin이면 문제해결 1. id와 phone에 함수 addslashes를 적용한다. 2. phone>=20이면 access denied 3. id에 admin(대소문자상관x)이 있으면 access denied 4. phone에 admin|0x|#|hex|char|ascii|ord|select(대소문자상관x)이 있으면 access denied 5. 테이블에 (id, ..

webhacking.kr 55번 풀이

문제에 입장하자마자 요 귀여운 아이가 나타납니다!! 마우스를 움직이면 마우스를 따라 움직이는 게 너무 귀엽네요 ㅎ(눈도 깜빡깜빡 거려요!) 그리고 저 슬라임?이 움직임에 따라 스코어 점수도 변합니다. score 밑에 보면 rank라는 링크가 있네요! 들어가 봅시다. 랭크 순위와, 아이디, 스코어가 순서대로 쭉 나열되어 있습니다. 그런데 보시면 스코어가 2147483647로 다 똑같습니다. (이러면 순위가 상관 없잖아요?) 어쨌든 저는 첫번째 2147483647를 클릭해 보았습니다. 그러면 위에 id : jusb3 // 2147483647 가 나타나고, URL도 https://webhacking.kr/challenge/web-31/rank.php?score=2147483647 로 바뀐걸 볼 수 있습니다. ..

webhacking.kr 51번 풀이(PHP md5함수 취약점)

wrong이라고 뜨네요 아마도 PW가 틀렸을 거라 생각됩니다. 오른쪽 밑을 보면 소스를 볼 수 있습니다. 소스를 한번 볼까요? 1. 먼저 post 방식으로 id와 pw를 입력받습니다. 2. id에 addslashes 함수를 적용하여 특수문자 앞에 역슬래시'/'를 붙여줍니다. 3. pw를 md5로 암호화합니다. 4. id='input_id', pw='md5('pw',true')'인 값이 테이블에 있으면 문제는 풀리게 됩니다. 일단 눈에 띄는게 있네요 바로 md5($_POST['pw'],true); 부분의 true 입니다. 이게 뭔가 싶어 검색을 해 봤더니 취약점이 검색어 자동 완성으로 바로 뜨네요 ㅋㅋㅋㅋ md5를 true와 같이 쓰면 취약점이 있나 봅니다. 자 그럼 취약점을 자세히 알아볼까요? md5 의..

webhacking.kr 53번 풀이

일단 소스를 살펴봅시당 먼저 소스코드를 해석해 보면, 1. tablename.php 파일을 불러온다. 2. 만약 answer변수가 hidden_table 변수값과 같다면 문제 해결 3. val변수값의 select, by를 필터링함(대소문자 상관 X) 4. a=val변수값에 해당하는 hidden_table 값을 가져온다. 먼저 val 값이 1, 2, 3, 4일 떄를 각각 입력해 봤더니 각각 1, 2, 3, 4를 내놓는다. 아마도 val값 입력할 때를 이용해 table이름을 알아야 할 거 같다. table 이름을 알아내는 가장 일반적인 방법은 SELECT table_name FROM information_schema.tables; 을 사용하는 것이다. 현재 사용하는 테이블의 이름만 알고 싶다면 WHERE t..

webhacking.kr 41번 풀이(마지막 부분 오류 해결 방법)

view-source를 통해 소스를 살펴보자. 짧아서 좋다 ㅎㅎ 일단 php부분만 따로 살펴보자. $_FILES의 속성을 밑 여는 글에 정리해 놓았습니다 참고하세요!! 더보기 $_FILES['userfile']['tmp_name'] - 웹 서버에 임시로 저장된 파일의 위치. $_FILES['userfile']['name'] - 사용자 시스템에 있을 때의 파일 이름. $_FILES['userfile']['size'] - 파일의 바이트 크기. $_FILES['userfile']['type'] - 파일의 MIME 타입을 가리킴. 예를 들어, text/plain이나 image/gif. $_FILES['userfile']['error'] - 파일 업로드할 때 일어난 오류 코드를 알려주는..

webhacking.kr 42번 풀이

일단 무언가를 다운로드 할 수 있는 창이 뜬다. 첫번째 파일 flag.docx 를 다운 받을려 했지만 'Access Denial'이 뜨고 두번째 파일인 test.txt 을 다운을 다운받습니다. text.txt에 담긴 내용입니다. 일단 어디 쓸지는 모르니 킵해 둡시다. ctrl+shift+i를 눌러 소스코드를 살펴봅시다. 소스코드를 살펴 보니 text.txt를 다운 받기 위해 이동하는 URL이 보입니다 ?down=dGVzdC50eHQ= 이 부분이죠. 그런데 여기서 마지막에 붙은 '='가 base64를 떠올리게 합니다. 혹시 모르니 base64 디코딩을 시도해 봅시다. 마지막 '='부분은 지우고 디코딩 해야 합니다. base64 디코딩 사이트 --> http://www.hipenpal.com/tool/bas..

webhacking.kr 20번 풀이

일단 한번 아무거나 시도해보자. (reset을 누르면 captcha의 문자열이 바뀐다. ) 기껏 captcha를 쳤더니 Too Slow라고 뜬다. 그리고 위에 time limit: 2 second 라는 문구가 표시된다. 일단 ctrl+shift+i 를 통해 소스코드를 살펴보자. 각각의 빈칸들을 확인하고, 마지막에 캡챠까지 확인해주는 코드이다. 간단히 수정해 보자. location.reload();//현재 페이지를 새로고침 해준다. lv5frm.id.value="admin" ; lv5frm.cmt.value="hello"; lv5frm.captcha.value=lv5frm.captcha_.value; lv5frm.submit(); 각각의 변수(id, cmt, captcha)에 원하는 값을 넣을려면 .val..

webhacking.kr 19번 풀이

id를 제출하는 칸이 보이네요 일단 admin으로 제출해 봅시다. 'you ae not admin'이라고 뜨네요. 가장 만만한 guest로 로그인 해봅시다. 'hello guest'가 뜹니다. 그리고 다른 걸 시도하려고 logout을 눌러봐도.. 로그아웃이 안되네요 ㅎ하하 그래서 일단 소스코드를 보았지만 건질 게 없었고, (?logout=1이 입력되면 로그아웃이라는 걸 알았다.) 쿠키에서 건질 게 있었다. 바로 userid 라는 쿠키이다. userid쿠키를 0으로 설정하면 로그아웃을 할 수 있다. 그리고 여기서 Base64 라는 인코딩 방식에 대해 알아야 한다. 암호화된 문자를 보고 Base64라고 알아 차리기 위해선 Base64의 암호화 방식을 알아야 한다. 자세한 건 -->https://pks2974..

webhacking.kr 58번 풀이

음 일단 메시지창 같은 게 떳습니다. 'hello'를 입력해서 send했더니 command not found가 뜨네요 다른 멘트를 시도해 봐도 비슷하게 나옵니다. 일단 ctrl+shift+i 로 소스코드를 살펴봅시다. 하ㅎ 제가 javascript는 공부를 하지 않아서 해독하기에는 힘드네요 그래도 여기 잘 보면 'cmd'라는 것이 보입니다. 아까 hello라고 입력해도 command not found라고 뜨는 것을 보아 아마도 cmd와 관련이 있는것 같네요 cmd에서 명령어들을 알아볼 수 있는 'help'를 입력해봅시다. 명령어가 총 4개가 있네요 help는 이미 입력 했으니 나머지 3개를 하나하나 입력헤 봅시다. 더보기 리눅스 명령어 ls: 디렉토리(directory)에 있는 내용(디렉토리, 파일 등)..

webhacking.kr 23번 풀이

your mission is to inject 부분이 힌트를 주고 있네요? 먼저 일단 를 제출해 봅시다. 흠 no hack이라고 뜨는군요 무언가 우회를 해야할 거 같네요 일단 그러면 여러가지를 넣어보고 뭘 넣으면 'no hack'이라고 뜨는지 알아볼까요 ';() --> 그대로 출력 script, alert --> no hack SCRIPT, ALERT --> no hack 이상하게 영어만 걸리는거 같네요 아무 영어나 넣어보죠 aaa --> no hack aa --> no hack a --> a t>q --> t>q 드디어 찾았습니다. 영어가 2글자 이상 연속이면 무조건 걸리는 거였네요 URL로 인코딩해서 넣어봤습니다. (a를 인코딩하면 %61(아스키코드 사용)) %61%61 --> %61%61 그대로 나..