728x90

 

갑자기 웹쉘을 올려라고 한다. 진짜로 올리면 큰일날것같으니 그냥 그런 형식을 올려라는것 같다.

 

 

가장 기본적인 php파일을 올리니 access denied가 뜬다. 힌트를 보니 파일 타입을 바꿔줘야 될 것 같다.

 

 

burp suite로 보자. 처음에는 Content-Type이 application/octet-stream으로 되어있다. 당연히 이걸 필터링 할것이다.

 

 

그러므로 필터링을 거의 하지 않는 이미지 타입중 jpg로 바꾸어서 전송해보았다.

 

 

문제가 풀렸다. 그냥 간단하게 풀수있는 문제다.

 

 

'wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 32번 문제 풀이!!!  (0) 2018.08.03
webhacking.kr 11번 문제 풀이!!!  (0) 2018.08.03
webhacking.kr 23번 문제 풀이!!!  (0) 2017.10.25
728x90

 

 

 

오랜만에 휴가를 받아서 글을 다시 쓰게 되었다. 간단하게 문제를 풀어보자. 빨간 부분은 IP주소이다. if부분을 보면 pat이랑 val을 같게 맞추면 Password가 나온다고 되어있다. 위에 pat을 보니 정규식으로 표현되어 있다. 아주 간단한 정규식이니 금방 풀어보자.

 

처음에 [1-3]은 그중 아무거나 고르라는 것이다. 일단 1을 고른다.

 

뒤에 [a-f]도 마찬가지인데 {5}로 5번 반복시켜준다.

 

_는 그냥 쓰고 .은 앞에 한문자를 나타낸다.

 

*은 0회이상 반복이다. 그리고 IP주소가 나오고 또 .*이 나온다.

 

\t는 그냥 tab이다.

 

대충 pat을 맞춰보면 1aaaaa_aIP주소a%09p%09a%09s%09s가 나온다. 주소창에 그대로 쳐보자. 물론 val로 줘야된다.

 

 

정규식을 알고있는지 물어보는 간단한 문제였다.

'wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 43번 문제 풀이!!!  (0) 2018.08.03
webhacking.kr 23번 문제 풀이!!!  (0) 2017.10.25
webhacking.kr 59번 문제 풀이!!!  (0) 2017.10.25
728x90

 

드디어 Lord of SQLinjection을 다 끝내게 되었다. sql injection에 대해 많은것을 공부하고 실습할수있는 좋은 경험이였다.

728x90

이 문제는 소스 코드의 길이가 엄청 길다. 그래도 차근차근 읽어보자. 함수 reset_flag가 flag를 매번 리셋시키는것을 볼수있다. 그리고 여러가지 것들을 필터링하고 있다. 또 flag값은 100보다 크지않다. 일단 그냥 blind sql injection을 쓰면 reset_flag때문에 틀릴때 마다 초기화된다. 그래서 리셋이 되지 않기 위해서 에러 쿼리를 사용하자. 그런데 그렇게 되면 참과 거짓을 판단할수없다. 그럴때 쓰는게 바로 time based blind sql injection이다. sleep을 이용해서 참일때는 어느정도 돌고 거짓이면 실행이 안되게 코딩을 해주자.

 

 

이렇게 pw가 나오게 된다.

 

 

 

728x90

 

이 문제도 그냥 풀렸다......

728x90

 

아무것도 안했는데 풀렸다. 문제에 취약점이 발견된것같다.

728x90

아까 풀었던 21번 문제와 거의 똑같다. 그냥 필터링이 좀더 들어간것 같다. 그리고 오류 메세지를 출력하지 않는다. 그러나 화면에 진짜 아무런 값도 출력하지 않기때문에 이걸 이용해서 코딩을 해보자.

 

 

pw가 나왔다. ?pw=5a2f5d3c를 이제 쳐보자.

 

문제가 풀렸다. 이건 21번 문제를 풀었으면 쉽게 풀수있을것이다.

728x90

 

소스 코드를 보면 error가 발생했을때 쿼리문을 출력시키는것을 볼수있다. 그리고 싱글쿼터를 필터링하지도 않는다. 이러면 우리는 error based sql injection을 시도해볼수있다. 확실히 쓸수있는지 알아보기위해 에러를 내보자.

 

 

역시 에러문을 그대로 출력해준다. 이렇게되면 이 문제는 거의 error based sql injection이라고 볼수있다. 오류가 나는지 안나는지 여부를 확인하는 코드를 짜서 문제를 풀어보자.

 

 

pw가 나왔다. 이때까지와는 뭔가 달라보인다. 일단 ?pw=!!!!를 쳐보자.

 

 

풀렸다. 답이 좀 그렇긴 해도 오랜만에 보는 error based sql injection이라서 신선했다.

 

 

 

728x90

 

소스 코드를 보면 id='guest'뒤에 #로 주석처리가 되어있다. #는 한줄주석이라서 그냥 개행문자를 써주고 뒤에 admin으로 pw를 맞춰주면 될것같다. 쿼리를 짜보면 ?pw=%0a and 0 or id='admin'%23이 나온다. 이제 넣어보자.

 

역시 풀리게 된다. 이건 #으로 인한 주석처리를 어떻게 피할것인지 묻는 기본적인 문제였다. 

728x90

 

오랜만에 blind sql injection문제이다. regex와 like를 필터링 하고 있다. 일단 그건 그렇다 치고 pw의 길이부터 구해보자.

 

 

 

?pw='||length(pw)<20%23을 넣었는데 거짓이라고 뜬다.

 

 

?pw='||length(substr(pw,1,1))=4%23를 넣어보면 참이 뜬다. 한글자당 4바이트인걸 보면 유니코드같다. 유니코드이므로 ascii말고 ord를 이용해서 풀어야겠다. 코딩을 해봤다.

 

 

이렇게 나왔다. 이제 이 10진수를 16진수로 바꾸고 유니코드로 보자.

 

 

이렇게 나왔다. 이제 저 값을 넣어보자. ?pw=¸ùÅ°ÆÐÄ¡¤»라고 치면 될것같다.

 

풀리게 되었다. 이건 유니코드인지 알아차리는게 중요할것같다.

 

 

 

 

 

 

 

+ Recent posts