-
|Lord of SQL_injection| #18 NightmareWargame Site/SQL injection 2019. 2. 15. 23:30
얼른 Nightmare 를 클리어하고 금일 하루종일 배웠던
내용들을 정리해봐야겠다.
18번째 문제인 nightmare 이다. 우선 pw 의 최대 길이가 6 이라는 점으로 미루어보았을 때, pw 파라미터 하나만을 가지고 조건절을 True 로 만들면 된다는 것을 깨달았다. 우선은 괄호가 있기 때문에 ''(작은따옴표)' 과 ')' 이라는 문자는 꼭 들어가야 한다는 점을 catch 했다. 하지만 그 뒤로 어떻게 해결해야할지 막막했다.
막막할 땐 Googling 이지 ~
그 결과 MySQL 에서 '모든 스트링'=0 은 True 를 반환한다는 사실을 알아냈다.
출처 : https://makandracards.com/makandra/6457-in-mysql-a-zero-number-equals-any-string
(2019.05.20) 위와 같은 접근 방식이 틀렸음을 수정합니다.
모든 스트링 = 0 이 아닙니다.
숫자로 시작하는 스트링의 경우는 0 이 아니기 때문입니다.
위 문제의 경우 id=('')=0 를 만들어 주었는데 진행 방식은 id=('') 를 먼저 처리하고 =0 을 나중에 처리하게 됩니다.
id = '' 즉, 아이디가 비어있는 것이 있다면 True, 없다면 False 를 배출할텐데요.
이 경우에는 False 인 걸로 예상됩니다. 그래서 =0 을 했을 때 Clear 가 되는 것입니다. 정확한 개념을 잡으시기 바랍니다.
위 내용은 'SQL injection 바로 잡기' 코너에 올려 놓았습니다.
그 뒤의 문장들은 주석처리를 하면 된다. 늘 써오던 %23 이 Filtering 되서 다른 방법인 ;%00을 사용했다.
그리하여 완성된 문장!
pw=('')=0;%00 and id!='admin
짜잔!!
Nightmare Clear ~!!
'Wargame Site > SQL injection' 카테고리의 다른 글
|Lord of SQL_injection| #20 Dragon (0) 2019.02.20 |Lord of SQL_injection| #19 Xavis (0) 2019.02.20 |Lord of SQL_injection| #17 Succubus (0) 2019.02.14 |Lord of SQL_injection| #16 Zombie_assassin (0) 2019.02.14 |Lord of SQL_injection| #15 Assassin (0) 2019.02.13 댓글