본문 바로가기

[webhacking.kr] Challenge 46 :: SQL Injection (char함수) ▼ Challenge 46은 다음과 같습니다. ▼ php 코드는 다음과 같습니다. 요약해 보면, GET으로 전송하는 "lv" 값을 치환과 필터링 과정을 거쳐, Query에 Insert 하고, select 값 중에 $q[0], 즉 id가 "admin"이면 문제가 풀리게 됩니다. 대부분의 사람들이 처음에 "admin의 lv 값은 몇 번일까?"라고 생각할 것 입니다. 하지만 여기서 중요한 것이 ▼ 다음과 같이 단순히 id가 "admin"이면 됩니다. lv=2 or id='admin' 모든 필터링을 우회하는 것은 성공했지만, Single Quotes가 먹히질 않는 것을 보니, magic_quotes_gpc가 on 되어 있는 것 같습니다. Challenge 61번(http://limjunyoung.tistory... 더보기
[webhacking.kr] Challenge 11 :: Regular Expression (정규표현식) ▼ Challenge 11은 다음과 같습니다. ( 모자이크 부분은 IP 입니다. ) 이번 Challenge는 따로 설명드릴 것이 없습니다. 정규식만 제대로 이해하고 계신다면 금방 해결하실 수 있습니다. preg_match($pattern, $string) : $pattern의 정규표현식을 $string에서 찾습니다. ▼ 다음은 regexr.com 에서 실습한 내용입니다. 정규식을 잘 모르시는 분들은 regexr.com의 Cheatsheet에서 공부하시면 됩니다. 더보기
[webhacking.kr] Challenge 07 :: SQL Injection (union) ▼ Challenge 07은 다음과 같습니다. ▼ php 코드는 다음과 같습니다. 요약해 보면, GET으로 전송하는 값을 eregi() 함수를 통해 여러 문자열과 공백을 필터링을 하고, Random하게 생성되는 Query문에 해당 값이 Insert 되어 "2" 라는 값이 출력되면 문제가 풀리게 됩니다. 단순하게 where lv=(3-1)이라고 입력하면 풀릴 것이라 생각했지만, 실제 DB에는 "lv=2"라는 값은 존재하지 않아 "query error" 문구가 뜨게 됩니다. ( "+" 는 URL에서 공백으로 해석되어 php에서 space로 인식됩니다. ) 소스 제일 위에 union을 사용하라는 Hint가 있습니다. 그래서 다음과 같이 입력했더니 성공하였습니다. val=3)union(select(3-1) ( .. 더보기