Lord of SQL Injection

Lord of SQL Injection 2번 문제 - cobolt

ilsancityboy 2024. 5. 2. 20:00




config.php 파일 참조
login_chk() 함수 사용
db연결
입력받은 id 값에 prob , _ , . , () 중 하라도오면 No Hack 출력
비밀번호도 동일.
입력받은 id 값과 pw 값이 데이터베이스 안에 id값과 md5해시값과 일치하는지 확인.
id값이 admin이면 성공 그게아니라면 Hello "id" You are not admin 출력


우선 아이디는 admin이 고정되어야 You are not admin 이 뜨지않고 성공한다.
파라미터값으로 id 는 admin을 넣어야한단것.
비밀번호 부분은 MD5 즉, 입력받은 비밀번호를 해시값으로 변환한다는것인데
복잡하니 비밀번호 있는곳을 통으로 주석처리하여 날리면 되지않을까? 생각했다.
따라서 --로 주석처리를 해보았다.
?id='admin'-- 를 url에 입력해보았으나 주석처리가 되지않아 성공하지 못했다.
알고보니 SQL에는 주석처리가 3가지가있다.
-- 를 사용하거나
#를 사용하거나
/* */ 사용하거나다.

세번째방법은 뒤에있는 문구들을 전부 주석처리하는것이 아닌 /* 이안에 주석처리 */ 이런식으로 사용하기때문에 사용불가능하고
-- 혹은 #을 사용하면된다. -- 를 사용하려면 --바로뒤에 공백이 필수다.
따라서 공백을 url 인코딩하면 %20 가 나온다.
?id='admin'--%20 입력.
SQL 인젝션 성공.