일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Volatility
- InsecureBank
- base64
- logstash
- vulnhub
- foremost
- 파이썬
- 안드로이드
- elasticsearch
- ctf
- igoat
- Docker
- Openstack
- NTFS
- SQL Injection
- ESXi
- lord of sql injection
- diva
- Reflected XSS
- Suninatas
- 인시큐어뱅크
- otter
- kibana
- 2018
- beebox
- frida
- CTF-d
- MFT
- Strings
- XSS
- Today
- Total
목록SQL Injection (9)
Information Security
목표: 한번의 검색으로 DataBase의 모든 사용자 정보 출력 '(싱글 쿼터)를 입력했다. Logcat 정보를 보면 SQL 쿼리 SELECT * FROM sqliuser WHERE user = ''' 오류가가 보이는 것을 알 수 있다. ' or '1'='1' -- 참값을 만든면 사용자 정보가 노출되는 것을 알 수 있다.
SQL Injection - 데이터베이스 비정상적인 쿼리를 입력해 조작하는 취약점이다. 위치 iGoat\SQL Injection\SQLInjectionExerciseController.m 영향 데이터베이스 정보가 노출될 위험이 있다. 진단 SQL Injection 문제에서 i2sec을 먼저 입력했다. 그림 12-1처럼 데이터를 입력했지만 Articles 아무 내용이 보이지 않았다. 이번에는 입력란에 아무 내용을 입력하지 않았다. 아무것도 입력하지 않고 Search 했는데 2개의 기사가 보이는 것을 알 수 있다. 이번에는 SQL Injection 쿼리문 ‘ or ‘1’=’1을 입력했다. 그림 12-4에서 보이지 않는 마지막 기사가 보이는 것을 알 수 있다. SQLInjectionExerciseControl..
Time Based - 영화 검색 결과를 이메일로 보내는 기능을 한다. 참 거짓에 상관없이 검색 결과는 모두 동일한 메시지를 출력한다. 따라서 참을 구별하기 위하여 sleep 함수를 사용하여 인젝션을 시도한다. Level (Low) ‘ or 1=1 # 참인 쿼리를 입력했는데 아무 반응이 없었다. ‘ or 1=2 # 거짓인 쿼리를 입력했는데 아무 반응이 없었다. 참과 거짓일 때 다른 반응을 출력하도록 쿼리에 sleep 함수를 사용한 결과 빙글빙글 5초 동안 waiting 하는 것을 알 수 있다. 거짓일 경우에는 참과 반응이 다르게 아무 반응이 없는 것을 알 수 있다. 아무 반응이 없는 것을 알고 거짓인 것을 알 수 있다. waiting동작하는 것을 보고 참인 것을 알 수 있다. Level (Medium) ..
Blind SQL Injection 공격 - 쿼리의 결과를 참과 거짓만으로 만 출력하는 페이지에서 사용하는 공격 한다. - 출력 내용이 참과 거짓 밖에 없어서 데이터베이스의 내용을 추측하여 쿼리를 조작한다. Level (Low) 데이터 aaa를 입력한 결과 데이터베이스에 내용이 존재하지 않는 다고 메시지를 보여준다. Iron Man을 입력해 데이터베이스에 존재하는 것을 알 수 있다. 결과가 참이라는 쿼리문을 ‘ or 1=1 # 입력했는데 데이터베이스에 존재한다는 것을 알 수 있다. 결과가 거짓이라는 쿼리문을 ‘ or 1=2 # 입력했는데 데이터베이스에 존재하지 않는 것을 알 수 있다. id가 1인 영화 데이터베이스 명이 첫 번째 글자가 G인 쿼리에서 참이라는 결과를 알 수 있다. id가 1인 영화 데이터..
SQL Injection (Login Form/User) Level (Low) Login 1234 Password 1234를 입력해 Invaild credentials! 메시지를 보여주는 것을 알 수 있다. Login bee Password bug를 입력해 bee 계정 정보를 알려주는 것을 알 수 있다. Login ‘ or 1=1 # Password bug를 입력해 A.I.M. 계정 정보를 알려주는 것을 알 수 있다. Level (Medium) Level (Medium)은 그림 1-3처럼 Iron Man ‘ or 1=1# bug 입력해 Invalid credentials! 메시를 보여준다. 대응방안 addslashes 함수를 통해 쿼터(', ") 같은 특수 문자들을 포함하고 있는 문자열에 역 슬래쉬(\)..
SQL injection (Login Form/Hero) - hero 그룹에 속하는 사용자들이 로그인하면 로그인 사용자의 비밀번호 힌트를 출력한다. Level (Low) Login 1234 Password 1234 입력해 Invalid credentials! 메시를 보여주는 것을 알 수 있다. Login Iron Man, Password ‘ or 1=1 #을 입력해 Neo 계정이 보이는 것을 알 수 있다. Level (Medium) Level (Medium)은 그림 1-2처럼 Iron Man ‘ or 1=1 #을 입력하면 Invalid credentials! 메시지를 보여준다. 대응방안 addslashes 함수를 통해 쿼터(',")같은 특수 문자들을 포함하고 있는 문자열에 역 슬래쉬(\)를 넣음으로써 오..
Level (Low) 그림 1-1을 보여주는 CAPTCHA를 입력했다. SQL injection 공격 ‘ or 1=1 #을 입력해 영화 정보가 보이는 것을 알 수 있다. Level (Medium) CAPTCHA 문자를 입력했다. 그림 1-2처럼 ‘ or 1=1 # 공격을 했지만 데이터베이스 정보가 보이지 않는 것을 알 수 있다.
SQL Injection(POST/Search) - POST 메서드로 HTTP 연결 요청을 보내고 있어서 다르게 URL 변수가 나타나지 않는다. php 페이지와 마찬가지로 입력란에 사용되는 변수가 취약하므로 입력란에 SQL 쿼리를 입력하면 취약점 여부를 확인할 수 있다. Level (Low) 입력란에 abcd 입력 후 아무것도 내용이 보이지 않는다. 버프스위트로 abcd’ or 1=1 # 수정 후 데이터 베이스에 전송했다. SQL Injection 쿼리문 전송 후 데이터베이스 내용을 전부 보여준다. Level (Medium) Level (Medium)은 그림 1-2처럼 내용을 수정해 전송했다. 그림 1-3과는 다르게 데이터베이스 내용이 보이지 않는 것을 알 수 있다. 대응방안 mysql_real_esca..