728x90

5번 문제와 거의 똑같은데 5번은 빈칸을 필터링했고 이번 문제는 orland라는걸 필터링한다. (or and )

?pw=0'||id='admin'%23

728x90

'web > LOS' 카테고리의 다른 글

LOS 5번  (0) 2020.11.11
LOS 4번  (0) 2020.07.19
LOS 3번  (0) 2020.07.19
LOS 2번  (0) 2020.07.19
LOS 1번  (0) 2020.07.19
728x90

우선 필터링되는 부분을 확인하는 방법은 

if(preg_match('/prob|_|\.|\(\)/i',$_GET[no]))

이런식으로 조건문이 있는데 / ~~~~ /i 안에 있는 부분에서 | 혹은 \로 감싸져 있는 부분이 필터링된다고 보면 된다.

 

그러면 필터링 되는 부분은 prob, _ , . , () , (빈칸) 이다.

 

이제 문제 쿼리를 보면 현재 id = guest이고 pw를 입력해야 한다. 조건문을 봤을때 pw를 확인하는 부분도 없고 그냥 id 를 admin으로 만들면 된다. 매우 쉬움

 

?pw=0'||id='admin'%23

 

728x90

'web > LOS' 카테고리의 다른 글

LOS 6번  (0) 2020.11.11
LOS 4번  (0) 2020.07.19
LOS 3번  (0) 2020.07.19
LOS 2번  (0) 2020.07.19
LOS 1번  (0) 2020.07.19
728x90

los 4번

먼저 필터링 함수를 보면 pw변수값만 필터링되는것을 알 수 있다.

문제 해결 조건을 보면, pw라는 변수가 존재하여야 하고, result의 pw와 쿼리에서 가져온 pw가 일치하여야 한다.

즉, db에 들어가있는 pw를 알아내야 한다.

 여기서 이용할 함수는 length함수와, ascii함수, substr함수이다.

우선, pw의 길이부터 확인해보자.

[?pw=' or length(pw)=1%23]

[?pw=' or length(pw)=2%23]

[?pw=' or length(pw)=3%23]

[?pw=' or length(pw)=4%23]

[?pw=' or length(pw)=5%23]

[?pw=' or length(pw)=6%23]

[?pw=' or length(pw)=7%23]

[?pw=' or length(pw)=8%23] >> Hello admin

 

pw의 길이가 8인건 알았지만, 숫자와 문자와 특수기호까지 포함해서 8자리라고 가정하면 가능한 값이 너무 많다.

pw의 길이는 아무리 길어도 2가지수를 넘어가지 않기에 노가다로 알아낼 수 있지만,

pw의 값을 알아내기엔 무리가 있다. 따라서, 파이썬코드를 작성하여 

pw 의 length와 값을 찾아보자.

pw 매칭

 

pw값은 095A9852

//아까 코드를 substr을 사용했기에 ord를 같이 사용해주면 대소문자도 구분 가능하다.

los 4번 답

728x90

'web > LOS' 카테고리의 다른 글

LOS 6번  (0) 2020.11.11
LOS 5번  (0) 2020.11.11
LOS 3번  (0) 2020.07.19
LOS 2번  (0) 2020.07.19
LOS 1번  (0) 2020.07.19
728x90

los 3번

쿼리랑 필터링 부분을 보면 no라는 변수값을 받아온다. 문제해결 조건은 id 라는 변수의 값을 admin으로 만들어야 한다.

그리고 필터링을 보면, prob, _, ., (), ', ", `를 필터링 한다. 즉, 쿼리를 정상적으로 작성할 수 없다. 

왜냐? 

예를 들어서 id라는 변수의 값을 admin으로 설정하고 싶으면, id='admin' 이런식으로 작성해야 하지만, '가 필터링되므로 변수값을 설정할 수 없다.

 

이 문제에서 이용할 함수는, char이라는 함수이다.

예를 들어서 char(99, 98)이렇게 작성하면 '기호가 포함되면서, 아스키값 99번과 98번의 값이 '기호로 감싸지면서 들어간다.

 

추가적으로, preg_match함수를 알아보자.

https://www.w3schools.com/php/func_regex_preg_match.asp

 

PHP preg_match() Function

PHP preg_match() Function ❮ PHP RegExp Reference Example Use a regular expression to do a case-insensitive search for "w3schools" in a string: Try it Yourself

www.w3schools.com

국내에서 쓴 글들은 대부분 3개의 인자로 preg_match를 설명하는데, 위 링크에 들어가보면 필수인자와 선택인자가 자세해게 구분되있어서, 위 글을 꼭 읽어보길 바란다.

 

preg_match함수를 해석해보면, no라는 변수의 값에 필터링을 적용시키고, 우린 no값부터 쿼리를 넣기 때문에 우리가 사용하는 쿼리가 전체필터링된다고 보면 될것같다.

일단 초기의 id는 guest이고, 그에 해당하는 no의 값은 뭔지 모른다. 또한, 우리가 들어가야 하는 id의 값은 admin이고, guest의 no의 값과는 달라야 id를 새로 지정하는 쿼리가 인식될 수 있다. 

쿼리를 작성해보면, 

[?no=1325 or id=char(97,100,109,105,110)]

char의 값은 admin의 아스키값을 넣은것이다.

los 3번 답

728x90

'web > LOS' 카테고리의 다른 글

LOS 6번  (0) 2020.11.11
LOS 5번  (0) 2020.11.11
LOS 4번  (0) 2020.07.19
LOS 2번  (0) 2020.07.19
LOS 1번  (0) 2020.07.19
728x90

 

los 2번

이 문제는 1번과 필터링함수가 동일하고, 문제가 풀리는 조건은 단순히 id라는 변수값에 admin이라는 값만 넣어주면 된다.

pw는 필요없긴 하지만, md5라는 새로운 문구가 추가되었다.

md5는 값을 해시값으로 바꿔주는 함수이고, 아직은 우회할 필요가 없으므로 넘어간다.

쿼리를 작성해보면, [?id=admin'%23]

los 2번 답

 

728x90

'web > LOS' 카테고리의 다른 글

LOS 6번  (0) 2020.11.11
LOS 5번  (0) 2020.11.11
LOS 4번  (0) 2020.07.19
LOS 3번  (0) 2020.07.19
LOS 1번  (0) 2020.07.19
728x90

https://los.rubiya.kr/gate.php

 

https://los.rubiya.kr/gate.php

 

los.rubiya.kr

웹 해킹에 관한  공부를 시작할때, 가장 기초로 여겨지는 SQL Injection 을 시작해보겠다.

노베로 시작하려면 정말 막막하겠지만, 이 문제들의 풀이는 구글에 널려있으므로, 여러사람들의 풀이를 보고 해석하면서 공부하길 바란다. (한가지 방법의 풀이만 이용하지 말고, 여러 풀이를 만들어 보길)

 

우선, 1번부터 시작한다.

los 1번

일단 노베에서 시작하기 위한 첫 단계는 익숙해지는거라 생각한다.

이미 풀었던 문제들은 한 2주 정도 지나면 거의 망각하므로, 나중에 시간되면 다시 풀어보고 곱씹어 보는게 좋을듯

 

일단 쿼리를 보면, id와 pw를 가져온다.

가장 첫 조건인 if문을 보면, prob, _ , . , () 를 id와 pw에서 필터링한다.

아직 이 조건이 문제푸는데 큰 영향이 없지만, 뒤로 갈수록 제약이 걸리기 때문에, 다양한 방법을 알고있어야 한다.

 마지막 조건, 이 문제가 풀리는 조건은 id라는 변수가 있어야 한다.

 

pw에 관한 조건은 없으므로, pw를 받는 쿼리부분은 지워주도록 하자.

 

[?id=' or 1=1 %23]

이 쿼리를 넣으면 문제는 간단히 풀린다.

los 1번 답

 

728x90

'web > LOS' 카테고리의 다른 글

LOS 6번  (0) 2020.11.11
LOS 5번  (0) 2020.11.11
LOS 4번  (0) 2020.07.19
LOS 3번  (0) 2020.07.19
LOS 2번  (0) 2020.07.19

+ Recent posts