Web/Lord of Sql injection

iron_golem 문제 풀이

Namchun 2023. 9. 15. 23:53

코드 분석

쿼리를 실행하였을 때 에러가 발생하면 exit(mysqli_error($db)); 를 통해 에러를 출력해준다.

또한 pw의 값을 정확히 알아내어야 문제를 풀 수 있게끔 되어있다.

공격 기법

mysql에서는 if문을 사용하여서 조건이 참이 되었을 때, 다음 쿼리를 실행하는 구문이 존재한다.

해당 특징을 통해 비밀번호의 길이에 대한 조건문이 참이 되었을 때, 에러가 발생하는 쿼리를 실행하도록 주입하여보자.

 

' or if(length(pw) < 100, (select 1 union select 2), 0) %23

(%23 -> '#')

 

조건이 참이되어 "Subquery returns more than 1 row"라는 에러가 발생하였다.

 

1부터 증가시키며 pw의 길이가 32라는 것을 알아내었고, 해당 pw의 값을 한 바이트씩 알아내는 코드를 작성할 수 있었다.

 

'Web > Lord of Sql injection' 카테고리의 다른 글

dragon 문제 풀이  (0) 2023.09.14
xavis 문제 풀이  (3) 2023.09.13
nightmare 문제 풀이  (0) 2023.09.12
zombie_assasin 문제 풀이  (0) 2023.09.11
succubus 문제 풀이  (0) 2023.09.10