mysql溢出漏洞_Natas27 Writeup(mysql溢出截断漏洞)

Natas27:

ae933a57417c7cb6e076a470b65bd49a.png

一个登录节界面,查看源码。

4b4eb46ff942a5ecd3e3732d4fa82494d3f.jpg

e9e1b7139ed6d972ddde13f0ed25fd27237.jpg

natas27

// morla / 10111

// database gets cleared every 5 min

/*

CREATE TABLE `users` (

`username` varchar(64) DEFAULT NULL,

`password` varchar(64) DEFAULT NULL //这是重点,用户名和密码均不超过64个字节

);

*/

function checkCredentials($link,$usr,$pass){

//转义用户名和密码中的特殊字符,防止sql注入

$user=mysql_real_escape_string($usr);

$password=mysql_real_escape_string($pass);

$query = "SELECT username from users where username='$user' and password='$password' ";

$res = mysql_query($query, $link);

if(mysql_num_rows($res) > 0){ //若查询出来的数组大于0,则验证用户名/密码成功

return True;

}

return False;

}

function validUser($link,$usr){

$user=mysql_real_escape_string($usr);

$query = "SELECT * from users where username='$user'";

$res = mysql_query($query, $link);

if($res) {

if(mysql_num_rows($res) > 0) {

return True;

}

}

return False;

}

function dumpData($link,$usr){

$user=mysql_real_escape_string($usr);

$query = "SELECT * from users where username='$user'";

$res = mysql_query($query, $link);

if($res) {

if(mysql_num_rows($res) > 0) {

while ($row = mysql_fetch_assoc($res)) { //mysqli_fetch_assoc() 函数从结果集中取得一行作为关联数组。

// thanks to Gobo for reporting this bug!

//return print_r($row);

return print_r($row,true);

}

}

}

return False;

}

function createUser($link, $usr, $pass){

$user=mysql_real_escape_string($usr);

$password=mysql_real_escape_string($pass);

$query = "INSERT INTO users (username,password) values ('$user','$password')";

$res = mysql_query($query, $link);

if(mysql_affected_rows() > 0){ //mysqli_affected_rows() 函数返回前一次 MySQL 操作所影响的记录行数

return True;

}

return False;

}

//逻辑:查询username是否存在

if(array_key_exists("username", $_REQUEST) and array_key_exists("password", $_REQUEST)) {

$link = mysql_connect('localhost', 'natas27', '');

mysql_select_db('natas27', $link); //mysql_select_db() 函数设置活动的 MySQL 数据库。

if(validUser($link,$_REQUEST["username"])) {

//user exists, check creds

if(checkCredentials($link,$_REQUEST["username"],$_REQUEST["password"])){

echo "Welcome " . htmlentities($_REQUEST["username"]) . "!
"; //htmlentities() 函数把字符转换为 HTML 实体。

echo "Here is your data:
";

$data=dumpData($link,$_REQUEST["username"]);

print htmlentities($data);

}

else{

echo "Wrong password for user: " . htmlentities($_REQUEST["username"]) . "
";

}

}

else {

//user doesn't exist

if(createUser($link,$_REQUEST["username"],$_REQUEST["password"])){

echo "User " . htmlentities($_REQUEST["username"]) . " was created!";

}

}

mysql_close($link);

} else {?>

Username:
Password:

}?>

View sourcecode

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值