webhacking.kr 21번 문제다.

점수는 250point.

블라인드 sql 인젝션 문제란다. 값을 하나씩 넣어보니 1,2일때는 True이고 나머지 값에서는 False가 

나타난다. 이를 활용하면 될 것 같다.


값이 넘어가는 걸 보니 no값으로 조건을 만들고 id,pw값을 출력하는 구문일 것 같다. 



대충 짜보면 select * from table where no=$_GET[no]; 와 같은 구문일 것 같다.

1,2일때만 True인걸보니 테이블에 들어있는 id,pw가 2개 들어있을 것이라고 추측할 수 있다.

먼저 id값을 알아내기 위해

"1 and if(substr(lpad(bin(ord(substr(id,"+str(i)+",1))),8,0),"+str(j)+",1)=0,1,0)#"

같은 쿼리로 파이썬 프로그램을 돌렸더니 id값이 guest로 나온다.

"2 and if(substr(lpad(bin(ord(substr(pw,"+str(i)+",1))),8,0),"+str(j)+",1)=0,1,0)#"

no부분을 2로 바꾸니 admin사용자가 나온다.

그렇다면 다음과 같이

"2 and if(substr(lpad(bin(ord(substr(pw,"+str(i)+",1))),8,0),"+str(j)+",1)=0,1,0)#"

 같은 형태로 파이썬 스크립트를 짜서 돌려봤다.

키 값을 뱉어낸다.

입력해보자.

성공! 기본적인  blind sql injection 문제였다.


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 23번  (0) 2018.01.11
webhacking.kr 22번  (2) 2018.01.11
webhacking.kr 20번  (0) 2018.01.11
webhacking.kr 19번  (0) 2018.01.11
webhacking.kr 18번  (0) 2018.01.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,