[Dreamhack] simple-spli 문제 풀어보기

챠챠비둘기·2022년 11월 7일
0

심화스터디

목록 보기
4/6

sql injection

일단 문제에 들어가기 앞서, sql injection에 대해 알아보도록 하겠습니다. sql injection은 응용 프로그램 보안 상의 허점을 의도적으로 이용하여, 악의적인 sql문을 실행되게 함으로서 데이터베이스를 비정상적으로 조작하는 code injection 공격 방법 중에 하나입니다.

sql

관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어로, 자료의 검색과 관리, 데이터 베이스 스키마 생성과 수정, 데이터 베이스 객체 접근 관리를 위해 고안된 언어입니다. sql 문법의 종류에는 총 3가지가 있습니다.

데이터 정의 언어
데이터 조작 언어
데이터 제어 언어

여기까지 간략하게 설명하고 문제로 넘어가겠습니다. SQL언어에 대해서는 다른 게시물에 따로 자세히 정리에 두도록 하겠습니다... 🤗🤗

simple-sqli


일단 문제 사이트에 들어가 봅시다. sql injection 취약점을 이용하여 플래그를 획득하는 문제입니다. 아마도 sql 구문을 이용하여 데이터 베이스에 접근하는 문제겠죠?😎 취약 사이트에 들어가기 앞서, 문제 파일을 다운로드하고 들어가 봅시당!!

이렇게 로그인 사이트가 뜨네요...일단 먼저 guest로 로그인해 볼까요?


guest로 로그인이 성공적으로 된 것을 알 수 있습니다. 여기서 정확히 무슨 문제인지 알아보기 위해, 아까 전에 다운로드받은 문제 파일을 한번 살펴볼까요?

사이트에 대한 정보를 한 눈에 살펴볼 수 있습니다. 여기서 guest와 admin이 눈에 띄는데요,


admin으로 로그인을 성공할 경우, flag 값을 획득할 수 있음을 알 수 있습니다. guest와 달리, admin의 password값은 난수로 설정되어 무엇인지 모르는데요, 저희는 sql injection 취약점을 이용해 admin의 패스워드를 알아내고, 이를 통해 admin으로서 로그인을 성공하여 플래그 값을 획득하는 문제임을 알 수 있습니다.

로그인 창에 입력한 값은 res의 userid와 userpassword 변수에 입력되어 반환된다는 것을 알 수 있습니다. 여기서 userpassword를 무력화시켜 admin으로서 로그인을 시도해 보겠습니다. 주석처리를 통해 우회해서 로그인 하는 방법으로 password를 무력화 해 보겠습니다.😎😎
주석처리하는 방법에는 #과 --가 있는데요, 일단 둘 다 시도해 보도록 하겠습니다.

주석처리


#을 통해 뒤에 오는 값들을 모두 주석처리하여 참 값으로 만들어 로그인 해 보도록 하겠습니다.

.....실패

주석처리 --

#으로 하는 방법이 실패했으니, 이번에는 -- 주석처리를 이용해 보도록 하겠습니다.

주석처리하면 id 검색조건만을 두고 뒤에 있는 모든 값들이 주석이 되어 참값으로 처리되어 로그인 할 수 있게 됩니다.

성공!!🎈🎈
--주석처리를 이용하면 admin으로서의 접속에 성공하고 플래그 값을 얻을 수 있음을 알 수 있습니다😁😁
여기서 의문점...?
왜 # 주석 처리를 이용하면 접속이 안되는 걸까요..?
정확한 이유는 모르겠지만, # 주석처리의 경우 주소에서는 %23으로 바뀌어서 입력되는데, 아마 여기서 문제가 발생하지 않았을까요? 조금더 공부해 보고 정확한 이유를 알아오도록 하겠습니다..😥

profile
개발 + 보안

0개의 댓글