[+] 개인적인 공부이니 틀린부분 지적 ㄳ
AJAX(Asynchronous JavaScript and XML)
- 자바스크립트와 JSON을 비동기화시켜 혼합하여 사용하는 기술
- 페이지 이동없이 고속으로 화면을 전환할 수 있다
- 서버 처리를 기다리지 않고, 비동기 요청이 가능하다
- 수신하는 데이터 양을 줄일 수 있고, 클라이언트에게 처리를 위임 가능
JSON(JavaScript Object Notation)
- 자바스크립트 기반으로 개발되었고, 여러 프로그래밍 언어에서도 사용할 수 있는 독립형 언어
- 웹 브라우저와 웹 서버 간의 비동기 통신, 웹 서버 데이터 교환 등에 사용
- 자바스크립트와 PHP간에 JSON으로 데이터 전달.
JQuery
- HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리.
Low 레벨
1. 기본적인 페이지와 동작
- 기본적인 페이지 사진. 입력폼이 존재하지만, 버튼이 없는 것을 확인.
- i 만 입력했는데 자동적으로 문자열 i 가 들어있는 title을 검색해줌.
- 마찬가지로 ir 을 입력하면, 문자열 ir 이 들어간 title들을 출력해줌.
2. 내부적인 동작
- 입력폼(title)에 ir 를 입력했을 때의 Request를 Burp Suite로 인터셉트한 사진
- bWAPP의 페이지는 sqli_10-1.php였는데 sqli_10-2.php를 요청하고있음
- 요청값에 대한 Response 사진
- ir 이 포함된 영화에대한 정보만 JSON 형태로 반환
- 즉, 웹페이지의 전체를 받아오는것이 아니라, 웹페이지의 테이블에 해당하는 내용만 출력을 하게 됨.
- bWAPP의 SQL Injection(AJAX/JSON/JQuery) 페이지의 소스 보기 화면
- 내부적으로 자바스크립트가 동작.
- Key up이 발생하면, 입력폼에서 입력한 값이 search 변수에 대입되는 것을 확인.
- 또한, 입력한 값이 저장된 search를 sqli_10-2.php에 호출을 하고 JSON형태로 받아오는것으로 보이며, JSON형태로 받 아온 값을 테이블로 만들어주는 것으로 보임.
- 또한, 입력한 값을 문자열 취급하는 것으로 판단됨.
3. SQL Injection
- 입력한 값이 문자열취급되는것으로 판된되므로 ' or 1=1 # 으로 확인하면 될 것같음.
- ' or 1=1 # 를 입력한 사진. 예상과 같게 모든 값이 출력되는것을 확인할 수 있음.
3. SQL Injection (UNION Select) -1-
- union select로 일치하는 컬럼 값 확인.
3. SQL Injection (UNION Select) -2-
- 0' union select 1,@@version,@@datadir,4,5,6,7 # 를 입력한 사진.
- DB 시스템 명령어 사용하여 DB서버의 정보들 확인 가능.
3. SQL Injection (UNION Select) -3-
- 0' union select 1,no,name,4,id,6,7 from testdb.testtable1 # 입력한 사진.
- testdb 데이터베이스안에서 testtable1 테이블의 no, name, id 컬럼값을 출력.
3. SQL Injection (UNION Select with LIMIT) -4-
- 0' union select 1,no,name,4,id,6,7 from testdb.testtable1 LIMIT 2,4 # 를 입력한 사진.
- 여느 떄와 마찬가지로 LIMIT 으로 출력되는 레코드 개수를 조정 가능.
4. Low 레벨 대응방안 보기
- functions_external.php의 no_check함수를 사용. 이거 한 20번은 설명한듯 죽을거같아..죽..죽여줘....
- 입력값을 검증하지 않고 바로 리턴해주는 것을 확인. 이거 한 20번은 설명한듯 죽을거같아..죽...죽여줘....
High 레벨
1. SQL Injection
- 0' union select 1,no,name,4,id,6,7 from testdb.testtable1 LIMIT 2,4 # 를 입력한 사진.
- SQL Injection이 통하지 않음.
2. High 레벨 대응방안 보기
- functions_external.php의 sqli_check_2 함수를 사용
- mysql_real_escape_string 함수를 사용하여 대응
- 문자열에서 특수 문자열을 이스케이프하여 mysql_query() 수행시 안전하게 질의할 수 있도록 함.
'WebHacking > bWAPP' 카테고리의 다른 글
[bWAPP] SQL Injection (Login Form/Hero) (0) | 2021.10.18 |
---|---|
[bWAPP] SQL Injection (CAPTCHA) (0) | 2021.10.15 |
[bWAPP] SQL Injection (Metasploit) (0) | 2021.10.15 |
[bWAPP] SQL Injection (SQLMAP) (0) | 2021.10.15 |
[bWAPP] SQL Injection (POST/Select) (0) | 2021.10.15 |