첫 화면은 로그인 창이 뜬다.


그래서 그냥 제출을 눌러보니 Wrong이라는 메시지를 띄운다.

그런데 화면 오른쪽 하단에

source라는 버튼이 있어서 들어가보니 소스가 나왔다.

id와 pw를 post방식으로 받는데 그중 pw를 md5로 암호화 하여

쿼리문으로 집어 넣는다.

그 쿼리문은 select id from challenge_51_admin where id='$input_id' and pw = '$input_pw'"

문이다.

그래서 md5(,)문을 찾아보았다.

md5(string,raw)문에서

false면 hex로

true면 binary로 출력을 하는데

여기서는 true로 나온다.


그래도 일단은 sql injection같아서

admin으로 제출을 하면 Wrong이 뜨고


주석을 걸어도 같은 반응이라 blind sql injection은 안된다;;;

그래서 sql문을 직접 만들어 보니

id='gamja'='gamja'를 출력해 보면

gamja말고 나머지가 출력되는 것을 볼 수 있다.

그리고 항상 = true가 아니면

여집합을 출력시키는 것을 알았다;;


그렇다면 우리는 쿼리문에서 우리가 다르게 친 암호 말고의 값들이 나올수 있게 pw에 =을 포함시켜주면 된다.

그래서 md5로 encoding했을 때 나오는 값이 =이 든 값을 찾기 위해서

php문을 만들어 출력시켜 보면

이렇게 많은 값이 나온다.

(참고로 웹에서 실행 해 보고 싶다면

"http://phptester.net/"

여기로 가서 하면 된다.)

그 값을 pw로 넣어보면

51번도 클리어!


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

Webhacking.kr 40번  (0) 2018.01.16
Webhacking.kr 41번  (0) 2018.01.15
Webhacking.kr 61번  (0) 2018.01.12
Webhacking.kr 46번  (0) 2018.01.12
Webhacking.kr 22번  (0) 2018.01.11

+ Recent posts