본문 바로가기

 

55번 문제에요.

배점은 400점, 분야는 DB에요.

 

들어가자마자 이상한게 마우스를 쫓아오네요.

랭크를 눌러보면

 

 

뭔가의 랭킹이 있네요.

저기 INT_MAX 를 눌러보면

?score=

로 GET 를 날리면서 점수와 닉네임을 출력해요.

 

 

그리고 밑에는 코드 한줄이 적혀있네요.

대충 ID, 점수, FLAG 값을 집어넣네요.

 

그러면 이제 인젝션 포인트를 찾아보죠.

 

 

score 를 1 로 바꾸면

 

mpaljo112 // 1

 

score 를 if(true,2,1) 로 바꾸면?

 

jandi // 2

 

select database() 같은걸 집어넣으면

 

 

해킹하지 말래요.

select 가 금지인가봐요.

 

 

그러면 53번문제에서 썼던

1 procedure analyse()

를 넣어보면?

 

 

webhacking.chall55.id //

 

이거랑 limit 를 이용해서 컬럼명을 알아내야겠네요.

 

 

1 limit 1,1 procedure analyse()

를 넣어보면?

 

 

webhacking.chall55.score //

 

 

1 limit 2,1 procedure analyse()

를 넣어보면?

 

 

webhacking.chall55.p4ssw0rd_1123581321 //

 

그러면 이제 length 와 substr 를 이용해서 값을 뽑아내야하는데...

substr 이 필터링되요.

 

이럴땐

left() right() 함수를 이용해서 substr 처럼 작동하게 만들어주면 되요.

 

 

substr('ABCD',1,1)   =   right(left('ABCD',1),1)

를 넣으면 이런식으로

 

 

substr('ABCD',2,1)   =   right(left('ABCD',2),1)

를 넣으면 이런식으로 작동하게끔요.

 

 

그러니 스크립트에다 값을 집어넣고 돌리면?

 

FLAG{EASY_PEASY_LEMON_SQUEEZY!}

 

이제 FLAG 를 Auth 에다가 넣으면?

 

빠밤!

 

문제가 풀렸네요.

댓글