본문 바로가기

Webhacking.kr

[Webhacking.kr] Challenge 3

원래 무작정 부딪혀보는게 정공법이라고 하였다.
 
웹 해킹은 잘 모르지만 일단 풀어보면서 생각하자!
 
 

Challenge 3 문제

 
문제를 열어보면 이런 노노그램이 있다.
 
처음에 보고 뭐지 싶어서 막 눌러보니
 

클릭이 되는걸 볼 수 있다.
 
노노그램 규칙에 맞추어 이 문제를 풀어보면 
 

이런 모양이 되는걸 알 수 있다(성..?).
 
solved를 클릭하니 

 
이름을 적으라는 문구가 뜬다.
 
이름을 적어보면 
 

이름, answer, ip가 뜨는것을 볼 수 있다.(ls는 테스트ㅎ)
 
문제는 여기까지인 것 같다.
 
흠.. 이제 이를 어떻게 풀어야 할지 고민을 해보자
 
우리가 할 수 있는 부분은 이름을 적는칸에 무언가를 적는것인데..
무언가를 적어서 정보를 탈취하는 기법은 뭐가 있을까 찾아보았다.....
.
.
.
.
.
이때 찾은게 SQL injection 기법이였다!
 
SQL injection이란 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격하는 방식이다(이 문제엔 입력 값이 있다!).
 
이를 예시로 쉽게 알아보자
 
어떤 웹사이트에서 아이디랑 비밀번호를 입력 받아 맞으면 로그인 된다고 하자
이때 값을 넣으면 코드에는
 
id = 'j4zzch0rd' 의 비밀번호가 password = '********'  맞나요?
 
이런식으로 들어간다(물론 예시이다)
패스워드 부분에 '또는 '1 + 1' = '2 를 입력하게 된다면?
 
id = 'j4zzch0rd' 의 비밀번호가 password = ''또는 '1 + 1' = '2'  맞나요? 가 된다.
 
원래는 컴퓨터가 코드를 인식할 때 id의 비밀번호가 일치하면 로그인 되지만
비밀번호 부분을 닫고 1+1=2를 입력하므로써 코드가 맞는말이 되기 때문에 로그인이 된다!(무서운 공격...)
 
물론 너무 간단하게 설명한 감이 없지않아 있지만 일단 여기까지 알아보자
 
결론은 입력값에 True를 만들어내는 SQL 코드를 입력하면 된다.
 
기본적으로 쓰는 코드는 ' or 1=1-- 이다
 
간단하게 설명하면 ' 로 비밀번호 입력칸을 공백으로 만들고
or 1=1 로 정답 처리를 해주며
--로 뒷 부분을 주석처리한다고 생각하면 된다.
 
방법을 알았으니 name 값에 한번 써보자
 
 
' OR 1=1 --
 

이대로 정답이기를....
 

 
이럴수가..
 
name 값에 그대로 들어가는것을 볼 수 있다..
 
이제 어떻게 하지 고민하는 중에
answer 값에 저 구문을 넣으면 답이 나오지 않을까라는 생각을 하게되었다.(사실 넣을곳이 없긴 함..)
 
문제는 저 값을 어떻게 수정하냐인데..
 
이때 개발자 도구를 이용하면 된다!
 
F12를 누르면 

 
이런 화면이 나오게 된다
이떄 value 뒤에 있는 숫자가 우리가 알고있는 answer 값이므로
 

 
뒤에 구문을 넣어주게 되면
 

굿!

 
문제를 풀 수 있다.
 

풀고난 뒤 이미지

 


 
이렇게 문제를 풀어보았는데
생각보다 시간이 너무 오래 걸렸다...
 
그래도 문제를 푸니 기분은 좋았다.
 
오늘도 명언 하나를 적으며 마무리하겠다.
 
"우리가 할 수 있기 전에 배워야 하는 일들을, 우리는 하면서 배운다." - 아리스토텔레스
 
 
 

'Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] Challenge 6  (0) 2024.10.06
[Webhacking.kr] Challenge 17  (0) 2024.10.06
[Webhacking.kr] Challenge 16  (0) 2024.10.06
[Webhacking.kr] Challenge 14  (0) 2024.10.05
[Webhacking.kr] Challenge 1  (0) 2024.10.05