본문 바로가기 메뉴 바로가기
ABOUT

☁️ Guleum LAB

SQL INJECTION 게임 (18)
프로필사진
🌧:
Guluem
검색하기
  • ALL (112)
    • WEB (29)
    • MOBILE (24)
    • CLOUD (1)
    • CHALLENGE (43)
    • ETC (15)
«   2022/08   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
Tags
  • xss 우회
  • xss 란
  • SQL INJECTION 게임
  • sql injection 문제
  • xss 공격이란
  • xss 공격 예제
  • cross site scripting
  • XSS 게임
  • nopernik XSS
  • xss 테스트
  • sudo.co.il xss
  • los 문제
  • xss 실습
  • rubiya sql injection
  • lord of sql injection
more
[LOS] Dragon 풀이(20)

20 번째 문제인 "Dragon"입니다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 쿼리문을 입력받아 실행하게 해주는 변수는 GET [pw]이며 필터링하고 있는 문자열은 / _ . () 상대적으로 적어서 까다로워 보이지 않습니다. $query = "select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'"; 입력되는 쿼리 문을 보면 id='guest'로 지정되어 있으며 바로 앞에 "#(주석)" 이 있기 때문에 "pw" 값에 입력된 구문들을 모두 무효 처리하고 있습니다. if($result['id'] == 'admin') solve("dragon"); 문제를 해결하기 ..

CHALLENGE
[LOS] Xavis 풀이(19)

엄청 까다로웠던 "xavis" 문제입니다. 처음 봤을 때는 레벨 난이도 치고는 너무 쉬운 문제인 거 같아서 쉬어가는 타임인 줄 알았으나 정답이 전혀 나오지가 않았습니다. 쿼리문을 "참"으로 만들어서 패스워드 길이를 유추하여 12자리인것을 알아내고 한 던데로 burp suite를 통해 값을 하나씩 대입해서 결과를 얻어내려고 ascii 코드를 돌려봤지만 도출된 값은 전혀 없고 과부하가 걸려 도중에 멈추게 되었습니다. 문제 접근 방식부터 출제자의 의도를 모르겠어서 힌트르 보면서 시작했습니다. 힌트 1. 패스워드가 숫자, 알파벳, 특수문자 가 아님 2. ascii 코드로 출력시키지말고 "hex" 형태로 출력시킬것 3. 출력된 "hex" 값을 원문 형태로 decode 할것 Input Code ' or length..

CHALLENGE
[LOS] Nightmare 풀이(18)

18번째 문제인 "nightmare"입니다. if(preg_match('/prob|_|\.|\(\)|#|-/i', $_GET[pw])) exit("No Hack ~_~"); if(strlen($_GET[pw])>6) exit("No Hack ~_~"); "pw" 변수에는 _ . () # - 같은 기호들을 검증하고 있습니다. 또한 GET [pw]>6처럼 입력값 길이를 검증하고 있기 때문에 6글자를 넘어가면 No Hack이라는 페이지로 넘기고 있습니다. 문제 1. 우선 입력값 길이 제한을 맞춰야 하기 때문에 기본적인 "참" 구문인 or 1=1 은 불가능할 것으로 보입니다. 문제를 해결하기 위해선 if($result['id']) solve("nightmare"); 처럼 admin 이 아닌 아무런 계정으로 접근..

CHALLENGE
[LOS] Zombie assassin 풀이(17)

17번째 문제인 "zombie_assassin"입니다. $_GET['id'] = strrev(addslashes($_GET['id'])); $_GET['pw'] = strrev(addslashes($_GET['pw'])); 입력된 값을 받는 변수는 "id"와 "pw"가 있습니다. "addslashes" 함수에 의해 '(싱글 쿼터), "(더블 쿼터), \(역 슬래쉬), null의 입력값에 --> "\"를 추가해줌으로써 단순 "문자열"로 인식하게 만들어주고 있으며 "strrev" 함수가 포함되어 있어 입력받은 문자열을 앞뒤로 바꿔버리고 있습니다/ if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match('/prob|_|..

CHALLENGE
[LOS] Assassin 풀이(15)

15 번째 문제인 "assassin"입니다. 해당 문제의 경우 "$_GET[pw]" 라는 변수에 쿼리문을 입력받아 실행되는 형태를 가지고 있습니다. if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~"); 입력값을 검증하는 부분인 "preg_match" 함수를 보면 싱글쿼터를 검증하고 있는 것을 확인할 수 있습니다. if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("assassin"); 어쎄신 문제를 해결하기 위해선 입력받은 pw의 값이 "admin" 계정이어야 한다는것 같습니다. 상단의 쿼리문을 보면 =(등호) 대신 " like " 구문을 쓰고 있네요 *like는 ..

CHALLENGE
[LOS] Giant 풀이(14)

14번째 문제인 " giant "입니다. if(strlen($_GET[shit])>1) exit("No Hack ~_~"); if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); 이번에는 id 나 pw 변수가 아닌 shit 이라는변수를 사용해야 되며 입력되는 값의 길이는 1보다 길면 " No Hack " 이라는 문구를 띄우고 있습니다. 또한 |\n|\r|\t/ 등 여러 공백 우회 기법을 차단하고 있기에 허용가능한 공백 구문을 찾아야 합니다. $query = "select 1234 from{$_GET[shit]}prob_giant where 1"; if($result[1234]) solve("giant"); 문제를 해결하기위해선 결괏값에 1234 가 출력..

CHALLENGE
[LOS] Bugbear 풀이(13)

13번째 문제인 " bugbear "입니다. bugbear의 경우 검증하는 키워드가 많이 늘어나 우회 구문을 사용해서 쿼리문을 작성해야 됩니다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); 새롭게 검증하는 필터링은 or 구문 대신 사용되었던 " like " 를 검증하고 hex 코드 실행 방지를 위해 "0x"까지 검증하고 있습니다. 또한 " ascii " 코드사용하는것까지 막고 있기에 " ord " 를..

CHALLENGE
이전 1 2 3 다음

  • 글쓰기
  • 관리
  • 태그
Contact guleum.zone@gmail.com

티스토리툴바