허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
Lord of the SQL Injection - orge
preg_match : porb _ . ( ) 필터링이 되어 있고 i 옵션을 통하여 대소문자를 구분하지 않음 pw='필터링값'이 있을 경우 "No Hack ~_~" 문구를 출력합니다.
preg_match : or, and 문자가 필터링이 되어 있고 i 옵션을 통하여 대소문자를 구분하지 않음 pw='필터링값'이 있을 경우 "HeHe" 문구를 출력합니다.
or 문자는 || (%7c%7c) 문자로 우회 가능
and 문자는 &&(%26%26) 문자로 우회 가능
addslashes() 함수 : 이스케이프해야 하는 문자 앞에 백슬래시가(\) 추가된 문자열을 반환합니다. 이러한 문자는 다음과 같습니다.
작은따옴표( ')
큰따옴표( ")
백슬래시( \)
NUL(NUL 바이트)
$query = "select pw from prob_orge where id='admin' and pw='{$_GET[pw]}'";
해당 문제는 'admin'의 패스워드를 알아내는 문제입니다.
bWAPP DB 와 같이 비교하면서 문제를 살펴보도록 하겠습니다.
bWAPP DB
1. bWAPP DB의 'users' 테이블의 컬럼 이름 출력
2. 'users' 테이블의 'login', 'password' 컬럼의 정보 확인
3. length 함수를 이용하여 'bee' 계정의 패스워드 길이 확인
해당 문제에서도 length 함수를 이용하여 패스워드 길이 추측이 가능하지만 패스워드 길이가 길어지면 그만 큼 시간이 오래 소요되기 때문에 앞에서 만들어 두었던 파이썬 코드를 이용하여 확인해 보도록 하겠습니다.
pw=' || id='admin' && length(pw)=1#
pw=' || id='admin' && length(pw)=2#
pw=' || id='admin' && length(pw)=3#
.
.
.
파이썬 코드를 이용한 패스워드 길이 확인
'admin' 의 패스워드 길이는 8자리 인 것을 확인하였습니다.
4. substr 함수를 이용하여 패스워드 확인
bWAPP DB에서 substr 함수를 이용하여 'bee' 계정의 패스워드 첫 번째 자리와 두 번째 자리를 확인하였습니다.
파이썬 코드를 이용한 패스워드 확인
전체 소스 코드
pw에 확인된 패스워드 값을 입력해 주면 문제를 풀 수 있습니다.
'Code::War Game > los.rubiya.kr' 카테고리의 다른 글
[LOS] Lord of the SQL Injection - darkelf (0) | 2023.02.27 |
---|---|
[LOS] Lord of the SQL Injection - wolfman (0) | 2023.01.05 |
[LOS] Lord of the SQL Injection - orc (0) | 2023.01.04 |
[LOS] Lord of the SQL Injection - goblin (0) | 2022.12.29 |
[LOS] Lord of the SQL Injection - cobolt (0) | 2022.12.28 |