본문 바로가기

Wargame/Lord of SQL injection

Lord of SQL injection 01, 02

Lord of SQL injection

https://los.rubiya.kr/ 

 

Lord of SQLInjection

 

los.rubiya.kr

 

해당 사이트에서 실습을 진행한다.

 

 

초록색 [enter to the dungeon] 누르고

 

 

가입 후 로그인하면 끝!

 

이제 이 사이트에서 뭘 해야하냐면...

 

id admin / pw password 로 로그인 시 wrong 문구가 출력되고

id guest / pw guest 로 로그인 시 hello guest 가 출력되는데

이는 admin 계정의 암호는 dict 형태로 16진수 난수 형태로 생성되기 때문이다.

 

파이썬 코드에는

db.execute(finsert into users(userid, userpassword) values ("guest", "guest"), ("admin", "{binascii.hexlify(os.urandom(16)).decode("utf8")}");')

라는 부분이 있는데

여기서 binascii.hexlify 는 binary 데이터 16진수 표현법이다.

 

res=query_db(f'select * from users where userid="{userid}" and userpassword="{userpassword}")

쿼리문을 확인해보면 user 테이블에서 로그인할 때 아이디와 패스워드가 필요하다는 내용이다.

 

그런데 패스워드가 없이도 로그인할 수 있어야 하기 때문에,

아이디가 admin 이기만 하면 로그인이 되도록

아이디 부분 이후를 모두 주석 처리할 것이다!

 

admin" 쿼리문 이후를 주석 처리하면 아무 패스워드나 입력해도 로그인이 될 것이다.

 

SQL 주석 처리 방법은 -- 이다.

웹 주석 처리 방법은 %27%23 이다. ( '#' 을 의미한다)

 

php?id=swing

이런 식으로 아이디를 웹 주소창에서 보내면

query : select id from prob_gremlin where id='swing' and pw=''

쿼리문에 id 로 들어간 것을 바로 확인할 수 있다.

 

문제를 풀어보자.

 

1번, 2번

 

그냥 주소창에 php 뒤에

?id=admin%27%23

치면 된다.

 

 

'Wargame > Lord of SQL injection' 카테고리의 다른 글

Lord of SQL injection 07  (0) 2022.11.12
Lord of SQL injection 04  (0) 2022.11.12
Lord of SQL injection 03  (0) 2022.11.12