티스토리 뷰

1. 18번 메인화면

2. 소스코드인데 index.phps로 가봅시다.

3. index.phps 코드. 딱봐도 sql 인젝션이죠?

4. mysql_query와 mysql_fetch_array에 대한 설명입니다.

5. 이 코드는 challenge18_table 이라는 테이블을 제공해줬네요ㅋㅋ힌트라고 볼 수가 있습니다. 만약 테이블명이 없다면 테이블명을 알아내는 sql 인젝션을 해야해서 저의 수준에서는 아직 어려울 것 같습니다.

challenge18_table에서 id가 getst인 것을 불러와서 "hi guest"를 출력해주는 코드입니다.


6. $_GET[no] 값에 '1'을 입력해주면 'hi guest'가 뜨네요~ 흠.. 그러면 no 값이 숫자니까 0이나 2나 3이나 쭉 입력해보면 admin이라는 것을 유추할 수 있습니다.

7. no 값에는 다행히 숫자가 들어갈 공간이라서 ' 같은 조잡한 문자가 안 들어가도 되니 편합니다.

or 값은 한 쪽이 참이기만 하면 모두 참을 반환하기 때문에 왼쪽에 no값을 거짓으로 만들고, or 값으로 오른쪽에는 no=2 같은 숫자를 대입할 수 있습니다. 이렇게 되면 왼쪽은 거짓이되고 오른쪽은 참이 되기 때문에 or로 인해 no=2의 값을 불러들이게 되요. 결과적으로 select id from challenge18_table where id='guest' and no=123 or no=2  가 됩니다.

8. 하지만  소스코드에서 eregi로 $_GET[no] 값을 필터링 시켰네요. 필터링 값에 공백도 포함되어 있어서 공백을 따로 우회를 시켜야 합니다.

* 공백 우회가 가능한 문자의 종류

1. Tab : %09

2. Line Feed (\n): %0a

3. Carrage Return(wr) : %0d

4. 주석 : /**/

5. 괄호 : ()

6. 더하기 : +

위에서 입력한 no=123 or no = 2에서 공백이 2개가 있네요.. 

저는 2번의 공백 우회로 %0a로 대체해서 입력을 했습니다.


9. Clear


'Wargame > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 54번 문제 풀이  (0) 2015.06.30
Webhacking.kr 4번 문제 풀이  (0) 2015.06.30
Webhacking.kr 16번 문제 풀이  (0) 2015.06.30
Webhacking.kr 17번 문제 풀이  (0) 2015.06.30
Webhacking.kr 15번 문제 풀이  (0) 2015.06.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함