본문 바로가기

wargame

[WEBHACKING.kr]16 모든 포스트 목록 16 꽃이 두 개 그려진 것 같은 문제. 소스코드를 확인해보았다. Challenge 16 * 함수를 해석해봐도 어떻게 해야하는지 잘 몰라서 124에 해당하는 값을 눌러 변화를 지켜보기로 하였다. |를 눌러 확인해보니 password가 나왔다. auth에 password를 입력하면 성공. event.keyCode 확인 onkeypress
[WEBHACKING]모든 포스트 목록 WEBHACKING SQL INJECTION str_replace 우회 WEBHACKING.kr register 1 3 4 6 7 10 8 12 14 18 20 22 25 26 27 21 17 24 15 23 LOS GREMLIN COBOLT GOBLIN ORC WOLFMAN DARKELF ORGE TROLL VAMPIRE SKELETON GOLEM DARKNIGHT BUGBEAR GIANT ASSASSIN ZOMBIE ASSASSIN SUCCUBUS NIGHTMARE XAVIS DRAGON IRON GOLEM DARK EYES UMARU SUNINATAS 1 2 3
[WEBHACKING.kr]21 BLIND SQL INJECTION Result : False 내가 입력하는 공간은 no가 들어가는 것을 보아하니 숫자인 no를 이용하여 id와 pw를 찾는 문제 같다. table의 field는 no, id, pw가 있을 것이라고 추측할 수 있다. 0을 입력하면 아무런 결과도 출력되지 않는다. 1과 2를 입력하면 True를 반환한다. 3이상의 값을 입력하면 False를 반환한다. 따라서 no의 값은 1과 2만 존재함을 알 수 있다. table의 record에는 no가 1과 2인 경우만 있다. 앞의 결과로 미루어 짐작컨데 "$result = mysqli_fetch_array($db, 'SELECT * FROM TABLE WHERE no = $_GET['no']')" 대충 이런 식으로 쿼리를 작성한 후 $r..
[WEBHACKING.kr]22 username password HINT echo("hi! $id"); echo("your password is $pw"); if($id=="admin") echo("good! Password is $solution"); join 버튼을 눌러 회원 가입 창을 확인해보았다 소스코드도 확인해보았다 username password 적당히 아무 숫자나 만들어서 회원가입을 한 후 그 값을 입력했다 당연히 문제는 안 풀리지만 어떠한 응답을 얻었다. 밑에 HINT를 보았을 때 "hi! a"가 출력되는 것은 이해가 되나 "your password is b"가 출력되는 대신 user key가 입력되었다. 만약 회원가입하지 않은 id, pw를 넣으면 어떻게 될까 궁금해서 실험해봤다. Wrong!만 출력된다. 위의 id를 ..
[WEBHACKING.kr]27 SQL INJECTION
[WEBHACKING.kr]26 index.phps 우선 16진수/2진수로 바꾸어 대입하였다. 실패1 대소문자를 구별해서 써보았다. 실패2 각각의 16진수를 구해서 char로 형변환하려고 시도했다. 실패3 다시 코드를 살펴보기로 하였다. urldecode는 url 인코딩된 문자열을 디코딩한다고 한다. 그렇다면 이를 이용하여 decode된 값이 admin인 값을 입력하면 될 것 같았다. 한 번 인코딩한 값을 입력하면 디코딩되기 때문에 두 번 인코딩하여 urldecode 함수가 디코딩할 수 있게 했다. 그 결과 성공! +) 의문인 것은 url encoder에 a, b, d와 같은 문자(열)이 들어가면 인코딩되지 않고 그대로 나온다는 점이었다.
[WEB]URL 인코딩, 디코딩 모든 포스트 목록 +) 19.07.12 수정 url은 ASCII문자열을 이용해서만 전달할 수 있는데 alphanumeric character, underscores를 제외하고 URL 내의 모든 문자는 의도치 않게 변형될 수 있으므로 인코딩을 해야한다. 인코딩 해야할 경우 / 하지 말아야 할 경우 Alphanumerics [0-9a-zA-Z], 특수 기호 $-_.+*'(), 과 예약어는 인코딩하지 않는다. 예약어를 예약어 용도로 사용하지 않을 때는 인코딩한다. 아스키 이외의 문자는 인코딩 한다. 안전하지 않은 문자들, space나 # % { } | \ ^ ~ [ ] `는 인코딩한다. 인코딩 방법 인코딩은 해야할 문자들(/, #, =, %, +, ?, & 등)의 ascii 코드 값을16진수로 바꾸고 ..
[WEBHACKING.kr]25 모든 포스트 목록 25 이번 문제는 리눅스 ls -l 명령어를 쓴 것처럼 되어있다. 우선 소스를 살펴보았다. 별 거 없었다. 처음에 text 박스에 입력하는 건가 싶었는데 코드를 살펴보니 전송할 길이 없어서 출력 용임을 깨달았다. URL를 살펴보니 file=hello가 눈에 띄었다. hello.txt 파일 내용이 밑에 text 박스에 출력된 건가 싶었다. 그렇다면 password.php도 실행하여 결과를 text 박스에 출력시키면 문제를 풀 수 있을 것 같았다. 그래서 우선 file에 hello 대신 password.php를 입력했다. 결과는 실패... 생각하다보니 hello 뒤에 확장자가 붙지 않은 게 수상했다. 자동으로 확장자가 붙기 때문에 password.php가 password.php.txt로 인..