728x90 Web88 Lord of SQL Injection 7단계 (orge) 이번에 처치할 몬스터는 orge! 진짜 점심만 먹으면 너무 졸리다... 코드를 봐보자 이문제를 보면 orc단계에서 했던 Blind SQL Injection형식의 문제인 것이 눈에 보였다. 대신 이번에는 or과 and가 필터링되어있다의 차이? or과 and 필터링은 쉽게 우회할 수 있으므로 이번 문제도 순조롭게 풀 수 있을 거 같다. 아 또한 이번에 알아낼 비밀번호는 admin의 비밀번호이다. 당연히 참인 결과를 넣었을 때 Hello guest가 출력되는 것을 알 수 있다. 이제 비밀번호의 길이를 알아보면 ' || length(pw)=1%23부터 차근차근 넣어보면 길이가 8인걸 알아냈으니 이제 각 자리를 알아볼 차례다. substr() 함수를 이용하여 하다 보면! 굿굿! 다음 몬스터 잡으러 가자~! 2023. 3. 9. Lord of SQL Injection 6단계 (darkelf) 이번에 처치할 몬스터는 darkelf! 코드를 봐보장~ 이제는 이전 문제들과 차이점이 빠르게 보인다. 이번 문제에서는 or과 and가 필터링되어 있는 것을 알 수 있다. 이번 필터링 우회는 엄청 간단한데 우리가 평소 C를 다룰 때 논리연사자로 자주 사용했던 &&(and), ||(or)이 우회방법이다. 우리가 해야 할 것은 or 대신 ||을 사용하면 되므로 ?pw=' || id='admin'을 입력하면 쉽게 풀 수 있다. 처음에는 문제를 보면 어떻게 해야 할지 막막했는데 이제는 혼자 힘으로 푸는 경험도 생기니까 점점 푸는 맛도 있고 뿌듯하다 ㅎㅎ 2023. 3. 9. Lord of SQL Injection 5단계 (wolfman) 이번에 처지할 몬스터는 wolfman! 점심 먹고 하려니 점점 눈이 감긴다... 암튼 이번 코드를 봐보자. 싱글쿼터('), 더블쿼터(") 필터링은 안되어 있고 이번에는 이전과는 다르게 공백(space)이 필터링되어 있는 것을 알 수 있다. 공백이 필터링 되어 생기는 문제는 or 이나 and를 쓸때 양쪽에 공백을 넣어야 하기 때문에 공백이 필터링될 시 우회가 필요하다. 공백에 대한 우회 방법은 1. 개행 문자 \n - 커서를 다음 줄로 이동시키는 개행문자 (url 인코딩 : %0a) 2. TAB \t - 커서를 탭 하나만큼 이동시키는 문자 (url 인코딩 : %09) 3. 캐럿 return \r - 커서를 줄의 맨 왼쪽으로 이동시키는 문자 (url 인코딩 : %0d) 4. 괄호 () - 띄어쓰기 대신 띄어.. 2023. 3. 8. Lord of SQL Injection 4단계 (orc) 이번에 처지할 몬스터는 orc! 일단 코드를 봐보면 전 문제와 다른 게 싱글쿼터('), 더블쿼터(") 필터링이 사라지고 admin 아이디의 pw를 알아내는 문제 같다. 일단 pw 부분을 한번 ' or 1=1 #을 이용해 한번 참으로 만들어 보았다. 그 결과 Hello admin 알림이 나왔다. 이 상황으로 보아 옛날에 DVWA에서 풀었던 Blind SQL Injection 문제가 생각났다. Blind SQL Injection 이란 쿼리의 결과를 참, 거짓으로만 출력되는 페이지에서 시행하는 공격으로 참, 거짓만 출력되므로 이를 이용해 데이터베이스 내용을 추측해야 된다. 방금 확인했던 것처럼 참일 경우 Hello admin이 출력된다. 그러면 pw를 알아내기 위해서 일단 pw의 길이부터 알아내보자. 1부터 .. 2023. 3. 8. Lord of SQL Injection 3단계 (goblin) 이번에 처지할 몬스터는 goblin! 코오드를~ 봐아볼까아~ 이번 문제는 싱글쿼터('), 더블쿼터(")가 필터링된 것을 알 수 있다. id=admin이 되어야 되는데 id값이 guest로 고정되어 있는 것을 알 수 있다. 처음에는 id값을 바꿔보려 시도를 했는데 아무리 해도 바꾸는 법을 찾지 못했다. 생각해 보니 id와 no 값이 and로 연결되어 있으니까 no값이 거짓(False)이 되면 id = guest도 거짓으로 출력될 것이다. no = 2를 넣었는데 Hello guest가 출력 안되는 거 보니 no값이 2는 아닌 것을 알 수 있고 그러면 뒤에 or id='admin'을 넣어 id='admin'부분을 참으로 만들어 주면 되는데 싱글쿼터(')가 필터링되어 있으므로 url인코딩을 이용하여 %27로 시.. 2023. 3. 8. [개념정리] 단방향 암호화 단방향 암호화(One way encryption) 단방향 암호화란 말 그대로 one way 한쪽 길로만 암호화 한다는 의미이다. 실생활에서 일방통행을 생각하면 이해하기 쉽다. 즉 암호화만 가능하고 복호화는 불가능하므로 DB가 공격자에 인해 공격받아 노출되어도 안전하다. 이처럼 보안성이 높고 비밀번호를 관리하는 많은 DB에서 사용된다. 단방향 암호화 종류 지금 가장 많이 사용되고 있는 알고리즘은 SHA-256이다. MD5 MD5는 메세지 축약 알고리즘으로 파일 무결성 검사용도로 많이 쓰인다. 128비트의 해쉬를 제공하며, 암호와와 복호화를 통하여 본안용도로 많이 쓰인다. 하지만 암호하 결함이 발견되어 보안성이 떨어져 SHA와 같은 알고리즘을 사용하는것을 권장한다. SHA-256 SHA-256은 SHA알고리.. 2023. 3. 7. Lord of SQL Injection 2단계 (cobolt) 이번에 처치할 몬스터는 cobolt! 일단.... 1단계 문제와 차이점은 pw부분에 md5()라는 암호화 해시 함수가 있고 조건을 보면 id 가 admin이면 문제가 풀릴 것 같다. 그러면 id에 admin을 넣고 pw부분을 주석 처리하면 암호화도 건너 뛸 수 있는 거 아닌가? 바로? id= admin' %23을 넣어 봤더니 풀렸다... 아마 만든 사람의 의도는 pw가 단방향 암호화 방법으로 되어 있는 것을 보고 주석 처리나 다른 방법을 생각해 보도록 한 것 같다. 단방향 암호화에 대해 더 궁금하신분은 여길 참조 해보길 바란다. https://jh-hack.tistory.com/15 이미 주석을 사용해본 입장으로 쉽게 풀어볼 수 있었다. 다음 몬스터 잡으러 가자~! 2023. 3. 7. Lord of SQL Injection 1단계 (gremlin) Lord of SQL Injection이라는 sql인젝션을 실습해 볼 수 있는 사이트가 있어 실습을 해보았다. 접속을 하니 게임을 시작하는것 처럼 UI가 디자인되어있어 더 흥미 있게 느껴졌다. 간단한 규칙과 "던전 입장" 이라는 단어가 진짜 게임하는 거 같았다. 일단 입장을 누르면 로그인을 해야되는데 간단한 회원가입 후 로그인을 했다. 입장해보니 몬스터 이름으로 된 각각의 스테이지? 들이 있었고 하나하나 풀어가는 것 같다. 오늘 처치할 몬스터는 gremlin이다. 입장해보니 간단한 php문으로 이뤄져 있는 것을 볼 수 있다. preg_match로 문자를 필터링 하고 있지만 싱글쿼터('), 더블쿼터("), 비교연산자 (or) 등이 필터링되어 있지 않아 ' or 1=1을 대입해보니 문제없이 들어갔다. 이러면.. 2023. 3. 7. Webhacking.kr Challenge old-06 문제 풀이 문제 소스코드를 보면 먼저 아이디 guest와 비밀번호 123qwe를 20번 인코딩한 후 숫자들을 특수 문자로 치환하여 그 값들을 쿠키 값에 넣어주고 그 쿠키값들을 다시특수문자를 숫자로 치환하여 디코딩 20번후 출력하였다. 여기서 출력되는 아이디와 비밀번호가 admin과 nimda면 문제가 풀리는것을 알 수 있다. 그러면 일단 admin을 인코딩 20번후 숫자를 특수문자로 치환한 값을 user쿠키값에 넣어주면 된다. https://www.base64encode.org/ Base64 Encode and Decode - Online Encode to Base64 format or decode from it with various advanced options. Our site has an easy to us.. 2022. 11. 19. Webhacking.kr Challenge old-05 문제 풀이 문제에 들어가면 로그인과 회원가입 버튼 2개가 보인다. 로그인을 누르면 login.php로 넘어가 로그인창이 뜨는것을 알 수 있다. 하지만 만들어 놓은 아이디가 없으니 회원가입을 해야 된다. 회원가입 버튼을 누르니 엑세스 거부 알림이 뜨면서 접속되지 않는다. 혹시나 해봐서 login.php를 join.php로 변경하여 접속 해 보았다. 다름없이 엑세스 거부 알림이 나오지만 처음과 달리 대문자가 사라진것을 볼 수있다. 개발자 모드를 실행하여 코드를 확인해보니 문자들을 암호화(?) 해놓은것이 보인다. 우선 가독성을 높이기 위해 https://beautifier.io/ 에 접속하여 코드를 정리 해 보았다. 정리된 코드중 중요한 if문을 해석하기 위해 개발자모드의 console 기능을 사용하면 좋다 . 코드를 .. 2022. 11. 18. 이전 1 ··· 5 6 7 8 9 다음 728x90