이전문제랑 비슷할 거 같았는데 뭐가 추가되고 필터링이 달라졌다

id 파라미터에는 prob _ . 까지 이고 싱글쿼터는 필터링 되지 않았다 그리고 길이 제한. 긴 payload는 쓰기 어려울 것 같다.

일단 문제를 풀기 위해서는 admin에 해당하는 no 값을 찾아야 하는 것 같다.

이것저것 해보기..

 

guest는 왜 없냐? no 1일 거란 안일한 생각..

admin은 있네.

id = admin and no= ? 하려고 했으나.. 너무 길어서 and → ||  변경해도 너무 길다고 필터링에 걸린다.

그래서 힌트를 조금 얻으니 굳이 id = admin이라는 조건이 필요없다 왜?

이미 쿼리에 id = admin이라는 조건이 있고 no 만 찾으면 된다.

 

payload : id = ' ' || no >10 '

id 파라미터에 admin을 제거하고 no를 찾기 위한 조건을 or과 연결해서 전달하니...
또 길이 제한에 걸린다. no가 어떤 수가 올지 모르니 여기서는 계속 길이제한에 걸릴 것이다. 
그러면 no 파라미터에 길이제한이 없으므로 no 파라미터를 이용해야 하는데 no 파라미터에는 no 값을 넣어야지 no를 구하는 조건들을 넣을 수가 없다. 

그러면 no 파라미터는 무력화하고 no를 찾는 조건 구문을 넣으려면.. 예전 문제에서 봤던 거처럼 개행이 필요해보인다.

테스트 페이지에서 id 가 1이상인 데이터를 조회할 때

WHERE ID = ' ' || ID > # AND [컬럼] = \n

[값] # ' ;

이런식으로 개행을 시켜버리면 AND [컬럼]은 무력화되면서 ID > [ 값 ] ; 이렇게 연결된다.

다행히도 no>까지는 길이제한에 걸리지 않는다.

id = ' ' and no > 1111111111111111111111 암만 자릿수를 늘려도 no가 크다고 한다.. 이상하다..

hex값으로 변경했는데, 이때는 숫자로 인식하지 않아서 1로 고정 반환된다..

다시 payload를 보니 개행문자와 주석(#)을 제대로 넣지 않았음.....

하ㅠㅠ


 

노가다로 일단 no의 길이부터 찾아야 한다.. 10^8보다 크고  10^9보다는 작다.

10^8 < no < 10^9

자동화코드 써보려했으나 시간이 너무 오래걸려서 수동작업함..

59보다 작으니 58이겠군.. 이러면서 한자리 한자리씩 오른쪽부터..

 

똑똑하지 않으면 몸이 고생하네..

'WEB > Lord of SQLinjection' 카테고리의 다른 글

[LOS] step28. FRANKENSTEIN 풀이  (0) 2023.07.03
[LOS] step27. blue_dragon 풀이  (0) 2023.06.22
[LOS] step25. green_dragon 풀이  (0) 2023.06.21
[LOS] step24. evil_wizard 풀이  (0) 2023.06.21
[LOS] step23. hell_fire 풀이  (0) 2023.06.21

+ Recent posts