Over the Wire 30

[OvertheWire : natas] level 14 → 15

user가 존재하는지 검색하는 창같다. natas16을 검색해봤는데 다음과 같이 떴다. ... /* CREATE TABLE `users` ( `username` varchar(64) DEFAULT NULL, `password` varchar(64) DEFAULT NULL ); */ if(array_key_exists("username", $_REQUEST)) { $link = mysql_connect('localhost', 'natas15', ''); mysql_select_db('natas15', $link); $query = "SELECT * from users where username=\"".$_REQUEST["username"]."\""; if(array_key_exists("debug", $_..

Over the Wire/natas 2021.05.29

[OvertheWire:natas] natas 11 → 12

JPEG 파일을 업로드하라고 한다. max size도 지정이 되어있다. 아무 txt파일이나 올려봤는데 jpg파일로 올라갔다고 한다. 소스코드부터 보자. ... function genRandomString() { $length = 10; $characters = "0123456789abcdefghijklmnopqrstuvwxyz"; $string = ""; for ($p = 0; $p < $length; $p++) { $string .= $characters[mt_rand(0, strlen($characters)-1)]; } return $string; } function makeRandomPath($dir, $ext) { do { $path = $dir."/".genRandomString().".".$e..

Over the Wire/natas 2021.05.23

[OvertheWire:natas] natas 10 → 11

쿠키값이 XOR 암호화로 보호되어 있다고 한다. 소스코드 확인 natas11 결과값 : qw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jq(gJq 뒤에가 왜 이상하게 나왔는지 모르겠다. 키는 반복되는 qw8J이다. showpassword값을 yes로 바꾼후 xor연산을 할 것이다. 쿠키값은 다음과 같다. ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK 쿠키값을 적용시키니 다음 비밀번호를 획득할 수 있었다. EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3

Over the Wire/natas 2021.05.18

[OvertheWire:natas] level 9 → 10

저번과 비슷한 화면이 나왔다. 어떤 글자를 필터링하는 것 같다. 소스코드 확인 natas10 For security reasons, we now filter on certain characters Find words containing: Output: View sourcecode if문을 보니 ; | & 을 필터링한다. 저번처럼 풀 수는 없겠다. 근데 모든 특수문자를 필터링 하는 게 아니라서 필터링 하지 않는 특수문자로 풀 수도 있을 것 같다. 저번 문제를 풀다가 .를 입력하면 모든 단어가 나온다는 것을 알았는데, 다음과 같이 입력하니 비밀번호를 획득할 수 있었다. . /etc/natas_webpass/natas11 U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK 더보기 저번문제처럼 명령어에 ..

Over the Wire/natas 2021.05.16

[natas] level 8 → 9

이번에도 인풋창이 있다. hello를 입력한 결과 입력한 글자를 포함한 단어를 알려주는 거였다. a를 입력하면 사전처럼 단어가 줄줄 나온다. 소스코드를 보자. natas9 Find words containing: Output: View sourcecode array_key_exists(string|int $key, array $array) : bool 배열 내에 키 또는 인덱스가 존재하는지 확인하는 함수 key : value to check array : an array with keys to check passthru 외부 프로그램을 실행하는 함수 system()이나 exec()같은 함수이다. 우선 natas의 모든 password는 /etc/natas_webpass/natas(번호)에 있다는 사실을 ..

Over the Wire/natas 2021.05.09

[natas] level 7 → 8

입력창이 있다. 소스코드를 확인해보았다. natas8 Input secret: View sourcecode 일단 secret값을 찾으면 되는 것 같은데 base64인코딩이 되어있나보다. encodedSecret이 인코딩 된 값일테니 디코딩을 하면 될 것 같다. $encodedSecret = "3d3d516343746d4d6d6c315669563362"; bin2hex 2진수를 16진수로 변환하는 함수다. bin2hex(number, [places]) number는 변환하려는 2진수, 10비트를 초과할 수 없다. places는 사용할 자릿수이다. 반환 값의 앞부분을 0으로 채울 수 있다. 생략하면 필요한 최소 자릿수가 사용된다. 그 외 정보는 위의 링크에서 얻을 수 있다. strrev 문자열을 뒤집는 함수..

Over the Wire/natas 2021.05.09