SQL Injection 정리
SQL Injection은 응용 프로그램 보안 상의 허점을 의도적으로 이용하여, 개발자가 생각지 못한 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 공격방법이다.
예시로 임의의 SQL 로그인 구문을 들겠다.
select * from users where userid='' and userpassword=''
이런 로그인 SQL 구문이 있다고 예를 들겠다.
admin < 아이디로 로그인 하면 플래그가 출력된다고 할 때, admin이라는 아이디가 있다는것만 알고 비밀번호는 모른다 하면 sql injection으로 익스를 한다.
userid=admin' or 1=1-- 이렇게 하면 userid엔 admin이 들어가고, 뒤는 --로 주석처리 되어 조건식이 참이 된다.
그래서 익스가 된다.
Blind SQL Injection 정리
Blind SQL Injection은 데이터베이스로부터 특정한 값이나 데이터를 전달받지 않고, 단순히 참과 거짓의 정보만 알 수 있을 때 사용한다.
로그인 폼에 SQL Injection이 가능하다고 가정 했을 때, 서버가 응답하는 로그인 성공과 로그인 실패 메시지를 이용하여, DB의 테이블 정보 등을 추출해 낼 수 있다.
위 그림은 Blind SQL Injection을 이용하여 DB의 테이블 명을 알아내는 공격 방법이다.
abc123’ and ASCII(SUBSTR(SELECT name From information_schema.tables WHERE table_type=’base table’ limit 0,1)1,1)) > 100 -- 이라는 구문은 limit 키워드를 통해 하나의 테이블만 조회하고, SUBSTR 함수로 첫 글자만, 그리고 마지막으로 ASCII 를 통해서 ascii 값으로 변환해준다 만약 조회되는 테이블명이 Hello라면 H가 출력 될 것이고, 그걸 1 ~ 100까지 아스키코드로 비교한다. 그러면 H의 아스키코드인 72일 때 참이 될 것이고, 이렇게 테이블명을 알아낼 수 있다.
'Layer7 > WriteUp' 카테고리의 다른 글
[LOS]cobolt WriteUp (0) | 2024.06.03 |
---|---|
[LOS]gremlin WriteUp (0) | 2024.06.03 |
[Dreamhack]simple_sqli WriteUp (1) | 2024.06.02 |
[Webhacking.kr]Old-43 파일 업로드 취약점 (0) | 2024.05.29 |
파일 업로드 다운로드 취약점 대응방안 (0) | 2024.05.29 |