본문 바로가기

[webhacking.kr] Challenge 61 :: SQL Injection (alias) ▼ Challenge 61의 소스는 다음과 같습니다. SELECT 바로 다음에 Injection을 하여야 합니다. 괄호가 필터링 되어 있으니 함수는 사용할 수 없습니다. 그렇다면, SQL의 Alias를 이용하겠습니다. Alias (as) : 테이블, 컬럼에 일시적인 이름을 부여 보통 Alias는 컬럼명을 더 가독성있게 해주거나, SELECT에서 추가적인 연산 결과를 보여주기 위해 사용합니다. ▼ 다음의 예를 보시죠. 위의 예제를 보면 실제 컬럼은 id 밖에 없지만, ascii() 함수를 통해서 id의 첫번째 문자의 ascii 값을 만들고 그것을 Alias(as)를 통해서 ascii_code라는 컬럼이름으로 출력하게 됩니다. ▼ 이것을 이용하면 다음과 같은 예제를 만들 수 있습니다. 그럼으로 Alias를 .. 더보기
[webhacking.kr] Challenge 59 :: SQL Injection (reverse함수) ▼ Challenge 59는 다음과 같습니다. 빨간 글씨가 각 POST 전송 name 입니다. ▼ 소스는 다음과 같습니다. Login과 Join으로 되어 있고, admin으로 가입하여 로그인하면 문제가 풀릴것 같습니다. Insert 구문에서 phone 부분에 Quotes가 없으므로 이 곳에 Injection을 해보도록 하겠습니다. insert into c59 values('test', 1, 'admin') 이라고 입력해 보지만, admin을 필터링함으로 Access Denied가 뜹니다. 문자열 필터링을 우회할 수 있는 MySQL의 REVERSE() 함수를 쓰도록 하겠습니다. REVERSE() : 문자열을 역순으로 반환 insert into c59 values('test', 1, reverse('admi.. 더보기
[webhacking.kr] Challenge 42 :: ZIP Cracking ▼ Challenge 42는 다음과 같습니다. test.txt의 download를 눌러보면 다운로드는 되지 않고 그냥 다른 페이지가 보입니다. test.zip download를 눌러보면 "Access Dined" 알림창이 뜹니다. ▼ 다음과 같이 소스코드에 해결책이 나와 있습니다. test.txt의 download를 누르면 "?down=dGVzdC50eHQ="로 이동하게 링크가 걸려있습니다. "dGVzdC50eHQ="는 Base64로 인코딩된 값이고 디코딩하면 "test.txt"라는 문자가 나옵니다. 이것을 이용하여 "test.zip" 문자를 Base64 인코딩하면 "dGVzdC56aXA=" 값이 나오고 해당 Javascript를 지우고 더보기