본문 바로가기
Web/Webhacking.kr

Webhacking.kr Challenge old-21 문제 풀이

by jh117jh 2023. 7. 7.
728x90

이번에 풀 문제는 21번!

 

blind sql injetion문제다.

Lord of SQL의 경험을 살려 한번 풀어보자.

 

우선 

아무 값이나 넣어 봤더니 login fail이라는 문자가 출력되고

 

id에 1 pw에 ' or 1=1 #을 넣었더니

wrong password가 출력되었다.

 

이로써 참일 때와 거짓일 때의 출력의 차이를 찾았으니

 

바로 파이썬 코드를 이용해 id와 pw를 알아보자

 

id의 길이

id값이 adein이 나왔는데 admin일 것 같은 의심이 들었다. (아마 예상하는 admin 말고 다른 아이디가 더 존재하는 거 같다. 즉, 3번째 자리가 e인 id 존재)

사실 이 방법은 id값이 하나일 때 정확하지 여러 개가 있다면 각 자리의 값이 섞여서 출력될 수 있는 코드이다.(이번에는 운 좋게 3번째 자리를 제외하고는 a~z순서상 admin이 앞에 있어 예측할 수 있었지만 id값이 많을수록 부정확하다.)

확인을 위해 id에 admin을 넣고 주석처리후 pw에 아무 값을 넣어봤더니 wrong password가 나오는 거 보니 admin이 맞나 보다.

 

그럼 admin에 대한 pw를 알아내야 된다.

 

id값을 알아낸 것처럼 파이썬 코드를 짜서 길이부터 알아보면

길이는 36이고

 

코드 수정과정에서 pw를 id로 써버렸다..ㅎ

pw는 there_is_no_rest_for_the_white_angel로 나왔다.

 

이제 로그인을 해보자

 

 

 



추가

id값 구하는 과정이 마음에 들지 않아 코드를 다시 짰다.( 너무 때려맞추기로 넘어간것 같다.)

 

if문을 추가하여 기존 id값들을 함께 비교하여 참 거짓을 판별하게 했다.

728x90