6.Darkelf 풀이. 일단 간단히 소스 코드를 분석.if(preg_match('or/|and/i', $_GET[pw])) exit("HeHe"); or,and 연산을 사용 못하게 했다.if($result['id] == 'admin') solve("darkelf"); id=admin이라는 조건만 맞추면 된다.or은 논리 연산자로 || 사용 가능, and는 논리 연산자로 && 사용 가능.즉 guest 부분을 거짓 처리하고 id가 admin인 값이 나오도록 쿼리를 바꾸면 된다.id='guest' and pw ='0' or id = 'admin'인데 or 부분을 우회하기 위해 || 로 한다.즉 ?pw=%27%20||%20id=%27admin.............. Cf) 음....................
# Related site issues/LOS
5.Wolfman 풀이. 간단히 분석.if(preg_match('//i', $_GET[pw])) exit("No whitespace ~_~"); ==> 일단 whitespace는 공백을 사용못하게 한다.if($result['id'] == 'admin')solve("wolfman");id='admin' 조건만 맞으면 문제가 풀린다.space는 아스키 값으로 20(Hex)을 넣어주게 되면 ?pw=%27%20or%20id=%27adminpw='%20or%20id='admin이번 문제는 space bar가 필터링 되어 있다.spacebar는 tap..(%09)..linefeed(%0A)로 우회한다.일단 guest 값은 FALSE로 하고 id='admin'과 pw의 값을 얻어줘야 한다.?pw=%27%20or%20..
4.Orc 풀이. 소스 코드는 id가 admin이고, pw가 사용자가 입력한 값과 일치하는 id를 select하는 쿼리문.실제 DB에 저장되어 있는 admin의 pw와 사용자가 입력한 값이 같아야 한다.즉, 실제 admin의 pw를 알아야 한다. 생소한 함수들이 몇 개 있으니 분석해본다. $_GET[pw] = addslashes($_GET[pw]);addslashes는 DB에 저장이 될 때 특수문자 앞에 \를 넣어준다.$query = "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'";$result = @mysql_fetch_array(mysql_query($query));if(($result['pw']) && ($result['pw'] ==..
3.Goblin 풀이. 첫 화면.만약 select 된 아이디가 있다면 Hello id를 출력하고, 아이디가 admin이라면 문제를 풀 수 있다.일단 guest의 no가 뭔지를 확인하기 위해 숫자를 입력해보겠다.1을 입력했을 때 Hello guest 출력. no => 1 , 0 or 2id => guest, admin 즉 select한 id가 admin일려면 id를 admin으로 하거나 no가 0 or 2가 되면 된다.일단 id=admin을 조건으로 해서 공격을 해본다.admin은 문자열이기 때문에 싱글 쿼터[']로 묶어야 하고, 코드 상에 '와 "에 대해서 필터링이 되서 아래와 같이 출력된다. 일단 No Quotes ~_~ 라고 뜬다. no quotes는 따옴표 없다는 것. 오류.우회하기 위해 아스키 코..
2.Cobolt 풀이. 일단 md5는 어떤 문제를 풀 때 언급한 거 같지만 간단히 소개하겠다.md의 사전적 정의는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. md5기본 개념 세 평문(sorry, you say sorry, you said sorry)은 길이가 다르지만 해시 결과는 32개 문재(16진수)로 길이가 같다,MD5알고리즘은 512비트 단위의 메시지 블록들에 대한 128비트(16바이트)해시값을 생성한다.해시값을 통해 해시되기 전의 값을 추측하는 것이 불가능 하게 하는 해시의 특성덕분에 단어 하나만 틀려도 다른 값이 나온다. 단 다른 데이터를 입력해도 해시 결과값이 같을 수 있는데 이를 충돌(..
1.gremlin 풀이. SQL Injection 문제를 풀 수 있는 Wargame 사이트...=>> https://los.eagle-jump.org/ 첫 화면. $query = "select id from prob_gremlin where id= '{$_GET[id]}' and pw='{$_GET[pw]}'";조건은 $result['id']만 있으면 되서 참만 맞춰주면 된다.pw는 무시하기 위해서 주석 처리한다.필터링은 딱히 없는 거 없고, 싱글 쿼터['] 잘 맞춰주면 될 거 같다. 즉 ?id=0'||1이면 true.cf) 일단 0'||1을 넣게 되면 id='0'||1 형식이 되고, 문자열의 값은 0으로 인식된다.일치하지 않으면 False. 1과 같은 정수는 기본적으로 참의 성질을 가지고 있고, 거짓과..