해당 url로 들어가게 되면 문제 사이트가 나온다.
https://wildwildweb.fluxfingers.net:1424/

유저명 입력하는 곳이 보인다. 문제에서 소스코드를 제공해줘서 보니 일단 SQLi는 터지는게 보인다.

대충봤는데 처음엔 첫번째 쿼리 부분에 ' union select 'admin','dudtls8503@naver.com'# 이런식으로 쿼리 넣어주면 내 메일로 제너레이트 된 admin 패스워드가 데이터가 날라올거라 생각했다. 근데 아무리해도 안날라와서 github에서 문제제공 주의사항을 보니 실제 메일로 값을 보내지는 않는단다.
다른 관점으로 admin 패스워드를 그냥 뽑아야할 것 같은데 and or || &&가 다 필터링되고 있어서 blind로 데이터뽑기는 힘들어보였다. union으로 뽑으려고 보니까 첫번째 쿼리에서 데이터가 하나도 뽑히지 않은 상태에서 두번째 쿼리에서는 데이터가 뽑혀야하는 상황이었다. 첫번째쿼리에선 입력값이 = 로 처리되고 두번째 쿼리에선 sounds like로 처리되는데 여기서 뭔가 터질 것 같았다. sounds like라는 명령어를 첨봐서 좀 찾아봤더니 b'# 라고 쳤을때 첫번째 쿼리에선 b라는 네임이 없어서 패스되지만 두번째 쿼리에선 name sounds like 'b' 요렇게 들어갔을 때 다음과 같이 떴다.

이 차이를 이용해서 union이랑 limit 적절히 조합해서 쿼리하나를 짜봤다.
b' union select passwd,1 from user where name='Bo' limit 2,1#

Bo란 네임명에 패스워드가 출력됬당.

그럼 이제 admin 패스워드만 뽑으면 된다.

b' union select passwd,1 from user where name='admin' limit 2,1#

잘나온당.


블로그 이미지

JeonYoungSin

메모 기록용 공간

,