2018. 2. 21. 17:19

## prob51(web, 250pt)


[Main]

 51번 문제는 간단한 sql injection문제인데, 입력한 문자열이 md5 해시 값으로 변한다는 특징이 있습니다. md5 sql injection은 유명하므로 검색하면 정말 많이 나옵니다. 우선 문제 페이지를 살펴보면 아래 [그림 1]과 같고 해당 페이지 내 source 링크를 클릭하면 php 소스코드가 아래 [그림 2]와 같이 나옵니다.


[그림 1] 문제 페이지


[그림 2] index.phps


 우선 소스 코드를 보면 입력할 수 있는 벡터는 총 2개($_POST[id], $_POST[pw])입니다. 이 두 벡터 중 $_POST[id]부분에 sql injection을 성공시키기 위해서는 magic_quotes_gpc를 우회해야하는데, mb_convert_encoding()함수가 없어, 우회할 수 없습니다. 따라서 $_POST[pw]를 공략해야하는데, 이 파라미터에는 입력 값이 md5()함수를 통해 md5해시 값이 저장됩니다. 


 이는 md5 sql injection으로 유명한데 md5해시 값이 single quote(')와 "="의 값을 가지는 hash 값을 가지도록 만들면 됩니다. 즉 예를 들면 "select id from challenge_51_admin where id='admin' and pw='????'='???????'"과 같은 식으로 sql injection을 시키면 됩니다. 그러면 문제가 풀리는데 "'='"가 포함되는 md5 hash 값을 찾으려면 검색해도 되고 0부터 9999999까지 for문을 돌리면서 직접 php코드를 짜도됩니다.


[그림 3] Congratulations~!


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

[webhacking.kr] prob45(550pt)  (0) 2018.02.21
[webhacking.kr] prob26(100pt)  (0) 2018.02.21
[webhacking.kr] prob5(300pt)  (0) 2018.02.21
[webhacking.kr] prob33(200pt)  (0) 2018.02.21
[webhacking.kr] prob4(150pt)  (0) 2018.02.21
Posted by holinder4S