Season 1/워게임

Old - 07

작성자 - 알 수 없는 사용자

 

문제 메인화면

 

- 문제 접속 시 메인 화면이다. 

- url 파라미터로 val이 전달되는 것을 확인


- view-source를 클릭!

view-source

 

- url파라미터로 전달된 val이 preg_match() 함수를 통해 필터링되는 것을 확인

 

- 필터링을 우회하여 sql injection 공격 수행, 결과 값으로 2를 받아오면 문제 해결 


- 필터링되는 문자

2, -, +, from, _, =, 공백, *, /

 

- 숫자 2가 필터링되므로 char() 함수를 이용, 아스키코드로 문자를 지정


- val=char(50)으로 설정하여 시도

결과

- query error 발생

- sql injection은 성공하였으나 테이블에 lv=2 값이 존재하지 않아 query error발생


- sql문을 통해 직접 결과값을 2로 반환하도록 시도

 

- val = 3)union select char(50 로 설정하여 기존의 sql문을 종료하고 2를 반환하는 sql문 설정

 

- db에 질의되는 sql문 =

"select lv from chall7 where lv=(3)union select char(50)"

 

- 공백 필터링을 우회하기 위해 괄호를 사용

val = 3)union(select(char(50))

 

문제 해결

 

'Season 1 > 워게임' 카테고리의 다른 글

Old - 27 Write Up  (0) 2021.05.16
Old - 19 Write Up  (0) 2021.05.16
Old - 54 Write Up  (0) 2021.05.15
Old - 39 Write Up  (0) 2021.05.15
Old - 38 Write Up  (0) 2021.05.15
Contents

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.