본문 바로가기

SQL Injection39

lord of sql injection 24번 - evil_wizard 23번과 매우 유사한 문제인데 아무래도 필터링만 조금 더 늘어난듯 하다. 그런데 전 문제에서 현재 필터링에 걸릴만한 구문을 쓰지 않았기때문에 그냥 그대로 풀면 될것같다. 전과같은 구문으로 이메일 길이를 찾아본 결과 30의 길이가 나왔다. 전에서 사용하던 코드를 그대로 사용했다. 코드를 실행하니 aasup3r_secure_email@emai1.com 라는 값이 나왔다. 2023. 12. 22.
lord of sql injection 23번 - hell_fire 이번 문제는 order by 구문을 활용하여 풀어야하는 문제다. order 값을 받아서 테이블을 정렬하는데 order by에 if문을 이용해서 참과 거짓을 가려내어서 admin의 이메일 길이를 알아내고 값을 구해야 할것같다. if문을 넣어서 길이를 검증하고 참이면 score를 반환해서 order by score가 되고 거짓이면 id를 반환해서 order by id 구문이 쿼리로 들어가도록 하였다. 이제 이메일 길이값을 찾아야 하는데 길이값에 = 를 주어서 글자수가 맞으면 score, 틀리면 99999 와 같은 숫자를 주어서 에러를 유발해 score가 아닌 기준이 되도록하였다. 그 결과 28 길이로 하였을때 올바르게 정렬되었다. 이제 전에 사용하던 블라인드 sqli 코드를 수정하여 이메일 주소를 찾으면 될.. 2023. 12. 22.
lord of sql injection 22번 - dark_eyes 이번문제도 전 문제와 비슷한 형태입니다. 그런데 이번에는 if문의 사용이 금지되어있네요. if문을 사용하지 않고 error based SQLi를 사용해야 하기 때문에 union select만 이용해서 에러를 도출해야합니다. (select 1 union select (length(pw)>1))--+- 구문을 작성해서 넣으면 length와 비교하는 1 숫자에 따라 에러가 날 경우 에러메시지 없이 그냥 공백 화면이 출력됩니다. 공백 화면이 출력되면 에러라고 볼 수 있습니다. 그러면 이제 패스워드를 찾는 코드를 작성해야하는데 전에 했던 코드에 쿼리문만 살짝 수정하면 됩니다. darkeye.py import requests requests.packages.urllib3.disable_warnings() sess=.. 2023. 12. 22.
lord of sql injection 21번 - iron_golem 이번 문제는 hello guest 처럼 나오는 특수한 에러 메시지가 출력되지 않는다. 위처럼 기존에 하던 방법으로는 메시지가 나오질 않기때문에 비밀번호를 알 수 있는 방법이 없다. 대신 mysqli_error 코드를 보니 오류가 나면 에러 메시지를 출력해주는 것 같다. 이를 이용해서 Error Based SQLI 를 써주어야 한다. 에러를 강제로 일으키기 위해 if 함수를 사용해주었다. if(쿼리,1,2) if 문에서 쿼리가 참이면 1, 거짓이면 2가 실행되는 것은 알것이다. 이를 이용해 length(pw) 길이를 쿼리로 넣고 참이면 1, 거짓이면 select 1 union select 2가 실행되도록 해주었다. select 1 union select 2는 한 row에서 두개를 셀렉트 한다는 것인데 이로.. 2023. 12. 22.