Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

White Security

[wargame.kr] dmbs335 문제풀이 본문

Wargame Writeups/wargame.kr

[wargame.kr] dmbs335 문제풀이

POSIX 2019. 1. 24. 16:00

wargame.kr 사이트의 24번째 문제입니다.



SQL injection 문제입니다!



링크에 접속하니 게시글 목록을 확인할 수 있었습니다.


검색창의 우측에 존재하는 or, and는

검색 기준을 다수 지정했을 경우에 

where subject like '%keyword%' or content like '%keyword%'

와 같이 where 절 내에 삽입되는 용도로 쓰입니다.



소스에서는 상단에 위치한

parse_str($_SERVER['QUERY_STRING']) 이라는 부분이

눈에 띕니다.


이는 GET또는 POST로 전달되는 인자들을

php 변수로 변환해주는 일을 합니다.


만약 php내에서 사용되는 변수명을 예측할 수 있다면

예기치 못한 동작을 유발시킬 가능성이 있는 취약 코드입니다.



만약 col 에서 정규식 (subject | content | writer) 을 만족시키는 부분이 없다면

query_parts 부분이 정의되지 않아 if문은 통과되는 상황입니다.


하지만 [ parse_str($_SERVER['QUERY_STRING']) ] 코드로 인해

사용자가 php내의 변수를 정의할 수 있기 때문에

이 지점에서 인젝션이 가능합니다.



search_cols에는 정규식을 만족시키지 않는 문자열을 하나 끼워두고

query_parts에 쿼리문을 넣으면 where 절 이후를 임의로 바꾸어 쓸 수 있습니다.








Comments