목록Wargame (116)
cgy12306
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
#, select, (, whitespace, limit, =, 0x 필터링 되어있다. 또한, 쿼리문에서 no가 ()로 막혀있다 id와 no를 거짓값으로 만들고 or로 뒤의 쿼리문을 참으로 만들면 된다. whitespace는 %0b(VT)로 우회하고, =은 like로 우회하면 되고, #은 --로 주석처리 해주면 된다. 여기서 주의해야 할 점은 주석뒤에 공백처리를 해줘야 한다는 점이다. 공백을 넣지 않으면 위의 소스코드에서 --)로 끝나기 때문에 정상적으로 주석처리가 되지 않는다. https://webhacking.kr/challenge/web-12/?no=0)%0bor%0bno%0blike%0b2%0b--%0b
LOG injection 문제이다. Log Injecion은 로그 파일에 원하는 코드를 삽입할 수 있는 공격이다. 페이지 소스를 보게 되면 admin page가 주석처리 되어 있다. 해당 페이지로 접속하게 되면 로그들을 볼 수 있다. 나의 IP도 확인이 가능하다. IP 주소 :admin 을 개행해서 넘기게 되면 풀리는 문제인것 같다. %0a로 개행을 해서 넘겨보자. %0a 그대로 넘어가는 듯하다.fiddler로 패킷을 까보자. %가 %25로 인코딩 돼서 넘어가고 있다. 우리는 개행을 해주는 코드로 바꿔줘야한다. 를 아래와 같이 변경 해 준다. hex를 직접 넣어준다. 32 32로 되어있는 부분을 0D와 0A로 바꿔주면 된다. 변경후 Run to Completion을 눌러서 패킷을 보내면 문제가 풀리게 된다.
? 부분의 문자가 계속 바뀌다가 마지막에 ?로 바뀐다. 웹 페이지 소스를 보면 시간을 따로 정해서 한 글자씩 보여주는 자바스크립트이다. setTimeout("answer("+i+")", 20);에서 20을 500으로 늘려서 다음 글자가 뜨는 딜레이 시간을 늘려준다. 모두 받아 적으면 FLAG{a7981201c48d0ece288afd01ca43c55b}라는 글자가 뜬다. 이 플래그를 Auth에 가서 입력을 하게 되면 클리어 된다. aview.innerHTML=x.responseText; 부분을 +=로 바꿔줘서 화면에 이어서 출력할 수 있게 된다. 또 if(x.responseText=="") aview.innerHTML="?"; 코드를 지워서 페이지에 플래그를 유지할 수 있게 해준다.
id를 입력하는 칸이 보이고, 제출 보튼이 보인다. id를 5글자를 최대로 입력할 수 있다. https://webhacking.kr/challenge/js-6/?id=123123 하지만 GET방식으로 인자를 넘겨주게 되면 6글자 이상을 넘겨줄 수 있다. admin을 입력하게 되면 아래와 같이 you are not admin이 출력이 된다. https://webhacking.kr/challenge/js-6/?id=admin admin 사이에 NULL문자를 넣어보자. NULL문자는 %00이다. https://webhacking.kr/challenge/js-6/?id=ad%00min
ID : death_knightPW : got the life