상세 컨텐츠

본문 제목

[Lord of SQL Injection] gremlin 1번 풀이

[Tech] War Game/Lord of SQL Injection

by tech-dailylife 2020. 7. 6. 09:41

본문

반응형

SQL 인젝션은 OWASP Top 10 2017 버전에 포함되어 있는 주요한 웹 취약점 입니다.

입력값 검증이 미흡한 사용자 입력값에 DB 쿼리에 들어갈 공격 구문을 삽입하여 DB 내 개인정보를 탈취할 수 있는 공격 방식 입니다.

실무적으로도 SQL 인젝션은 타 취약점보다 위험도가 높아 점검 방법 및 대응 방안을 익혀두시면 좋습니다.

추가로 sqlmap이라는 Tool을 많이 사용한다는 점도 알아두시면 좋을 것 같아요.

(SQL 인젝션 포인트를 수동으로 찾고 도구를 통해 효율적으로 DB 정보를 dump하는 방식으로 진단을 수행합니다.)

 

그럼 SQL Injection을 익힐 수 있는 Lord of SQLInjection 사이트를 통해 천천히 학습을 해보겠습니다.

사이트 주소 : https://los.rubiya.kr/

 

 

우선 1번 문제 gremlin 입니다.

 

[문제 구성]

사이트에 로그인을 하면, 아래와 같이 문제들이 나오고 앞 문제를 풀어야 뒤 문제를 풀 수 있도록 되어 있습니다.

 

 

gremlin으로 들어가서 첫 문제를 살펴보겠습니다.

문제의 구성을 보면 먼저 URL이 있고, 쿼리(query)가 있고, php 소스 코드가 있습니다.

URL에 공격 구문 파라미터를 넘겨서 SQL 인젝션을 실습할 수 있습니다.

그리고 넘긴 결과를 query : 로 표시를 해줘서 DB에 어떻게 들어갔는지 확인하면서 연습할 수 있게 해뒀네요.

또 php 소스코드를 출력해줘서 소스코드를 보고 문제를 풀 수 있도록 해뒀네요.

 

 

 

참고로 랭킹을 볼 수 있게 되어 있습니다. 우리나라 사람들이 많이 하는 사이트 인 가 보네요.

 

 

이제 문제를 풀어보겠습니다.

 

 

[문제 접근]

query를 보면 id와 pw 파라미터가 존재하고, 소스코드를 보면 id 값이 존재하면 문제가 성공하겠네요.

 

 

 

1번 문제는 아주 기본적입니다. 가장 기초적인 공격 구문을 시도해보세요.

URL에 ? 뒤에 파라미터 id를 넣고 = 값을 넣으면 공격을 시도할 수 있습니다.

?id=0'||1=1# 를 넣겠습니다.

 

 

#가 없어졌네요. #를 URL 인코딩 값으로 넣어봐야 할 것 같습니다.

 

 

 

 

[문제 정답]

정답 : ?id=0'||1=1%23

 

 

"CREMLIN Clear!" 가 나타납니다. 정답!

다음 스테이지로 넘어가시죠~

 

select 구문의 where 조건 절을 id='0' 또는 1=1 로 하여 무조건 참으로 만들었습니다 참 또는 참은 참이니까요.

그리고 주석 #를 써서 뒤에 구문을 생략 시켜 성공시켰습니다.

반응형

관련글 더보기

댓글 영역