김승현

[picoCTF] picoCTF 2023 - More SQLi 본문

CTF/picoCTF

[picoCTF] picoCTF 2023 - More SQLi

kshind 2023. 3. 28. 18:43

2023-03-29

대회 종료 후 비공개에서 공개로 돌렸습니다.


web exploitation 문제 중 그나마 쉬운 문제인 More SQLI이다... FLAG를 website에서 찾아보라고 하고 hints로는 

sqli lite라는 dbms가 사용됐다고 한다. 사이트에 접속해보자.

접속하면 이렇게 security challenge / please log in 이렇게 적혀있고 username과 password를 

입력하는 칸이 있다.

일단 username : uname / password : passwd로 로그인 해보자.

로그인을ㄷ 하면 이렇게 SQL query가 나와 있다. 대부분은 username이 먼저 오는 편인데 얘는 password가 앞에 있다.

한번 sqlite 기준으로 sql inejction을 시도해보자.

username엔 아무거나 입력하고 password에 ' or username = 'admin' --를 입력해보자.

그랬더니 딱히 바뀐 게 없다... 혹시나 해서 username 대신 id를 입력해봤다.

그랬더니 이렇게 새로운 느낌의 창이 떴다. 이렇게 푸는 건가 싶어서 계속 저 로그인 창에 시도 해봤는데 아니었다.

이번에는 그냥 가볍게 password에 ' or 1=1 --를 입력해보자.

그랬더니 이렇게 쉽게 welcome.php로 이동됐다!  일단 sqlite의 버전을 확인하는 쿼리문을 입력해보자.

'union select all 1, 2, sqlite_version() --

버전을 확인하기 위해 위와 같이 입력해봤다. union을 이용해서 출력하도록 만들었다.

이렇게 sqlite 3.31.1 버전을 사용하는 것을 알 수 있다.

table들의 이름을 한번 확인해보자.

' union select all 1, tbl_name, 3 from sqlite_master --

위의 union을 이용해서 table_name을 확인하자.

이렇게 hints, more_table, offices, users 테이블 총 네 개가 있다.

hint부터 확인해보자.

<hints>

' union select all 1, sql, 3 from sqlite_master where tbl_name='hints' --

sql을 이용해서 hints테이블의 형식을 확인해보자.

이렇게 id와 info가 있다는 것 같다.

' union select 1, id, info from hints --

위의 코드를 통해 hints 테이블의 id와 info 컬럼을 볼 수 있다.

내용은 이런 내용이고 딱히 힌트라고 하기엔 별 게 없다.  

지금까지 한 일들을 모든 테이블에 대해 반복해보자.

<offices>

' union select all 1, sql, 3 from sqlite_master where tbl_name='offices' --

 

이렇게 id, city, address, phone이 있는데 이건 우리가 접속하면서 보던 그 table인 것 같다.

' union select city, address, phone from offices --

이렇게 입력해보자.

역시나 미리 본 것과 같다.

<users>

' union select all 1, sql, 3 from sqlite_master where tbl_name='users' --

name, password, id가 있다 모두 확인해보자.

' union select name, password, id from users --

id는 admin이고 password는 moreRandOMN3ss인 것을 볼 수 있다.

일단 more_table 테이블을 확인해보고 로그인 해보자.

<more_table>

' union select all 1, sql, 3 from sqlite_master where tbl_name='more_table' --

id와 flag 컬럼이 있는 걸 볼 수 있다. 확인해보자.

' union select id, flag, 3 from more_table --

엇 바로 flag가 나와버렸다. 근데 궁금하니까 admin으로 로그인해보자.

로그인이 안 되게 만들었다... 어떻게 되는지 궁금했는데 좀 아쉽다...ㅜ

'CTF > picoCTF' 카테고리의 다른 글

[picoCTF] picoCTF 2023 - MatchTheRegex  (0) 2023.03.27
[picoCTF] picoCTF 2023 - findme  (0) 2023.03.27