Wargame/Lord of SQLInjection (18) 썸네일형 리스트형 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 Lord of SQLInjection 7번 orge 코드를 보니 4번 문제의 내용에서 or만 못 쓰는 것 같아서 이번에는 노가다 대신 코드를 작성해보려고 한다. 그전에 쉽게 얻을 수 있는 pw의 길이 값을 먼저 구해봤다. pw의 길이는 8이고 이제 코드를 작성해보겠다. 코드는 내가 들었던 강의를 참고하여 작성했다. 코드를 작성하고 실행해보니 pw를 구할 수 있었다. 답 : pw=7b751aec Lord of SQLInjection 6번 darkelf 전의 5번 문제와 똑같이 id는 guest로 고정되어 있고 admin으로 바꾸면 되는 문제 같다. 다른 점은 or과 and를 쓰지 못한다는 것인데 5번 문제의 공백을 해결하기 위해 썼던 || 연산자를 포함해서 풀면 될 것 같다. 답은 그냥 5번 문제와 똑같았다. 답 : pw='||id='admin'%23 Lord of SQLInjection 5번 wolfman query와 코드를 보니 id는 guest로 고정되어 있고 이걸 admin으로 바꾸면 풀리는 문제인 것 같다. if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); 이 코드를 보지 못하고 pw=0' or id='admin'%23 이렇게 했더니 바로 No whitespace가 뜬다. 공백을 빼야하는 코드이다. 그러므로 띄어쓰기가 필요 없는 or을 대체해줄 수 있는 || 연산자를 포함시켜 문제를 해결했다. 답 : pw=%27||id=%27admin%27%23 이전 1 2 3 다음