보안 공부 79

webhacking.kr 46번 풀이

level의 숫자를 바꿔서 제출하면 id(Itusy)와 money의 숫자가 매변 다르게 나옵니다 그리고 view-source를 통해 소스코드를 살펴볼까요? 입력한 lv이 admin의 lv과 같으면 문제가 풀리게 됩니다. 그런데 우리가 admin의 lv을 알리가 없겠죠?? SQL injection을 시도해야 할 것 같습니다. 일단 필터링 되는 것들을 간단히 정리해 보죠 addslasher: \(역슬래시) str_replace: (공백), /, *, % preg_match: select, 0x, limilt, cash (대소문자 상관X) 위의 필터링값들을 피해서 select id,cash from chall46 where lv=0 or id='admin' 식으로 만들어 주면 된다. 첫번째 시도: 공백을 +로..

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 그대로 나..

webhacking.kr 54번 풀이

맨 처음에 문제에 들어가면 Password is 뒤에 무슨 글자들이 빠르게 지나갑니다. 흠 이게 뭘까요 일단 Ctrl+Shift+i를 통해 개발자 도구를 열어봅시다. 저희가 집중해야 할 건 answer()함수입니다. answer()함수의 첫번째, 두번쨰 if문들을 고쳐야 하는데요 aview.innerHTML+=x.responseText; i++; if(x.responseText) setTimeout("answer("+i+")",20); if(x.responseText=="") aview.innerHTML+="?"; 위의 부분을 추가해 줍니다. 그리고 부분을 콘솔창에서 실행시켜 주면? 플래그가 나타나게 됩니다!! 이 플래그를 복사해서 Auth메뉴에 들어가 입력하면 성공입니다.

웹해킹 우회 참고 사이트

https://g-idler.tistory.com/61 [SQL Injection] 필터링 우회 방법 모음 1. 공백 문자 우회 1) Line Feed (\n) - 커서(캐럿)를 다음 줄(현재 위치에서 바로 아래줄)로 이동시키는 개행 문자 - URL Encoding: %0a - ex) no=1%0aor%0aid='admin' 2) Tab (\t) - 커서를 한 tab만큼 이동시키.. g-idler.tistory.com https://h232ch.tistory.com/35 6. Filtering 우회 1. Preg_match 우회 - \ : \ 앞에 오는 문자의 경우 특수문자가 아닌 일반문자로 처리하게 됨 - preg_match('/'/'); 여기서 ' 문자를 필터링 함 - www.example.com?i..

webhacking.kr 39번 풀이

소스코드를 봅시다. 음 몇 줄 안되네요 ㅎㅎㅎ 죠습니다. 그럼 중요한 부분만 다시 볼까요? 이번엔 id를 post 방식으로 전달하는군요 즉 URL으로는 전달을 못하나 봅니다. 코드를 다시 살펴보죠 1. id 값이 존재하면 2. id문자열 중 '\\'를 없앤다. 3. id 문자열 중 " ' "를 "''"로 바꾼다. 4. id 문자열을 15글자로 자른다. 5. member 테이블에서 id의 길이가 14보다 작고 id='(입력값)이면 문제가 풀린다. 자 그러면 여기서 중요한 것! id='{$_POST['id']} 라는 것입니다. 네 따음표가 앞에 하나밖에 없습니다. 그래서 우리가 직접 따음표 하나를 넣어서 완성해 줘야 하는데 문제는 바로 이 부분으로 인해 따음표 하나만 쓰기 힘들다는 거죠 그래서 해결방법은 마..

webhacking.kr 16번 풀이

별이 있네요? 노란별 두개, 초록(?)별 하나 그런데 여기서 초록별을 클릭하면 초록별이 사라집니다! 일단 crtl+shift+i 를 눌러 개발자 도구 창을 켜봅시다. 흠 직관적으로 봤을 때 mv()함수에 124전달되면 되는 거 같죠? 콘솔창에 그대로 실행해 봅시다. 그러면? 풀립니다 ㅎ 근데 이건 너무 간단한데요.. 이 문제가 의도한 바도 아닌 거 같고? 그래서 저는 다른 풀이방법을 고민해 봤습니다. r 그럼 이제 하나하나씩 해석해 볼까요 event.keyCode에 의해서 별이 움직여지네요. onkeypress에서 키가 눌러지면 event.keyCode가 아스키코드값으로 바꾸어 주나 봅니다. 일단 각각의 아스키코드 값을 알아보죠. 100 : d 97: a 119: w 115: s 124: | 일단 각 값..