bWAPP——20201121
Session Mgmt. - Cookies (HTTPOnly)
low:
Cookies中httponly字段设置为false
点击 Click Here ,本地JS脚本可以直接访问到top_security这个变量值

Medium:
Cookies中httponly字段设置为true
点击Click Here,本地JS脚本无法访问top_security变量值了
通过服务器端是可以直接访问的

high:
Cookies中httponly字段设置为ture,同时缩短了cookies的生存时间
与中级难度的区别在于,调整了Cookie的生存时间,仅有300秒(5分钟)

Session Mgmt. - Cookies (Secure)
基于安全的考虑,需要给cookie加上Secure和HttpOnly属性,HttpOnly比较好理解,设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie打出cookie的内容。
Secure属性是说如果一个cookie被设置了Secure=true,那么这个cookie只能用https协议发送给服务器,用http协议是不发送的。换句话说,cookie是在https的情况下创建的,而且他的Secure=true,那么之后你一直用https访问其他的页面(比如登录之后点击其他子页面),cookie会被发送到服务器,你无需重新登录就可以跳转到其他页面。但是如果这是你把url改成http协议访问其他页面,你就需要重新登录了,因为这个cookie不能在http协议中发送。
low:
Session Mgmt. - Session ID in URL
三个难度都一样,sessionID暴露在url中,抓包可看

Session Mgmt. - Strong Sessions
本题主要是通过观察top_security_nossl和top_security_ssl的情况,来了解Session的安全存储
low:
没有安全性

medium:
top_security_nossl经过了Hash处理

high:
在非SSL情况下,看不到top_security_ssl的值
改用HTTPS后,可以观察到top_security_nossl值
XSS - Reflected (GET)
function xss($data)
{
switch($_COOKIE["security_level"])
{
case "0" :
$data = no_check($data);
break;
case "1" :
$data = xss_check_4($data);
break;
case "2" :
$data = xss_check_3($data);
break;
default :
$data = no_check($data);
break;
}
low/medium:
没有进行过滤,可以直接进行xss
function xss_check_4($data)
{
// addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.
// These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).
// Do NOT use this for XSS or HTML validations!!!
return addslashes($data);
}
high:
对符号进行了严格的过滤
function xss_check_3($data, $encoding = "UTF-8")
{
// htmlspecialchars - converts special characters to HTML entities
// '&' (ampersand) becomes '&'
// '"' (double quote) becomes '"' when ENT_NOQUOTES is not set
// "'" (single quote) becomes ''' (or ') only when ENT_QUOTES is set
// '<' (less than) becomes '<'
// '>' (greater than) becomes '>'
return htmlspecialchars($data, ENT_QUOTES, $encoding);
}
XSS - Reflected (POST)
同上一题
XSS - Reflected (JSON)
<script>
var JSONResponseString = '<?php echo $string ?>';
// var JSONResponse = eval ("(" + JSONResponseString + ")");
var JSONResponse = JSON.parse(JSONResponseString);
document.getElementById("result").innerHTML=JSONResponse.movies[0].response;
</script>
low:
可使用闭合json语句的方法,输入"}]}';alert(1);,成功显示。

medium/high:
if($_COOKIE["security_level"] != "1" && $_COOKIE["security_level"] != "2")
{
// Retrieves the movie title
$title = $_GET["title"];
}
else
{
$title = xss_check_3($_GET["title"]);
}
输入的必须是已有电影名,不是的话就去执行xss_check_3,xss_check_3对符号进行了严格过滤
XSS - Reflected (AJAX/JSON)
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
low/medium:
使用常用语句 ,会出现重复(鬼畜)弹窗。


XSS - Reflected (AJAX/XML)
low/medium:
据说使用HTML转义字符或特殊实体可实现,如 <img src=x onerror=alert(1)>,

XSS - Reflected (Back Button)
Click the button to go to back to the previous page:
<input type=button value="Go back" onClick="document.location.href='<?php echo isset($_SERVER["HTTP_REFERER"]) ? xss($_SERVER["HTTP_REFERER"]) : ""?>'">
low:
根据代码知——可改变onClick的值,用burp将Referer请求头修改为 ">


medium:
源码中使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。
high:
源码中使用了htmlspecialchars()函数来进行过滤
XSS - Reflected (Custom Header)
foreach(getallheaders() as $name => $value)
{
if($name == "bWAPP")
{
echo "<i>" . xss($value) ."</i>";
}
}
low:
本题需要在HTTP的头部加入'bWAPP字段即可 Palyload: bWAPP: ,不过试了好几次都没成功,加了referer也没弹窗

medium:
源码中使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。
high:
源码中使用了htmlspecialchars()函数来进行过滤
XSS - Reflected (Eval)
low:
将data()函数改为alert()函数即可

medium:
源码中使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。
high:
源码中使用了htmlspecialchars()函数来进行过滤
<?php
if(isset($_GET["date"]))
{
if($_COOKIE["security_level"] == "2")
{
if($_GET["date"] != "Date()")
{
echo "<p><font color=\"red\">Invalid input detected!</font></p>";
}
else
{
?>

浙公网安备 33010602011771号