728x90

 

이 문제의 소스 코드를 보면 아까전에 푼 5번 문제처럼 풀면 된다. 여기서는 공백말고 or을 필터링한다. 그럼 걍 아까 푼 페이로드 그대로 넣어주면 될것같다.

 

 

음....... 아마도 5번 문제를 다르게 푼 사람들에게는 다르게 느껴졌을수도 있지만 나한테는 그냥 똑같이 넣으면 되서 별로 어렵지 않았다. 

728x90

 

소스 코드를 보면 이 문제도 그냥 단순하게 id를 admin으로 만들면된다. 그러나 공백을 필터링하고 있어서 아까까지 쓰던 or를 쓸려면 살짝 바꿔줘야된다. %09를 %20대신 써도 되고 그냥 or를 쓰지말고 ||로 쓰면 된다. 난 주로 이러면 ||를 쓰니깐 그걸로 가보자.

 

 

그냥 풀려버렸다. %20대신 쓸수있는 것들을 아는지 물어보는 문제같았다. 물론 앞선 방법 말고도 캐리지 리턴(%0b)같은것들을 써도 상관없다. 그것들도 나중에 포스팅 해야겠다. 

728x90

 

이 문제는  blind sql injection문제이다. 이부분에 대해서는 나중에 따로 정리할것이다. 일단 이 문제를 풀어보자. 일단 비밀번호의 길이를 알아내야된다. 그것까지 코딩하려고 했는데 그냥 귀찮아서 대충 추측해보았다.

 

 

비밀번호의 길이가 10이하라고 넣으니 참이 나왔다. 그럼 5이하라고 넣어보자.

 

 

그랬더니 거짓이 나왔다. 이제 중간인 7로 해보자.

 

 

거짓이 나왔다. 그럼 이제 8부터 넣어보자.

 

 

비밀번호의 길이는 8이였다. 운좋게 길이가 얼마 안되서 금방 찾았다. 길이를 아는것만으로도 시간을 많이 단축시킬수있다. 이제 코딩을 해보자. 나는 파이썬으로 보통 코딩을 한다.

 

 

결과값이 28초 정도만에 나왔다. 이제 저걸 그냥 넣으면 된다. ?pw=295d5844라고 쳐보자.

 

 

문제가 풀렸다. 다른 blind sql injection에 비해서는 쉬운 문제였던것 같다.

 

 

728x90

 

이제는 goblin이다. 이 문제는 앞선 두 문제와 달리 쿼터들도 필터링하고 있다. 일단 no를 guest가 아니도록 맞춰줘야된다. 저 소스 코드만 보고는 guest의 no값을 모르니 걍 넣어보는게 좋을것같다.

 

no에 0부터 넣어보는데 바로 1에서 잡혔다. 그럼 1말고 다른값들을 넣으면 될것같다. 걍 0을 넣자. 그리고 이제 id를 admin으로 맞춰줘야되겠다. 일단 쿼터들을 필터링하고 있으니 걍 admin을 16진수값으로 변환하여 넣어주자. 물론 그냥 넣으면 숫자취급하니깐 0x를 붙여주긴 해야된다.

 

 

파이썬을 이용하여 간단하게 변환해주었다. 파이썬을 알기전에는 c로 몇줄 더 쳤어야됬는데 편해졌다. 일단 저 값을 이용하여 풀면 될것같다. 대충 페이로드를 짜보면 ?no=0 or id=0x61646d696e로 하면 풀릴것같다.

 

 

이렇게 풀리게된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

 

이제 2번 문제로 왔다. 소스 코드를 보는데 아까 1번문제랑 거의 같았다. 다른건 id가 admin으로 와야된다는 것이다. 그래서 그냥 id를 admin으로 맞춰주고 뒤에 모든 구문을 주석처리해보자.

 

 

별다른 문제없이 풀렸다. 참고로 페이로드는 ?id=admin'%23이였다.

728x90

이곳의 문제는 소스코드를 그냥 화면에 표시해놓는다. 일단 소스코드를 살펴보면 일단 몇가지 것들을 막는것같다. 그런데 첫번째 문제라서 그렇게 많이 막는것은 아니라서 일단 간단하게 or로 풀면될 것 같다.

 

일단 기본적으로 php?id=a'or'1=1'%23으로 날려보자. 여기서 %23은 #을 의미하는데 여기서는 url에 치는것이므로 #을 url encoding해 준 값을 넣어주는것이다.

 

 

바로 풀렸다. 진짜 아주 기본적인 sql injection이였다.

+ Recent posts