전체 글 35

[Lord of SQLInjection] golem

or, and, substr(, = 이 필터링 되어있다. 우회하는 방법 or -> || and -> && substr('문자',몇 번째, 1) -> right(left('문자',몇 번째),1) = -> like 입력받은 pw 값과 쿼리 결과로 출력된 pw 값이 같다면 풀리는 문제이다. 즉 admin의 pw를 정확히 알아내야 하는 것이다. 현재 첫 번째 쿼리에 입력되어있는 id의 값은 guest 이기 때문에 id 값을 다시 지정해줘야하고 pw를 알아내기 위해서 length 함수를 이용해 pw 길이부터 알아내보자. pw=' || id like 'admin' && length(pw) like 1# 입력해주기 빠른 결과 확인을 위해 burp의 intruder 사용해보자. 아는 내용일테니 빠르게 넘어가겠습니다. ..

[Lord of SQLInjection] orge

이 문제도 or 와 and 에 필터링이 적용되어있다. pw 우회도 안돼서 직접 admin의 pw까지 알아내야한다! 먼저 blind sql injection을 이용하여 pw의 길이부터 알아내보자. pw 길이를 빨리 알아내기 위해 burpsuite의 intruder를 사용해보자 Start attack! pw 길이가 8인 것을 알았기 때문에 substr 함수를 사용하여 무작위 대입 공격을 진행하고 한 글자씩 알아내도록 하자. Attack type을 Cluster bomb로 변경해주고 값을 변경하여 실행할 곳을 Add를 선택하여 추가해준다. simple list에는 숫자와 알파벳을 지정해주었다! Start attack! pw 값을 확인하였으니, 쿼리에 삽입하여 확인해보자. 성공! 다음 단계로 넘어가자.

[Lord of SQLInjection] wolfman

이 문제는 id가 admin일 때 로그인 우회를 하면 성공하는 문제이다. 추가로 위의 코드를 보면 공백을 입력받지 않게 되어있다. pw 값에 공백을 포함하여 '1 '을 입력해보았더니, preg_match 함수에 의해 'No whitespace'가 출력된 것을 확인했다. 우선 id값이 현재 guest로 입력되어있기 때문에, pw 입력은 싱글쿼터를 사용해 종료해주고 id=admin 으로 재 설정해준다. 공백문자의 경우 %0a (\n의 url encoding) 를 사용하여 우회해보도록 하자. 성공! 다음 단계로 넘어가자.

[Lord of SQLInjection] orc

두 번째 쿼리에서 출력된 pw 값과 GET으로 입력된 pw의 값이 같아야 풀리는 문제이다. 즉, 다른 문제들과는 다르게 pw 값을 알아내야 한다. id 값은 지금 admin으로 이미 입력된 상태이기 때문에 pw 값만 알아내면 된다. pw 값을 알아내기 위해 blind sql injection을 이용하여 pw 길이부터 알아내보자. 우선 pw를 모르기 때문에 '(싱글쿼터)를 사용하여 입력을 마무리해주고 or을 사용해주면 뒤의 쿼리 결과에 따라 출력값이 변경될 것이다. pw의 길이가 참일 때 'Hello admin'이 출력될 것이다. burp를 사용하여 빠르게 결과 값을 확인해보자. 바꿔줘야할 값을 선택하여 Add를 적용해주고 Payloads 메뉴에서 Payload type은 Numbers를 선택해주고 1~1..

[Lord of SQLInjection] goblin

출력된 id 값이 admin이면 풀리는 문제! 근데 where 함수 뒤에 id='guest'로 이미 지정이 되어있다. no 값을 1로 입력하여 실행해보자. guest로 출력된 걸로 봐서는 guest의 no가 1이라는 것을 확인할 수 있다. no에 다른 값을 넣어주면? 아무 값도 출력되지 않는다. id 값에 admin을 출력해주기 위해서는 작성되어있는 query 내부 where 절의 내용을 아예 다시 설정해줘야 한다. mysql의 where 뒤에 조건식을 여러개 쓰기 위한 방법은 뒤에 그냥 AND 또는 OR 을 작성해주면된다. 마침 no 값도 숫자기 때문에 따로 싱글쿼터를 삽입해줄 필요도 없다. 실패. 소스코드를 보면 알 수 있듯이 ' 와 " 를 필터링하는 것을 확인할 수 있기 때문에, admin 을 16..