Wargame/Load of SQL injection (rubiya)(16)
-
Los orc 4번 문제 (rubiya)
이번 문제를 풀기전 꼭 python requests 모듈을 공부해서 오시는것을 권장합니다. 우선 이번 문제는 admin의 비밀번호를 알아내는 문제이다. 하지만 마술처럼 한번에 모든 비밀번호를 알아내는것이 아니라 한글자씩 비교해서 찾아나가야 하기 때문에 python requests 모듈이 없다면 엄청난 노가다가 예상된다... 우선 문제 풀이를 적기전 substr() , length() 함수를 설명하자면 length() 함수는 길이를 구하는 함수이고 substr() 함수는 문자를 찾는 함수이다 substr ( 구할 변수나 문자열의 이름 , 시작 위치 , 글자수 ) ex) $id='admin'; echo length($id);->5 echo substr(id,1,1)->a 이처럼 위의 함수들을 응용해서 adm..
2019.10.09 -
Los goblin 3번 문제 (rubiya)
이번 문제도 이전문제 처럼 id 를 admin 으로 만들어 주면 풀릴것 같다. 하지만 GET방식으로 입력받는 값이 id가 아니고 no이다. 이럴때에는 or 이나 and 연산자를 사용해 id 의 값을 지정해 줄 수 있다. 그래서 이번 문제도 or , and 연산자를 사용해 id 의 값을 admin 으로 만들어 보자 ?no=0 or id='admin' 위와같은 파라미터 값을 제출했는데 싱글쿼터(')를 막아놓은것 같다. 자세히 보면 ' 와 " 모두 막아놓았다. 그렇다면 admin 은 문자열이기때문에 표시를 못하나? 그런것도 아니다. char() 함수나 16 진수로 admin 을 만들어서 제출 해보면 될 것 이다. admin -0x61646d696e ->admin을 16진수로 표현 -char(97,100,109..
2019.10.09 -
Los cobolt 2번 문제 (rubiya)
이번문제는 1번 문제와 다르게 id의 결과값이 정해져있다. id가 admin 이면 solve 함수가 실행하여 문제가 해결되는것 같다. 하지만 GET방식으로 id 와 pw를 받는데 pw 를 md5() 로 암호화하는것 같다. pw를 한 단어씩 구해서 pw 를 구해서 푸는 방법도 있지만 어차피 조건문에서 pw는 사용되지 않으므로 그냥 id를 입력받는 쿼리문 뒤의 문장을 주석으로 무력화 시키면 될 것 같다. # = mysql 1줄 주석
2019.10.09 -
Los gremlin 1번 문제 (rubiya)
LoS는 따로 플래그를 입력하는 방식이 아니라 코드 안의 solve() 함수가 동작하도록 하면 문제가 풀린다. 그리고 친절하게 내가 입력 한 값이 어떻게 쿼리에 들어가는지도 보여준다. 첫 번째 문제는 gremlin이다. 앞서 말한것 처럼 solve() 함수를 동작시키기 위해선 if($result['id']) 라는 조건문을 통과해야 한다. 즉 id 의 존재 여부에 따라서 if 문의 조건을 통과 할 수 있는지 없는지를 말한다. 하지만 id가 없으면 0이 반환되기 때문에 아이디가 어떻든 존재하기만 하면 이 문제는 풀린다. select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}' 위의 쿼리처럼 GET방식으로 아이디와 비밀번호를 입력받아서 퀴..
2019.10.06