본문 바로가기
Hacking/bWAPP

SQL-Injection AJAX, Login, Blog 

by 알거음슴 2021. 6. 14.

SQL-Injection AJAX/JSON/jQuery

용어설명

JSON : Web ServerData를 주고받을 때 Data를 표현하는 방법중 하나이며 Java script 의 형식으로 객체를 표현한다, 이해가 쉬우며 경량의 Data교환형식이다.

jQuery : Java script library 중 하나로, Client 에서 script 언어를 사용할 때 활용됨.

AJAX : HTML, Java script, JSON을 혼합하여 사용하는 기술 브라우저의 XMLHttpRequest를 활용하여 페이지 전체를 새로 고치지 않고 페이지의 일부분만을 데이터를 로드하는 기법이며 비동기통신, Client Server 간의 XML 데이터를 주고받는 기술.

 

1. SQL-Injection AJAX/JSON/jQuery

해당 취약점 test 화면, 값을 입력 시 자동으로 해당 단어가 포함된 내용이 Server에서 로드 되며, URL을 확인해 보니 GET-Method 방식이 활용되어 변수가 노출되어 있는걸 볼 수 있다.

 

페이지의 source를 확인해보자.

<script>
        $("#title").keyup(function(){
            // Searches for a movie title
            var search = {title: $("#title").val()};
 
            // AJAX call
            $.getJSON("sqli_10-2.php", search, function(data){
                init_table();
                // Constructs the table from the JSON data
                var total = 0;
                $.each(data, function(key, val){
                    total++;
                    $("#table_yellow tr:last").after("" + val.title + "" + val.release_year + "" + val.main_character + "" + val.genre + "Link");
                });
                // Empty result
                if (total == 0)
                {
                    $("#table_yellow tr:last").after("<tr height='30'><td colspan='5' width='580'>No movies were found!</td></tr>");
                }
            })
        });
        function init_table(){
            $("#table_yellow").html("<tr height='30' bgcolor='#ffb717' align='center'>" +
                    "<td width='200'><b>Title</b></td>" +
                    "<td width='80'><b>Release</b></td>" +
                    "<td width='140'><b>Character</b></td>" +
                    "<td width='80'><b>Genre</b></td>" +
                    "<td width='80'><b>IMDb</b></td>" +
                    "</tr>"
                    );
        }
</script>

내용 확인 시 title 이 변수인것으로 확인되며, getJSON을 통해서 AJAX를 통한 XMLHttpRequest 통신을 진행하고 있는것으로 확인된다. SQL query문을 넣을경우 응답하는것으로 보아 SQL-Injection 공격 query문 등을 통한 test진행이 필요할것으로 확인됨. 이전 활용한 SQL query문을 통해 공격을 시도해본다.

 

2. SQL-Injection AJAX/JSON/jQuery Attack

“(더블쿼터) 와 달리 ‘(싱글쿼터) 의 경우 아무런 반응이 없는것으로 보아 완벽하지않은 query문으로 인식되는 것을 확인. 이를 기반으로 이전 공격 코드들을 활용하여 접근 가능 지점을 확인한다.

‘ or 1=1# (Database 내 모든 정보출력)

' union select all 1,2,3,4,5,6,7#

' union select 1,table_name,3,4,5,6,7 from information_schema.tables#

 

비동기화 방식임으로 공격문구의 성립 시 바로 즉각적인 페이지의 변화가 있음을 확인할 수 있다. 모든 SQL-Injection이 그러하듯 특수기호등의 필터링이 있어야한다.

 

'Hacking > bWAPP' 카테고리의 다른 글

Broken Authentication – Password Attack  (0) 2021.06.21
Broken Authentication – CAPTCHA  (0) 2021.06.14
SQL Injection - Login Form  (0) 2021.06.14
SQL Injection - GET Select / POST Select  (1) 2021.06.07
HTML Injection - Reflected(POST)  (0) 2021.06.03