write-up(web)/webhacking.kr

[Webhacking.kr] old-54

문제 Password is ? ? 부분이 script문에 의해서 계속 변화한다. 문제풀이 id가 aview인 HTML에 text를 넣고 초마다 보여준다. aview.innerHTML=x.responseText; ? function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ return null; } } x=..

[Webhacking.kr] old-48

문제 파일 업로드 기능이 있고, 정상적으로 파일이 올라가는 것을 확인할 수 있다. 웹쉘이 올라가는데, 값이 출력되지 않아서 이렇게 푸는 건 아닌 것 같다. Delete 버튼을 누르면 삭제가 되며 파라미터 mode, time에 각각 del과 시간이 전송되는 것을 볼 수 있다. 문제풀이 mode 파라미터에 del이 전송될 때, rm /upload/[파일명] 형태로 실행되어 삭제된다. 파일명을 조작하여 rm 명령어와 원하는 명령어를 실행할 수 있다. rm /upload/;ls burp suite로 filename을 ;ls로 조작하고 업로드시킨 후, Delete를 누르면 flag값을 확인할 수 있다.

[Webhacking.kr] old-47

문제 문제풀이 어떠한 값을 입력해도 결과는 같게 나온다. mail과 관련된 문제라는 것이 유일한 힌트이다. mail header injection을 통해 문제를 해결할 수 있을 것 같다. 이메일 헤더에 Cc(참조)나 Bcc(숨은참조)를 추가하면 공격자에게 메일을 보낼 수 있는 취약점을 이용한다. input 태그를 textarea 태그로 변경하고, 참조나 숨은참조를 이용하면 flag 값을 얻을 수 있다.

[Webhacking.kr] old-46

문제 SQL INJECTION level : view-source id가 admin일 때 문제가 해결된다. 문제풀이 lv=1부터 4까지는 정보가 나오며, 그 외에는 정보가 나오지 않는다. 공백, /, *, %, select, 0x 등 입력값에 대한 검증이 이루어진다. 이를 우회하여 아래와 같은 구문을 입력하면 문제가 해결된다. or 대신 ||, 작은따옴표 대신 char 함수, 2진수를 이용했다. select id,cash from chall46 where lv=0||id=char(97,100,109,105,110) select id,cash from chall46 where lv=0||id=0b0110000101100100011011010110100101101110