일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 사이버포렌식 #포렌식 #FAT
- 포렌식 #사이버포렌식 #Forensic #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터배열 #c언어포인터 #포인터 #c포인터
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #robots.txt #검색엔진노출
- XSS #ReflectedXSS
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #BrokenAuthentication
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c2차원배열동적할당 #c언어동적할당 #c동적할당 #c언어동적할당2차원배열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #로또번호생성 #로또번호만들기 #중복제거 #중복제거알고리즘
- 파일시스템과파티션 #포렌식 #사이버포렌식 #Encase #Forensic #파티션 #파일시스템 #정보보안
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #SQLi #sqlinjectioon
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #선택정렬 #선택정렬알고리즘
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #포인터 #포인터변수 #c언어주소 #주소
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #SQLi #TimeBaseSQLi #sqlinjection
- #FAT파일시스템 #파일시스템구조 #파일시스템 #Forensic #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터의포인터 #c언어2중포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #Call by value #Call by reference
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c배열포인터 #c언어포인터 #c언어배열포인터 #배열포인터
- c언어malloc #동적할당 #c언어동적할당 #c언어malloc사용하기
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #C동적메모리할당 #malloc #메모리
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #bruteFource #무차별공격
- c언어문자열처리방법 #c언어문자열
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #phpcodeinjection #injection
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #commandinjection
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터 #c언어포인터연산
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #PUT메소드 #PUT #HTTP메소드 #취약점
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #CSRF #
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #xss #storedxss #CrossSiteScripting
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터와문자열 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT
- Today
- Total
Hello Security World
[Web Hacking] Bee - Box -Union Base SQL Injection(POST)- 본문
Union Base SQL Injection
1-2 SQL INJECTION 공격 POST (난이도 하)
‘Sqli_6.php’ 페이지는 POST 메서드로 HTTP 연결 요청을 보내고 있어서 sqli_1.php 페이지와
는 다르게 URL에 변수가 나타나지 않는다. 그러나 sqli_1.php와 마찬가지로 검색란에 사용
되는 movie 변수가 취약하므로 검색란에 SQL쿼리를 입력하면 취약점 여부를 확인할수 있다.
이번에는 프락시 도구로 변수를 확인하고 SQL 인젝션을 시도한다. 프록시 도구로는 버프스
위트를 사용한다. 버프스위트에서 [intercept is on]이 활성화되어 있으면 Raw 탭 내용에서 공
격을 시도할 변수를 찾거나 HTTP요청 헤더 밑에 실리는 body에서 변수를 찾는다. Body에
실린 ‘title’과 ‘action’변수 둘 다에 SQL인젝션 공격을 시도해 보자.
![](https://blog.kakaocdn.net/dn/dRHc7J/btqDQtq4s8P/RRwpz3b6JNXe2iRnTcD9J0/img.png)
작음따옴표를 입력하면 결과를 항상 참으로 만드는 쿼리를 입력하여도 SQL구문 오류가 발
생하기 때문에 작은따옴표를 사용하지 않고 SQL 인젝션 공격을 위하여 기존 쿼리와 결합하
여 결과를 출력하는 UNION SELECT 구문을 사용한다. 따라서 기존 쿼리에서 사용하는 칼럼
수를 찾아 movie 변수에 주입할 쿼리의 칼럼 수와 맞춘다.
![](https://blog.kakaocdn.net/dn/dp3fMN/btqDQ9yVchX/k2Yjw4lTEcbwpk7B244790/img.png)
버프스위트로 movie변수에 조작한 SQL인젝션 구문을 입력한다. 이때 실제 사용하는 변수를
넣으면 표에는 그 값에 해당하는 데이터가 나오기 때문에 사용하지 않는 숫자 값을 넣어야
한다.
Movie 변수는 숫자형으로 선언되어 있는 칼럼이다 따라서 문자를 입력할경우 오류를 발생시
킨다.
![](https://blog.kakaocdn.net/dn/bn42Ue/btqDSiPqBMY/xwrFKYz7Kdki4tTqUxhTF1/img.png)
조작한 SQL구문을 버프위트로 잡아서 movie변수에 삽입한다.
![](https://blog.kakaocdn.net/dn/qzFgG/btqDSjgtlzq/5AzRkD80PgYjW8H2xN80MK/img.png)
조작한 SQL구문의 결과로 웹 어플리케이션의 데이터베이스 명과 데이터베이스 서버 버전,서
버에서 MySQL 이 위치한 경로를 출력한다.
![](https://blog.kakaocdn.net/dn/Csbhc/btqDTkssRpd/LCtk1kIk1KcHlWLOBQkjr0/img.png)
사용자의 호스트 이름,사용자 이름과 비밀번호를 출력하는 SQL구문을 입력한다.
![](https://blog.kakaocdn.net/dn/WcRkX/btqDSiBTvKP/WTKjsHQVZNdOg5AqcrVqY0/img.png)
인젝션 결과가 페이지에 보인다. ‘mysql’ 테이블의 호스트 이름과 사용자 이름,비밀번호의 해
시 값을 출력한다. 원래는 모든 사용자의 정보가 보이지만 sqli_13.php페이지는 결과값을 하
나만 출력하기 때문에 처음에 저장된 정보만 보인다.
![](https://blog.kakaocdn.net/dn/bsUnaY/btqDSA3nsy8/WsGi75zqHMNF95mfv7ySMK/img.png)
테이블 명을 파악하기 위하여 다음과 같은 SQL구문을 movie변수에 삽입한다. 현재 데이터베
이스 서버 버전이 5.0 이상이기 때문에 다음과 같이 information_schema로 데이터베이스에 저
장된 테이블을 파악한다. Where 절로 기본 제공되는 information_schema와 mysql을 제외하고
사용자가 지정한 스키마만 출력하도록 조건을 넣는다.
![](https://blog.kakaocdn.net/dn/QafUK/btqDQsyU0GK/BkGDzQAyJa3NrAp3xyKqY0/img.png)
SQL 인젝션 결과 , 데이터베이스의 테이블 스키마와 테이블 명 , 칼럼 명이 출력된다.
SQL map
![](https://blog.kakaocdn.net/dn/bEVBum/btqDRMiVJwO/shTvkkGKZaP7wPvBWdyzz1/img.png)
수동으로 확인할 수 있는 정보가 적기 때문에 SQL인젝션 자동화 도구인 sqlmap 을 사용하
여 데이터베이스와 테이블 명을 알아본다. 위와 같이 칼리 리눅스에서 콘솔에서 sqlm
ap 명령어를 실행하면 된다.
![](https://blog.kakaocdn.net/dn/dIptwD/btqDQTiIf6L/9uVKKH8TKDVRe1oTJ4kYk0/img.png)
-u 옵션에 자동화 공격을 시도할 페이지의 주소를 입력하고, POST 메소드를 이용 하고 있기
때문에 –data 옵션을 사용하여 SQL 인젝션 을 시도할 변수를 명시한다. 또한, bwapp는 로그인
후 사용이 가능하기 때문에 –cookie 옵션으로 쿠키 값을 입력해야 변수에 대한 자동 인젝션
기능이 수행된다. 쿠키 값은 버프스위트로 알 수 있으며 HTTP연결 요청 헤더 중 ‘cookie’
변수의 내용이다.
데이터베이스를 알아낼 때 취약한 파라미터가 movie뿐이므로 –p 옵션에서 SQL인젝션을 시도
할 변수를 movie로 지정한다. 또한, 테이블명을 알아보기 위하여 --DBs옵션 대신 –tables 옵션
을 넣어 다음과 같이 sqlmap사용 명령어를 입력한다.
![](https://blog.kakaocdn.net/dn/OJyq3/btqDPYkMgeh/qMGHk3S3PJYOph8HwijXDk/img.png)
sqlmap 사용 결과로 모든 데이터베이스의 테이블 명을 출력하지만, sqli_13.php페이지의 데이
터베이스는 bWAPP이므로 bWAPP 데이터베이스의 테이블 명만 확인한다. movie 변수에는 현
재 페이지에서 사용하는 정보, users 테이블에는 사용자 정보가 저장되어 있다고 추측된다.
![](https://blog.kakaocdn.net/dn/cq5MpS/btqDRLYACTK/BE4gCUfLDGtHMGU7ir9wMk/img.png)
이번에는 users 테이블의 칼럼을 확인하기 위해 sqlmap 사용 명령어를 입력한다. 테이블 명
을 알기 위하여 사용한 –tables 옵션 대신 --columns옵션을 사용한다.
![](https://blog.kakaocdn.net/dn/byL4ZG/btqDQTptaDr/rwlp3dh12iLdklmPOOCU50/img.png)
sqlmap 결과로 현재 데이터베이스의 테이블에 있는 칼럼 명을 출력한다. 사용자의 계정 정보
가 있다고 추측한 users테이블의 칼럼 명을 확인한다. 칼럼 명은 사용자의 계정 정보와 관련
있는 ‘id , login , password’이다.
sqlmap에서 알아낸 정보를 조합하여 수동으로 UNION SELECT 구문을 입력한다. 테이블은 us
ers로 지정하고 노출되는 칼럼 순서에 내용을 알고 싶은 칼럼 명을 입력한다.
![](https://blog.kakaocdn.net/dn/bdy7PF/btqDSAoK4OL/TVx4xseT5jOK69dBiXHSe1/img.png)
movie 변수에 쿼리를 입력하고 버프스위트에서 [Forward] 버튼을 클릭한다.
![](https://blog.kakaocdn.net/dn/JfmCW/btqDSAoK4MQ/QQ52JdMPr5hUNXlr4cpyE1/img.png)
union 쿼리문을 이용하여 노출된 데이터베이스의 내용이다. 관리자의 이메일과 해시화된 비
밀번호가 노출되었다.
1-2 SQL INJECTION 공격 POST (난이도 상)
![](https://blog.kakaocdn.net/dn/baW82Q/btqDPYyjssl/MLbZvUTstfkb9Mf6JU2K4k/img.png)
(난이도 상) 에서 제시한 대응방안을 살펴보자. movie변수에 UNION SELECT구문을 입력하여
도 SQL구문 오류 메시지가 아닌 영화를 찾을 수 없다는 메시지를 출력하고, 난이도 하와는
다르게sqli_13.php페이지가아닌‘sqli_13-ps.php’페이지다.
![](https://blog.kakaocdn.net/dn/b8aLxD/btqDQsMth7J/9sF3yMjYzEeVzlamzB9Mz0/img.png)
movie 변수에 입력한 숫자 값이 id 변수에 들어가는데, id변수는 recordset에 저장된 데이터베
이스 내용의 순서 번호를 뜻한다. bind_param함수를 사용하여 데이터베이스에서 사용하는 변
수들을 불러오고 execute 함수로 쿼리를 실행한다. 그다음 bine_result함수로 각 변수를 연결하
고 sotre_result 함수로 쿼리 결과를 저장한다.
'정보보안 > BWAPP Bee-box' 카테고리의 다른 글
[Web Hacking] Bee - Box -OS Command Injection- (0) | 2020.05.03 |
---|---|
[Web Hacking] Bee - Box -Blind SQL Injection- (0) | 2020.05.03 |
[Web Hacking] Bee - Box -Union Base SQL Injection(GET)- (0) | 2020.05.03 |
[Web Hacking] Bee - Box -HTML Injection- (0) | 2020.05.03 |
[Web Hacking] Bee - Box -OWASP TOP 10 및 설치- (0) | 2020.05.03 |