본문 바로가기
반응형

WarGames27

Lord of SQL Injection : Nightmare[18] [Level 18. Nightmare] Sol → ?pw=')=0;%00 패스워드가 6을 넘어가면 안 되고 #도 사용할 수 없다. 하지만 #나 -- 대신 %00(null)를 사용할 수 있다. 우선 이것저것 넣어보기 시작했다. pw=')or('1는 길이가 7이라서 안된다. 그래서 일단 MySQL을 켜서 여러 가지 시도를 해보았다. or 대신 한 글자만 쓸 수 있는 연산자를 찾다가 &을 넣어보았다. 근데 ('')&('1')을 넣었더니 login_id 일부가 뜨는 것을 볼 수 있었다. 그래서 select를 사용해서 ('')&('1') 값이 무엇인지 확인해보았다. 왜 각 값을 0으로 인식하는지 궁금해서 select 문을 사용해서 ('')만 따로 출력해보았다. select로 확인해보니 ('')는 아무 값도 출력이.. 2021. 12. 17.
Lord of SQL Injection : Zombie_assassin[17] [Level 17. Zombie_assassin] Sol → ?id="&pw=%231=1 ro 이번 단계도 16단계와 마찬가지로 id에 대한 결과만 있으면 clear 할 수 있는 문제이다. 하지만 addslashes와 strrev라는 문자열 reverse 함수가 사용되었다. id에 hello, pw에 bye를 넣어보면 어떤 역할인지 바로 알 수 있다. 역슬래시(\)를 아스키 코드로 바꿔서 %5C를 넣어보았다. \로 인식됐지만 addslashes 때문에 뒤에 \가 하나 더 붙었다. ' 역시 addslashes 때문에 \'가 되었다가 strrev로 인해 '\로 바뀌어서 들어간 것을 볼 수 있다. 위의 두 경우에서 힌트를 얻을 수 있는데, single quote (') double quote (") backs.. 2021. 12. 16.
Lord of SQL Injection : Succubus[16] [Level 16. Succubus] Sol → ?id=\&pw=or 1=1%23 id와 pw에 값을 넣되, 작은따옴표('), 온점(.), 언더바(_)등을 사용할 수 없는 문제이다. clear 조건이 result ['id']가 존재하는 것이므로 id, pw를 정확히 맞힐 필요 없이 쿼리가 참이되기만 하면 된다. 쿼리를 참으로 만들기 위해 쓸 수 있는 트릭들, union이나 and 1 = 1 등은 모두 기존의 작은따옴표를 닫아주어야 사용이 가능한데, 작은따옴표를 사용하지 않고 어떻게 작은따옴표를 닫아줄 수 있을까? 우리가 트릭을 사용할 수 있는 인자가 2개라는 점, 그러니까 pw값 뿐만 아니라 id 값도 조작할 수 있다는데서 힌트를 얻어 작은따옴표를 만들어줄 수 있다. 바로 id=''의 두 번째 따옴표를 .. 2021. 12. 14.
Lord of SQL Injection : Assassin[15] [Level 15. Assassin] Sol → ?pw=902% like는 특정 문자열이 들어간 행을 찾을 때 사용된다. 예를 들어, 우편번호를 정확히 모르더라도, 6이 들어간 것을 안다면 '6%'으로 표현하여 찾을 수 있다. 물론 6이 뒤에 들어갔다면 %6, 어딘지 모르지만 들어있다면 %6%으로 찾을 수 있다. 이를 이용해서 우선 %를 먼저 넣어보았다. 원래는 %를 넣으면 모든 쿼리가 출력되는데, Hello guest만 출력되는 것을 보니 guest의 아이디가 제일 위에 있어서 guest 하나만 가져오는 것 같다. %a% %b% %c%와 %0% %1% %2% 등 알파벳을 몇 개 넣어보았는데, 특정 단어에서 계속 guest만 떴다. guest의 pw에는 들어있지 않지만 admin의 pw에는 들어있는 문자.. 2021. 12. 13.
Lord of SQL Injection : Giant[14] [Level 14. Giant] Sol → ?shit=%0B 이번 문제는 from과 prob_giant가 붙어있어서 파라미터로 공백을 넣어주어야 한다. 그런데 \n, \r, \t가 모두 필터링되어있다. 공백 대신 넣을 수 있는 후보들을 살펴보자. ① HT (Horizontal Tab) → %09 ② LF (Line Feed) → %0A ③ VT (Vertical Tab) → %0B ④ SP (Space) → %20 ⑤ + → %2B 필터링은 통과하지만, 이 문제에서는 유효하지 않은 기호이다. ⑥ 주석 → /**/ 길이가 1보다 크기 때문에 사용할 수 없다. 2021. 12. 8.
Lord of SQL Injection : Bugbear[13] [Level 13. Bugbear] Sol → ?pw=52dc3991 13단계는 12단계와 같지만, or / and / like / spacebar 등 필터링되는 문자가 훨씬 많다. 그래서 우리는 다음 문제들을 해결해야 한다. Q1) 작은따옴표(')와 등호(=)와 like를 사용할 수 없는데 id = 'admin' 또는 id like char(97, 100, 109, 105, 110))을 어떻게 쓸까? Q2) ascii와 or을 사용할 수 없는데 ascii(substring(pw, n, 1)) > m 또는 ord(substring(pw, n, 1)) > m를 어떻게 쓸까? 그 외의 문제들은 or 대신 ||, and 대신 &&(%26%26), substring 대신 mid, 스페이스바 대신 엔터(%0A)를.. 2021. 12. 5.