Osori Development Studio

sfw8 write up 본문

전공쪽/동아리 관련

sfw8 write up

OSOR2 2021. 1. 11. 16:07

일단 소스코드는 다음과 같다. javascript 함수로 정규표현식을 사용해서 admin, img, iframe, onload, onerror, write,concat,join,char 등을 대소문자 구분없이 검증하고 있다.

  <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>SFW8</title>
  </head>
  <body>
    <form name ="whoUR" action="check.php" method="post" onsubmit="return myfunction()">
      <h1>Hi admin! Alert 'admin'😕;</h1>
      <h2>input field is below</h2>
       <input type="text" name="id" placeholder="write" value="">
       <input type="submit" value= "submit">
    </form>
    <script>

     const warningTitleCSS = 'color:red; font-size:60px; font-weight: bold; -webkit-text-stroke: 1px black;';
     const warningDescCSS = 'font-size: 18px;';

     console.log('%cNo NO. Stop!', warningTitleCSS);
     console.log("%cDon\'t use this.", warningDescCSS);
     console.log('%cjust use blank, please😂.', warningDescCSS);

    function myfunction(){
    var inputa = document.whoUR.id.value;
    var regExp = /admin|\+|img|iframe|onload|onerror|write|concat|join|char/gi;
    if(inputa.match(regExp)){
      alert("😟");
      return false;
    }
    return true;
    }
     </script>
  </body>
</html>

 

 

 그래서 내가 생각한 풀이 방법은 이렇다. javascript는 페이지를 로딩할 때 같이 로드되는 client side 언어이다. 그런데 개발자들은 항상 조심해야 한다. javascript는 끌 수 있기때문에 server side에서도 검증을 같이 해주어야 하고 에러로그를 남겨야 한다. 그런데 이 문제의 경우에는 그런 것이 없었다. 

 

그래서 먼저 자바스크립트를 끄고 페이지를 로딩한다.

껐다. 

페이지 로딩이 끝난 후에는 다시 켜준다. 그리고 <script>alert('admin')</script> 입력해준다.

너무 날빌인것 같기도 하지만 엄연한 공격 방법이라고 생각했다. 

 

그리고 그냥 두번째 방법도 어려워 보이지 않아서, 해보았다. char이 안들어간 함수를 이용하는데 decode만 가능하면 되는거 아닌가? 싶었고, 가장쉬운 인코딩 함수는 base64 인코딩/디코딩이 있겠다.  

최근에 웹페이지를 만들면서 해킹 시도 탐지기능을 추가하고 있는데, 해킹시도에서 어떤 공격을 어떻게 했는지 알기 위해서는 sql injection의 완전 방지가 가능한 prepared statement 가 아닌

쿼터 문자도 mysql db에 들어갈 필요가 있었고, base64 인코딩에서는 쿼터문자가 쓰이지 않는다는 것을 이용해서 이용한 방법이다. 

<script>alert(atob("YWRtaW4="))</script>

 

잘 된다. 

'전공쪽 > 동아리 관련' 카테고리의 다른 글

webhacking.kr  (0) 2021.01.27
sfctf winter write up  (0) 2021.01.26
sfw5 write up  (0) 2021.01.10
xss challenges  (0) 2021.01.07
sfw6 up  (0) 2021.01.07