小编Jas*_*son的帖子

为什么这段代码容易受到缓冲区溢出攻击?

int func(char* str)
{
   char buffer[100];
   unsigned short len = strlen(str);

   if(len >= 100)
   {
        return (-1);
   }

   strncpy(buffer,str,strlen(str));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码容易受到缓冲区溢出攻击,我正在试图找出原因.我认为它与len被宣布为一个short而不是一个int,但我不是很确定.

有任何想法吗?

c security buffer-overflow

148
推荐指数
3
解决办法
2万
查看次数

SQL注入问题

假设Web服务器使用以下PHP代码来处理登录请求:

$username = $_POST[user];
$password = $_POST[pass];
$sql = "SELECT * FROM users WHERE name = '$username' AND password = '$password'";
if(mysql_num_rows($rs) > 0){ //do something
}
Run Code Online (Sandbox Code Playgroud)
  1. 用户名的值将始终导致成功登录?

我认为该值' OR 1=1将始终导致成功登录,因为查询将是:

"SELECT * FROM users WHERE name = '' OR 1=1 AND password = '$password'"
Run Code Online (Sandbox Code Playgroud)

它是否正确?

  1. 假设数据设置为使用GBK中文unicode字符集.在GBK中,字节0x5c编码\0x27编码'.字节0xbf27表示两个字符¿',字节0xbf5c是单个中文字符.如果用户名和密码字段添加斜线',",\,和null,什么用户名总是会导致一个成功登录,假设数据库解释字符串作为GBK但添加斜线处理字符串作为ASCII?

我不确定句子的最后部分是什么意思(通过解释为GBK但处理为ASCII).有人能说清楚如何解决这个问题吗?

php sql sql-injection

7
推荐指数
0
解决办法
384
查看次数

标签 统计

buffer-overflow ×1

c ×1

php ×1

security ×1

sql ×1

sql-injection ×1