관리 메뉴

FU11M00N

Lord of Injection giant(14)단계 본문

Web Hacking/Lord of injection

Lord of Injection giant(14)단계

호IT 2019. 11. 4. 00:41

이 문제를 드간순간 저는 기분이 너무좋았어요...

왜냐하면 블라인드인젝션 문제가아니였거든요!!!!

파이썬을못해서 하나하나 노가다하는게 너무 힘들었는데,

드디어 해방인기분!!

잡담그만하고 이제 소스 보겠습니다!!

 

 

먼저 처음등장한 함수 strlen이 등장했네요!! 

strlen 함수는 그냥 길이를 알려주는 함수입니다.

예시를 들자면 (한글일땐 값이 달라짐)

echo "이것의 길이는??? : ". strlen("Edward");

출력 : 6

대충 이해 하셨죠???

 

그럼 if(strlen($_GET[shit])>1) 이것의 뜻은

shit이 한글자가 넘으면 No Hack~ 을 출력 할것입니다!

 

그리고 이번 문제에서 금지시키는것은 \n \r \t 입니다.

\n새로운 줄

\r리턴 키

\t탭 키

금지시키는것때문에 왠만한 공백들은 금지되었네요. 그럼 다음 소스를 보겠습니다.

 $query = "select 1234 from{$_GET[shit]}prob_giant where 1"

이란 쿼리문이 있고

result1234가 오면 solve로 정답입니다!!

 

그럼 우선  $query = "select 1234 from{$_GET[shit]}prob_giant where 1" 이란

쿼리문을 자세히 봐야하겠는데요.

 

언뜻보면 정상적인 쿼리문처럼 보이지만,

fromprob 사이에 공백(띄어쓰기) 가 안되어있어서 shit안에 저희가 공백을 넣어줘야 

쿼리문이 정상적으로 실행되겠네요!!

이렇게 띄어쓰기를 안하고 fromprob_giant 를 쓰면 syntax 에러 라고 알려주네요!!

그럼 shit안에 공백을 넣어야합니다!

자 그럼 공백을 대체할수있는게 뭐가 있는지 알아봅시다!!

\n LF line feed (라인 개행) %0A
\v VT: vertical tab(수직 탭)
%0B
\r CR carriage return(리턴 키) %0D
\t HT horizontal tab(수평 탭)
%09
\f FF form feed(폼피드) --> 출력 용지를 한페이지 넘김.
%0C

 

이렇게 5개가 whitespace(%20) 키를 대체할수있는 공백키 들입니다!!

문제에서는 \n  \r  \t 이것 3개를 금지시켰으니 그것이 아닌 %0b %0c 로 풀면 될것이에요!!

?shit=%0B

 

GIANT 클리어!!

Comments