2021. 1. 17. 18:56ㆍ정보보안/웹 해킹
14번 문제인 GIANT이다.
이 문제는 앞서 풀었던 문제랑 달라보인다.
우선 코드를 확인해보자.
if(strlen($_GET[shit])>1)
if(preg_match('/ |\n|\r|\t/i', $_GET[shit]))
$_GET[shit] 을통 해 받은 shit 파라미터의 길이가 1보다 클 경우 No Hack ~_~ 을 출력하며 종료하고,
\n,(rogod) \r(캐리지 리턴), \t(수평탭) 를 사용하지 못하게 하고 있다.
$query = "select 1234 from{$_GET[shit]}prob_giant where 1";
쿼리를 확인해보면, shit 파라미터를 받으며, 이 파라미터는 테이블쪽에 관련되있는것 같다.
확인해보니 select 1234 fromprob_giant where 1이며
from과 prob_giant 사이에 공백이 없어 쿼리를 제대로 인식하지 못하고 있는걸로 보이며
이를 해결하면 문제를 해결 할 수 있을거라고 생각했다.
공백을 대체할 수 있는게 무엇이 있을까 ?
일반적으로 사용하는 방법으로는
1) \n → Line Feed
2) \r → Carrage Return
3) \t → Tab
4) /**/ →
5) () → 괄호 등이 있는데 현재 strlen 함수를 통해 한자리만 입력을 할 수 있다.
그렇다면 아스키코드표를 살펴보자.
하늘색으로 표시되어 있는것이 공백 문자로 총 6개가 존재한다.
이 중 필터링이 안되어있는 0x0b, 0x0c를 이용해 문제를 해결할 수 있다.
'정보보안 > 웹 해킹' 카테고리의 다른 글
LOS(The Lord of the SQLI) 17 - Zombie Assassin (0) | 2021.02.18 |
---|---|
LOS(The Lord of the SQLI) 16 - SUCCUBUS (0) | 2021.01.17 |
LOS(The Lord of the SQLI) 13 - BUGBEAR (0) | 2021.01.17 |
LOS(The Lord of the SQLI) 11 - GOLEM (0) | 2021.01.16 |
LOS(The Lord of the SQLI) 9 - VAMPIRE (0) | 2021.01.16 |