Wargame/Load of SQL injection (rubiya)(16)
-
Los succubus 16번 문제 (rubiya)
이번 문제는 id 의 값에서 \ 역슬래쉬 를 이용해서 '를 문자형식으로 만드는게 핵심이다. where id='\' and pw='$_GET[pw]'; 이렇게 역슬래쉬를 주입해서 id 를 끝마치는 싱글쿼터를 문자열화 시켜서 pw의 값을 넣는 곳에서 or 을 이용해서 참값을 만들어 주면 pw 부분을 입력했지만 그 값이 \(역슬래쉬)로 인해서 id의 값에 들어가기 때문에 $result[id]를 만들 수 있다. -> ?id=\&pw=or%201=1%23
2019.10.23 -
Los assassin 15번 문제 (rubiya)
이문제에서 가장 먼저 보아야 할 부분은 쿼리에서 입력한 pw 의 값이 like 로 비교된다는 것이다. 여기서 like 란 MYSQL 문법으로 보아야 할 부분은 쿼리에서 입력한 pw 의 값이 like 로 비교된다는 것이다.= 여기서 like 란 MYSQL 문법으로 문자열 부분검색 으로 일반적으로 DB에서 특정 단어가 포함된 레코드를 찾기 위해서 LIKE 를 주로 사용한다. ex) select id from test where id like a%; 라는 쿼리가 있으면 a로 시작하는 모든 값이 출력된다. 이러한 like 의 성질을 이용해서 값이 있으면 그 글자 뒤에 한글자씩 추가해주면서 값을 대입해보자. 이처럼 다른 값을 넣을때에는 아무값도 나오지 않지만 9%라는 값을 넣으면 id 가 존재하기 때문에 Hell..
2019.10.23 -
Los giant 14번 문제 (rubiya)
쿼리문을 보자. 쿼리문을 보면 select 1234 from prob_giant where 1 이라는 값이 있어야하는데 select 1234 from prob_giant where 1 빨간색 부분이 붙어있다. 아마 저부분을 띄어쓰게하면 풀릴것 같다. 여기서 공백을 대채할 수 있는 문자들을 아래 적어놓겠다. %09 : tab %0a : line feed %0b : vertical tab %0c : form feed %0d : carriage return + : space와 동일 /**/ : 주석, 내부에 임의의 문자열 삽입 가능 이렇게 공백을 우회할 수 있는 문자들이 엄청 많다. 이 문제에선 %0a,%0b%0d,tab 등을 우회하기 때문에 여기 없는 값인 %0c (form feed)를 사용하면 풀릴 것이다.
2019.10.19 -
Los bugbear 13번 문제 (rubiya)
이번문제도 이전문제인 darknight 문제와 매우 유사하다. 하지만 필터링 부분을 잘보면 공백과 0x ,like가 필터링당한다. 그래서 아래처럼 in()안에 char() 함수로 admin 을 표현함으로서 = 와 '의 기능을 우회했다. 이제 비밀번호의 길이를 알아보자. 역시 비밀번호의 길이는 8이였다. 바로 파이썬 코드로 넘어가자.
2019.10.19 -
Los darkknight 12번 문제 (rubiya)
이번문제는 golem 문제와 거의 같다. 하지만 싱글쿼터가 우회되어있으므로 id='admin' 형태를 쓸 수 없다. 그래서 16진수로 admin을 표현해주어서 id=0x61646d696e 라는 값을 넣어주고 똑같은 코드를 돌리면 된다. 일단 비밀번호 길이를 구해보자. 이번 문제의 비밀번호의 길이 또한 8글자이다. ?no=123%20||%20id%20like%200x61646d696e%20%26%26%20length(pw)%20like%208 이제 파이썬 코드를 이용해서 페스워드를 구해보자.
2019.10.19 -
Los golem 11번 문제 (rubiya)
10번문제 golem 문제를 보자면 이전처럼 어드민의 페스워드를 구해야한다. or , and 는 파이프(||)와 ,&& 로 우회하고 substr 함수는 mid 함수로 대체할 수 있다. 그리고 = 은 like 로 우회 가능하기 때문에 이 모든것을 다 감안해서 쿼리를 짜보자. 위에 말한대로 모두 우회해주어서 ?pw=%27%20||%20id%20like%20%27admin%27%20%26%26%20length(pw)%20like%208%23 를 입력해주니 admin 의 페스워드가 8자리라고 나왔다. 이제 파이썬을 이용해서 이 문제의 페스워드를 하나씩 구해보자.
2019.10.19