web security academy

2026. 2. 4. 19:56ㆍ보안/Web security Academy

Lab: SQL injection with filter bypass via XML encoding

이번에 할 웹 세큐리티 아카데미에서는 sql injection에서 xml encoding 필터 우회입니다

 

1. Burp Suite 실행

 

2. proxy로 이동후 open browser에서 web security academy 접속 및 로그인 후 관련 SQL 파트에 있는 xml encoding 우회 랩 접속

3. intercept on 후 해당 페이지 check stock 버튼 클릭

버튼을 클릭하면 

burp suite에서 해당 웹 페이지 정보를 볼수 있습니다 해당 URL Send to Repeater 클릭 후  intercept off

5. 현재 사이트에서 sql 구문이 막히는 지 확인하기 위해서 StoredID 부분에 UNion select null 입력후 send시 

해당 웹페이지에 있는 WAF가 sql 구문을 방어 했다고 알려준다 

6. 여기서 사용할 구문이 영문인 UNION SELECT NULL 이 아닌 XML endoning을 사용한 WAF우회 방법이다 

UNION SELECT NULL을 endoning을 하면

 

UNION SELECT NULL

 

이런 형태로 변환을 할수가 있다

 

변환한 UNION SELECT NULL을 입력을 하면 WAF가 방어하지 못하는 모습을 보게된다 여기서 이제 우리가 원하는 정보를 얻어서 로그인을 해야한다

7. 일단 해당 문제 질문에서 users라는 이름을 가진 테이블이 있다는것은 알고있다 또한 컬럼명들이 username과 password로 저장되어있는것도 알고 있다 그러면 

UNION select username from users를 하면 데이터베이스에 있는 username이 나오고 password를 하면 password가 나온다 

이제 이것을 하나로 합치면 

UNION SELECT username || '~' || password From users 이런 형태에 sql구문이 나오는것이다 

하지만 이 구문을 그대로 쓰면 안되고 이것을 xml encoding을 한 형태로 넣어줘야 한다

 

해준 형태는 

 

UNION 
SELECT 
username 
|| 
'~' 
|| 
password 
FROM 
users

 

이런 형태이다 그럼 계정명과 비밀번호 취득에 성공했다 

 

PS. 이런게 매번 encoding을 계속 할수도 없고 (AI에게 물어보면 금방이긴하지만) 또한 가독성이 떨어지기 떄문에 Burp Suite에 Hackvertor라는 확장기능이 있습니다 이 Hackvertor라는 기능은 WAF우회/ 필터 우회/ 페이로드 변형 자동화 도구입니다

위 사진과 같이 저는 UNION ... 으로 작성을 하였지만 Hackvertor 기능을 사용하여 인코딩 방식으로 자동 변화하여 기능이 동작하였습니다 적용 방법은 

해당 코드 선택후 우클릭후 hex_entities클릭하면 적용이 됩니다 

 

또한 개인적인 궁금증이었지만 sql 구문을 사용하는데 어째서 UNION을 먼저 써야하는 이유에 대해서 찾아봤습니다 일단 해당 페이지에 버튼으로 인해 선 SQL구문이 있어 UNION구문을 작성하지 않을시에는 

SELECT stock FROM products WHERE productId = '1' AND storeId = 'SELECT username FROM users'

이런식으로 들어가져 sql구문이 동작을 하지 않습니다

따라서 

SELECT stock FROM products WHERE productId = '1' AND storeId = '2'
UNION
SELECT username FROM users

 

UNION을 사용하여 두개에 select 구문이 동작을 할 수 있게 된것입니다 

 

이상입니다

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

web security academy6  (0) 2026.02.11
web security academy5  (0) 2026.02.10
web security academy4  (0) 2026.02.09
web security academy3  (0) 2026.02.06
web security academy2  (0) 2026.02.05