저에게 크나큰 멘붕과 새로운것을 알게해준 문제입니다.
역시 sql 문제는 할게 못됩니다 흑흑흑
힌트만 보실 분은 힌트를 눌러주세요
중간 풀이
// 12 11 05
// 멘붕데이
먼저 문제 55번에 들어가면 다음과 같은 화면이 나옵니다
이쁜 구더기가 마우스를 따라다니다가 잡아먹습니다.
잡아먹히지 않기위해서 피하면서 점수를 올려야 합니다.
게임은 이 문제 풀면서 머리 아플때 하세요 ㅋㅋ
그리고 엄청난 숫자를 지니신 굇수분들의 숫자가 나옵니다
그리고 score 의 파라미터로 점수를 날리면 아이디를 띄워주는데, 이부분에서 취약점이 발생됩니다.
이번에 사용할 공격은 Blind Sql Injection 공격입니다.
이제 그러면 하나하나 찾아야 겠는데,
소스보기를 하면
라고 하네요.
이제 필터링 되는 것들을 알아야 하는데 phps 그런건 없습니다.
그냥 하나하나 넣어야지요.
ascii 안됩니다.
substr 안됩니다.
substring 안됩니다.
union 안되구요
select 도 마찬가지입니다.
그러면 information_schema 문제는 아닙니다.
이렇게 저는 첫번째 멘붕이 시작되었습니다.
그래서 어느 분의 블로그를 보자 procedure analyse() 를 끝에 붙이면 db, table, column 을 볼수 있다고 하셨습니다.
결과를 보자, oldzombi2.challenge55_game.ip 라는 값이 나왔습니다.
앗싸.. 하지만 여기서 두번째 멘붕이 시작됩니다.
ip 라는 칼럼밖에 안나오는데...
하지만 limit 를 이용하면 가능합니다. [재미를 위해서 정확한 풀이는 담지 않겠습니다.]
위 limit 를 이용하면 다음과 같은 칼럼 추출이 가능합니다.
[참고로 length 로 답의 글자수도 추출 가능합니다.]
앞의 세글자만 봐도 대문자 소문자가 섞여있는것 같이 보입니다 [일부 모자이크]
이제 칼럼명은 모두다 구했습니다.
blind sql injection 을 시도해야 합니다.
답은 저 pas@@@... 칼럼 안에 있구요,
BSI[blind sql injection]의 값이 거짓이라면 다음과 같은 id 를 토해냅니다.
반면 참이라면 다음과 같은 아이디를 토해냅니다.
[쿼리에 따라 달라질수 있으니 유의 **]
하지만 인젝션을 잘 보니
ascii 도 막혀있고, sub .. 들도 막혀있습니다.
이것으로 세번째 멘붕이..
하지만 세번째는 그닥 오래가지 않았습니다.
my sql 의 left right 함수를 알게 되고, char이 안되니 0x헥스값 형태로 값을 비교 해서 인젝션 했습니다.
left 함수는 substr 함수와 달라서 약간 생각이 필요합니다.
저는 자동화 프로그램을 만들어서 3분 정도 인젝션 끝에 hex 코드 표로 대조한뒤
답을 인증했습니다.
에휴.. 힘드네요 ㅋ
webhacking.kr 40번 (11) | 2012.11.29 |
---|---|
webhacking.kr 57번 (0) | 2012.11.28 |
webhacking.kr 49번 write up (5) | 2012.11.05 |
Webhacking.kr 46번 write up (2) | 2012.11.04 |
Webhacking.kr 37번 Write up (2) | 2012.11.04 |