English 中文(简体)
复杂 Mysql 注入
原标题:Complicated mysql injection

我试图证明我的客户对我的客户来说,这个系统对 Mysql 注射没有安全感。 我想得到一些证据,证明给我看一个完整的用户列表(从...中选择 ), 或者在系统中输入一个新的用户/成人, 这样我就可以在系统之后登录。

这是简化我所构建的系统:

PHP 登录网站 :

$user = $_POST["user"];
$pwd = $_POST["pwd"];

$query1 = "INSERT INTO user_log (username, password,ip) VALUES ( $user , $pwd , 127.1.1.1 )";

$result1 = mysql_query($query1) or die("Query failed: "  . mysql_error());

$query2 = "select * from login where name =  $user  and pass =  $pwd  limit 1";

$result2 = mysql_query($query2) or die("Query failed: "  . mysql_error());

这几张桌子是这样的:

CREATE TABLE `user_log` (
  `idadmin` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(45) DEFAULT NULL,
  `password` varchar(45) DEFAULT NULL,
  `ip` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idadmin`)
)

CREATE TABLE `login` (
  `idlogin` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `pass` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idlogin`)
)

我发现很难注射这个 尽管我可以看到它完全不安全。

  1. The first thing I tried was injecting on the INSERT-query, but it was hard to get some decent results out of it other than spamming the user_log table.
  2. I tried to make a query that went through the first query1 and injected at query2 instead. But this was quite complicated because of the quoting.

是否有任何想法或其他方法在这种特定情况下进行注射?

最佳回答

如果客户使用旧版本的PHP, 小于5.4.0版本, 并且有 Mysql_ quotes_ gpc 的版本, 那么这个是安全的 。

如果您可以通过用户输入来运行任何类型的 SQL, 它就是“ 坚固的” INSECURE < / 坚固的 > 和丑陋的! 这与你能否找到能起作用的攻击的确切类型无关, 黑客可以通过许多创造性的方法获得他们想要的东西。

"http://technet.microsoft.com/en-us/library/cc512676.aspx" rel="nofollow" >

如果 Mysql 用户有权限, SQL 注射可以允许攻击者创建文件。 SELECT load_ file (/ etc/ passwd) 进入 OutFILE / some/ path/to/web/root/here.php / some/ path/to/web/root/here.php 。

问题回答

您无需证明您可以查看所有用户记录以证明系统不安全。

如果代码运行在 magic_ quotes_gpc 下,即使现在这样,代码也应该相当安全,尽管 magic_ quotes_gpc 带来了各种其他问题。

如果您没有在 magic_ quotes_gpc 下运行, 您应该能够以用户名 或真名登录 ; - 或真名登录 ; - , 不论提供什么密码 。

忘记 SQL 注入。 系统可以被视为不安全, 仅仅基于它正在登录表格和日志表格中存储非损耗/非分配密码这一事实。

如果有人黑入你的数据库,或发现需要用SQL注入适当的SQL注入来丢弃部分或全部数据,黑客可以访问所有密码,任何用户都可能试图登录网站。

想想安全隐含的含义。 如果您随机浏览到这个网站, 忘记了您使用的密码, 然后尝试了您所有的通用密码变换 , 这个数据库将保留其中的每一个 。

冷静,这样思考代码会让我很寒心





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签