본문 바로가기

wargame/WEBHACKING.kr

[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로 인..
[WEBHACKING.kr]18 SQL INJECTION #이 텍스트 상자의 name은 no RESULT
[WEBHACKING.kr]20 time limit : 2 nickname comment code
[WEBHACKING.kr]14 모든 포스트 목록 14 짜잔 확-인. 어려운 내용 없이다 자바스크립트였다 어렵지 않게 해석하고 ul이 510임을 구했다.. 근데 input_pwd_value라는 것을 처음봐서 내가 모르는 뭔가가 있구나 싶어서 검색했더니 webhacking 14번 문제를 푼 사람들의 해석밖에 없었다. 그래서 마음을 놓고 다시 살펴보았다. 변수 이름에 input이 들어가고 문제에 검색창밖에 없으니 ul의 값을 입력하면 값을 알 수 있을 것 같아서 입력하였다. if문의 안의 문장에서 예측할 수 있듯이 510의 제곱값이 답이었다. 값을 chanllange-auth에 입력하였다.