Write up (Wargame)
[Lord Of SQL Injection] 25. green_dragon 풀이
분석 이번 문제는 논리적 우회를 해야하는거 같은데.. id, pw 받고 따옴표 막혀있습니다. 그리고 입력 외에 result 된 id, pw에서도 preg_match를 적용합니다. 아무거나 넣어봅시다. 뭔가 이렇게 적으면 따옴표 우회가 될거같은 느낌인데. 여태 따옴표 우회를 hex로 했으니.. 근데 이거 왜 안되징 db에 admin이 없나...??? 그러면 union select로 admin을 어디선가 가져와야 할 텐데요 그냥 추가해도 될거같기도 하고 대충 아무거나 추가해보니까 query2 부분이 나옵니다. 아니 id는 admin이 맞기는 한데 아하 sqli 해서 나온 result를 sqli 해야하는구나 풀이 그럼 이제부터 또 query2 부분을 hex로 sqli 해봅시다. payload = input('..
[Lord Of SQL Injection] 24. evil_wizard 풀이
분석 또 이렇게 생겼고 email을 구해야하네요. proc, union, sleep, benchmark가 막혀있습니다. /i 옵션도 있고요 이것저것 해보면서 든 생각 중 하나는 order by 에러를 이용하자는 것이었습니다. 더보기 뭐야 왜 동작해요 이것도 동작하네 다 동작한다면 정렬 순서를 가지고 참 거짓을 판별할 수 있지 않을까 싶습니다. 그냥 select 1 from member where user_id='admin'; 을 했을 시 admin이 없으면 empty set이지만 if문을 덧씌우면 1 0으로 출력이 가능.. 그러면 이걸 가지고 아니 왜 순서가 안 바뀌지 그냥 if user_id로 써버리면 row마다 비교해서 order by 할 것 같아서 위 처럼 했는데.. 로컬에선 안 되더라도 비슷한 원..
[Lord Of SQL Injection] 23. hell_fire 풀이
분석 이번엔 order을 get 방식으로 받고.. 위에 id, email, score 가 적혀있습니다. union 사용 불가 proc도? order by를 사용해서 order 칼럼으로 정렬하고 열을 받아서 id가 admin이면 이메일을 **************로 설정하고 표대로 출력합니다. 쿼리를 보낼 때 email도 받네요. id가 admin이고 email이 admin 이메일이 맞다면 문제를 풉니다. id에 대해서 정렬하면 이렇게 두 개의 계정이 존재하고 생각해보면 email이 ****.. 인건 result로 받아서 따로 출력할 때만 하는거라 db에 있는 메일은 변하지 않네요. 여기선 email을 알아내는 것이 문제인 것 같습니다. 쿼리가 참이면 표에 데이터가 나타나고.. order by에 관한 sq..
[Lord Of SQL Injection] 22. dark_eyes 풀이
분석 이번 문제도 brute force. prob 등을 막아두고 col, if, case, when, sleep, benchmark 막힙니다. 에러가 발생하면..? exit라고 하는데 어떻게 되는지 봅시다. 아예 비어있는 칸이 뜨네요. if가 막혀있는 이상 union select를 활용해야 할 것 같은데.. union select를 사용해서 우선 length를 구하도록 만들건데 블라인드니까 가지고 있는 sql에서 테스트해봅시다. where에 그냥 from 없이 구성했더니.. 그래서 에러가 뜨나봅니다.? (다른 사람도 이렇게 쓰던데) union select 로 에러를 띄우려면 where 조건을 사용해서 컬럼보다 많은 값을 할당하는 건데 위처럼 union select를 사용하면 where 조건이 거짓이더라도..
[Lord Of SQL Injection] 21. iron_golem 풀이
분석 브루트포싱 문제,, sleep, benchmark 막힙니다. pw만 입력받습니다. 참 거짓을 판별하기 위한 Hello admin 부분이 없습니다. 완전한 블라인드 sql injection 같은.. sleep, benchmark가 막혀서 time_based sql injection은 어려울 것 같고.. 그럼 error based? 보아하니 if(mysqli_error($db)) exit(mysqli_error($db)); 라고 기존에 없던 부분이 있는데 https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php?pw=%27%20or%20pow(2,9999)%23 이렇게 쿼리를 전달해주면 에러가 출력됩니다. 그럼 error b..
[Lord Of SQL Injection] 20. dragon 풀이
분석 이번 문제는 드래곤 pw만 받을 수 있는데.. query 문에서부터 뒤를 주석처리 해버립니다. id가 admin이 되면 풀 수 있는 문제인데.. 주석처리를 어떻게 무효화 시키는지를 찾아야 할 것 같습니다. # 주석의 특징으로는 한 줄 주석이라는건데.. 개행을 넣으면 혹시 다르지 않을까요 https://los.rubiya.kr/chall/dragon_51996aa769df79afbf79eb4d66dbcef6.php?pw=%27%0a%20or%20id=%27admin%27%20%23 안됩니다. 그 이유로 생각되는건 guest 아이디가 먼저 선택되었기 때문.. 그러면 앞 조건을 틀리게 하고 or을 넣으면..? 풀이 https://los.rubiya.kr/chall/dragon_51996aa769df79a..