본문 바로가기
반응형

WarGames27

Lord of SQL Injection : Darknight[12] [Level 12. Darknight] Sol → ?pw=0b70ea1f 작은따옴표('), 등호(=), substr와 ascii를 사용하지 못하는데 admin의 pw를 정확히 맞추어야 한다. 그래서 우리는 다음 3가지 문제를 해결해야 한다. Q1) 작은따옴표(')와 등호(=)를 사용할 수 없는데 id = 'admin'을 어떻게 쓸까? Q2) substr를 사용할 수 없는데 substring(pw, n, 1)을 어떻게 쓸까? Q3) ascii를 사용할 수 없는데 ascii(substring(pw, n, 1)) > m을 어떻게 쓸까? A1) like와 char를 사용해서 작은따옴표 없이 비교하자. 아스키코드로 a ~ z는 97 ~ 122에 해당한다. 따라서 char(97)은 a에 해당한다. char(97) .. 2021. 12. 4.
Lord of SQL Injection : Skeleton[10] ~ Golem[11] [Level 10. Skeleton] Sol → ?pw=' or id = 'admin' %23 id가 admin이어야 단계를 Clear 할 수 있다. where 절은 and 조건으로 이어져있는데 하나가 이미 거짓이다. 그래서 참을 만들어주기 위해 or로 id = 'admin'을 넣고 #으로 뒤에 거짓 조건은 무시하게 만들었다. 쉽게 Clear 할 수 있었다. [Level 11. Golem] Sol → ?pw=77d6290b id admin의 패스워드를 맞추어야 하는데, or / and / substr(Blind SQL)을 모두 사용하지 못한다. 근데 이 문제도 7, 8단계와 마찬가지로 or는 ||, and는 &&, substring은 SUBSTRING를 사용해서 자동화 툴을 돌려주었다. 그런데 이 문제에.. 2021. 12. 1.
Lord of SQL Injection : Troll[8] ~ Vampire[9] [Level 8. Troll] Sol → ?id=ADMIN admin을 치면 안 되지만 id가 admin 이어야 한다. 처음에는 admin을 16진법이나 Base64로 변환해서 입력해봤는데, clear 되지 않았다. 그러다가 MySQL은 대소문자를 구분하지 않으니 ADMIN으로 입력해보았다. 읭? Clear 되었다. [Level 9. Vampire] Sol → ?id=adadminmin 9단계 문제는 사용자의 입력값에서 admin을 없애는 작업이 들어가 있다. 하지만 id가 admin 이어야 한다. 그래서 id를 adadminmin으로 입력해서 admin이 없어져도 admin이 남도록 (adadminmin ← 이렇게) 손을 써주었다. 8단계와 9단계 모두 블랙리스트 기반 필터링을 우회하는 대표적인 방법에.. 2021. 11. 29.
Lord of SQL Injection : Orge[7] [Level 7. Orge] Sol → ?pw=7b751aec 7단계는 4단계와 6단계를 섞은 문제이다. 6단계와 마찬가지로 or/and를 사용하지 못하고, 4단계와 마찬가지로 id가 admin인 pw를 맞춰야 하기 때문에 Blind SQL를 사용해야 한다. 6단계에서 or를 ||로 표현했기 때문에, and는 &&으로 표현해줬는데, url에서는 &를 아스키코드로 변환한 %26로 넣어줘야 and로 인식이 됐다. ?pw=' || id = 'admin' %26%26 length(pw) > 5 %23를 넣어 pw의 길이 추론을 시작하였다. 길이를 점점 늘리다가 8이 되는 순간 Hello admin이 표시되지 않았고, ?pw=' || id = 'admin' %26%26 length(pw) = 8 %23을 넣어 확.. 2021. 11. 24.
Lord of SQL Injection : Darkelf[6] [Level 6. Darkelf] Sol → ?pw=' || id = 'admin' %23 코드를 분석해보면, admin으로 로그인하면 clear가 가능한데 pw값에 or나 and가 포함되면 안 된다. 즉, pw의 인자로 or/and 없이 id = 'admin'을 넣어주어야 한다. 처음에는 ?pw=' %6F%72 id = 'admin' %23로, or 대신 아스키코드로 %6F %72를 넣었는데 이것도 or로 인식되었다. 그래서 가장 대표적인 or인 ||를 넣어보았다. 5단계도 그렇고 6단계도 그렇고 그 문자 자체를 안 쓰고 다른 방법을 사용하는 것을 요구하는 것 같다. 2021. 11. 23.
Lord of SQL Injection : Wolfman[5] [Level 5. Wolfman] Sol → ?pw='%0Aor%0Aid='admin'%23 코드를 분석해보면, admin으로 로그인하면 clear가 가능한데 pw값에 Space bar가 포함되면 안 된다. 즉, pw의 인자로 스페이스바 없이 id = 'admin'을 넣어주어야 한다. 스페이스바만 사용할 수 있다면, /?pw=' or id = 'admin' #으로 쉽게 통과할 수 있는 문제여서 스페이스바를 대체할 방법을 이것저것 찾아보았다. 처음에는 스페이스바 대신 %20을 넣어주었는데, 이것도 스페이스바로 잡혀버렸다. 그래서 이번에는 엔터를 넣어보았다. 엔터의 16진법을 찾는 게 어려웠는데, 아스키코드표에서 Line feed에 해당하는 LF가 엔터였다. 그래서 스페이스바 %20 대신 %0A를 넣어주었다. 2021. 11. 22.