본문 바로가기

Wargame

(21)
Lord of SQLInjection 15번 assassin 코드를 보면 '를 사용할 수 없기 때문에 id를 직접적으로 변경하는 건 어려울 거 같다. 그러므로 pw를 얻어내서 문제를 풀어야할 것 같다. 일단 pw=이 아닌 pw like인 것을 활용해서 문제를 풀 것이다. like는 %와 _를 이용하여 쉽게 풀어낼 수 있는데 일단 pw의 길이를 먼저 얻어낼 것이다.4 _를 7개 이하 쓰면 아무것도 뜨지 않고 8개보다 더 많이 쓰더라도 아무것도 뜨지 않는다. 그러므로 guest와 admin 둘 다 8글자인 것을 알 수 있다. 처음에 Hello admin으로만 코드를 작성했을 때 코드가 진행 되지 않았다. 그런 점에서 알 수 있는 것은 guest의 pw와 admin의 pw가 일부분 혹은 모두 겹친다는 것이다. 그렇기 때문에 다시 코드를 작성했다. 이렇게 코드를 해서 실..
Lord of SQLInjection 14번 giant 지금까지 문제들과 모양이 좀 다른 것 같다. 일단 shit이라는 것에 입력할 수 있는 것 같고 띄어쓰기, \n, \r, \t를 사용하지 못한다. 일단 shit이 어디에 들어가는지 알기 위해서 shit=1을 쳐보았더니 fromprob 사이에 입력이 되는 것으로 보인다. 아마 저기에 띄어쓰기를 하면 딱 좋을 거 같은데 막혀있으니 바꿔줄 수 있는 문자를 검색해보았다. 공백을 바꿔줄 수 있는 문자는 되게 많은 것 같은데 그중 검색해서 알아본 것은 %09 : tab %0a : line feed %0d : carriage return %0b : vertical tab %0c : form feed 이렇게 5가지가 나왔는데 그 중 1, 2, 3은 코드상 막혀있으니 나는 4를 이용하여 작성해보았다. 넣어주니 이렇게 풀렸..
Lord of SQLInjection 13번 bugbear query를 보면 id는 guest로 고정되어 있다. 코드에서 알 수 있는 것은 substr, ascii, =, or, and, , like, 0x 다 쓰지 못한다. 그리고 id를 admin으로 바꾸고 pw를 맞추면 되는 것 같다. 일단 like와 =를 쓰지 못하기 때문에 not과 를 이용해서 거짓의 거짓인 참을 만들어 pw의 길이를 알아보았다. 띄어쓰기를 하지 못하기 때문에 웬만한 건 모두 괄호로 분리했다. pw의 길이는 8이다. 그리고 이제 코드를 작성해보겠다. 이렇게 필터링된 것들을 모두 변환시켜서 넣어줬다. 그러면 이렇게 pw가 나오게 되고 이걸 넣어주면 이렇게 풀리게 된다. 답 : pw=52dc3991
Lord of SQLInjection 12번 darkknight 일단 처음 코드를 보면 지금까지 하던 문제들의 총합본이라 느껴진다. ', =, substr, ascii 이런 지금까지 쓰던 코드들을 쓰지 못한다. 그리고 이 문제는 pw를 구하면 되는 코드인 것 같다. 일단 pw의 길이를 먼저 구해본다. 이렇게 =는 like으로 대체하고 길이를 구했다. pw의 길이는 8글자다. 그다음으로 코드를 작성해보려고 하는데 ascii 함수를 대체할 것을 모르기 때문에 검색을 해보았다. ascii는 hex 함수를 사용하여 대체를 하려고 한참 코드 작성에 애먹다가 포기하고 char 함수를 쓰기로 했다. 근데 뭔가 문제가 생겼다. 코드 상의 오류가 있다고 뜨진 않고 그냥 마지막 글자가 나오질 않았다. 일단 이렇게 하고 마지막 문자는 그냥 따로 query를 작성해서 얻어냈다. 10진수 ..
Lord of SQLInjection 11번 golem query를 보면 id는 guest로 고정되어 있고 코드를 보면 id는 admin으로 바꾸고 pw를 찾는 것 같다. 전 문제에서 썼던 방법을 쓰려고 하는데 =이 막혀있다. 대체할 방법을 모르기 때문에 검색을 해보았다. = 대신 like를 이용하면 될 것 같다. 이런 식으로 like를 이용하여 pw의 길이가 8이라는 것을 알아냈다. 그 후 코드도 이렇게 변경을 해보았다. 이렇게 작성되고 코드를 실행시켜주면 pw 값을 알 수 있다. 답 : pw=77d6290b
Lord of SQLInjection 10번 skeleton query를 보면 id는 guest로 고정되어 있고 id를 admin으로 만들면 되는 간단한 문제인 것 같다. 뒤에 붙어있는 ' 와 거짓이 되는 query는 %23를 이용해 무시해준다. 답 : pw=0' or id='admin'%23
Lord of SQLInjection 9번 vampire 문제를 보면 입력된 값은 모두 소문자로 바꾸고 "admin"은 ""으로 바뀌는 것을 볼 수 있다. 그러므로 admin안에 admin을 넣어서 "a""dmin" 이런 형태가 나오게끔 만들 것이다. 답 : id=aadmindmin
Lord of SQLInjection 8번 troll 코드를 확인해보면 id에 admin이라는 값을 넣으면 되고 admin이라는 문자열은 필터링되는 것을 볼 수 있다. 여기서 중요한 것은 preg_match 함수는 대소문자 구분을 하지 않는다는 것이다. 그러므로 그냥 admin이라는 문자열을 대문자로 아무거나 바꿔주면 된다. 답 : id=ADMIN