forcelogin 2

2023. 4. 5. 09:03

초기화면

초기화면을 보면 /source를 확인하라고 나와있다.

 

 

http://localhost:5004/source
http://localhost:5004/source

소스 코드를 확인해 보면 앞에서 풀었던 forcelogin1 문제와 매우 유사하다는 느낌을 받을 수 있다.

대신 이번 문제는 mysql이 아닌 mssql이라고 한다.

또한, 앞에서 풀었던 문제와 다르게 해당 문제에는 쿼리 구문에 table이 추가된 것을 확인할 수 있다.

해당 문제는 id의 값으로 admin을 받으면 flag를 얻을 수 있는 문제라는 것까지 알 수 있다.

 

 

http://localhost:5004/loginAction?&id=guest&pass=guest

가장 먼저 로그인 기능을 확인하기 위해 guest 계정으로 로그인해 보았다.

admin이 아니라서 권한이 없다고 뜬다. 

이를 통해서 admin으로 로그인을 하면 flag 값을 얻을 수 있다는 것을 알 수 있었다.

 

 

이 문제 풀때 table Injection이라는 힌트를 받았다.

tabel Injection이 무엇인지 구글링을 해보았지만 출제자의 의도에 맞는 내용은 나오지 않았다.

그래서 forcelogin1과 마찬가지로 공식문서부터 찾아보았다.

https://learn.microsoft.com/ko-kr/sql/t-sql/queries/table-value-constructor-transact-sql?view=sql-server-ver16

공식 문서에서 위 사진과 같은 내용을 찾을 수 있었고, 이를 이용해서 구문을 작성하였다.

 

 

https://sqltest.net/

sql test 페이지를 이용하여 id의 값으로 admin을 결과로 얻을 수 있도록 구문을 작성하였고, 해당 구문은 아래와 같다.

SELECT ID FROM (VALUES ('admin','admin')) AS MyTable(id, password) where id ='admin' and password = 'admin'

위 구문을 url에 넣는 형식으로 수정해주면 다음과 같다.

loginAction?T=(VALUES('admin','admin')) AS My(id,password)&id='admin'&pass='admin'

해당 구문을 url에 넣어주면 

flag 값이 나오는 것이 아닌 no hack ^__________^ 이 나온다.

얼레...

왜 flag 값이 나오지 않았는지 고민해 보니 우선 싱글 쿼터가 banlist에 들어있다.

또한, 띄어쓰기는 url 인코딩으로 인해서 해당 구문이 매우 길어진 것을 확인할 수 있었다.

가장 위에 보았던 소스코드에서 확인할 수 있듯이 글자 수 제한이 있어서 flag 값이 나오지 않은 거 같았다.

 

 

띄어쓰기는 띄어쓰기 대신 +를 통해 구문을 이어주면 해결할 수 있지만, 가장 큰 문제는 싱글 쿼터 우회였다.

싱글 쿼터가 banlist에 들어있기 때문에 이를 우회하기 위해 hex 값으로 바꿔주려고 하다 보니 글자 수가 너도무 길어졌다.

이를 어떻게 해결할 수 있을지 고민해 보았다. 

 

현재 작성한 구문은 id와 pass 모두 admin으로 로그인하고 있다. 하지만 소스 코드에서 확인할 수 있듯이 해당 문제를 해결하기 위해서는 id만 admin으로 로그인하면 된다. 따라서 pass의 값을 admin이 아닌 아무런 숫자나 넣어서 로그인 시도를 해보았다.

http://localhost:5004/loginAction?T=(values(0x61646d696e,0))+AS+My(id,password)&id=admin&pass=0

작성한 구문을 넣었더니 위 사진처럼 flag 값을 확인할 수 있었다.

flag 값 : seKUCTF{TAb1e_1njecti0n_ATTACK~@!!@}

얏호~!

 

'Web - 실습' 카테고리의 다른 글

simplecalculator  (0) 2023.05.03
forcelogin 1  (0) 2023.04.02
forelength  (0) 2023.03.26
pingservice  (0) 2023.03.21
HelloCTF  (0) 2023.03.19

BELATED ARTICLES

more