个人简介


网名/ID:天析(tianxi、hex208、sk-sys)

职业:学生(大学在读)

主攻方向:物联网安全、WEB安全

兴趣爱好:乒乓球、羽毛球、排球、业余无线电

博客说明:本博客仅作记录学习生活用途!如果你觉得我写的内容有所帮助的话,不妨在右侧二维码请我喝杯茶(记得添加备注哦~)。

微信扫一扫

支付宝扫一扫

技术宅 单身贵族


联系邮箱:npbsec@aliyun.com | 联系QQ:2200475850

Sql 注入笔记 更新于: 2020 年 05 月 02 日

最近更新时间: 2020/05/02

说明

本笔记会不断更新自己所学到的所有注入手段,但更新时间不定,因博主基础较为薄弱,文章难免可能会有所缺陷,望各位看到的老哥予以指正,万分感谢!

SQL注入成因

发生于在数据于数据库交互的过程中,黑客通过构造 特定的sql语句 来 绕过正常的程序逻辑 从而实现自己的一些不可告人的目的,虽然 SQL注入 在防御方面较为简单,你甚至可以在不修改代码的前提下直接套上一个 创宇盾 之类的草率防御方法,亦或者直接在你的waf上加上一条过滤规则即可防御。但由于其利用起来过于灵活,导致其收录在 OWASP TOP 10 当中,可见其威胁性。

SQL注入手法

SQL注入中,对于过滤绕过将会是一个较为持久的话题,防御者随着攻击者的不同手段的更新,也在不断的更新自己的规则,虽然当前在常规渗透测试当中,作为初学者的我们已经难以找到可以利用的SQL注入,但是在一些大牛的眼中,他们只考虑这个注入对我有没有用,有没有去打组合拳的机会(攻击者所构造的恶意内容一般会经过为WEB容器,代码等层面才会到达数据库,所以大牛们的各种骚姿势时常让我不禁感叹:还能这么操作!)。常见的过滤绕过方法无非是转义,编码之类的,我将会在下方不断更新常用的一些注入或是绕过手法,并予以测试代码用于练习时的佐证。

SQL万能密码大法(1)

该方法现在经常活跃于各大CTF基础题目当中,几乎算是必备知识的一部分了。

问题关键代码片段(PHP,不局限在php当中)

<?php

$usr = $_POST['username'];
$pwd = $_POST['password'];
$sql = "SELECT * FROM user WHERE name = '$usr' AND password = '$pwd'";
mysql_query($sql);

?>

代码分析

分析整个关键代码我们可以发现,用户名和密码两个参数是我们可控的参数,且在该SQL语句执行阶段都没有去做过滤,所以在这个地方,我们可以人为的利用可控参数构造一个SQL注入漏洞,来完成我们一些不可告人的目的。

注入手法

构造恶意代码进行登陆密码绕过

用户帐号输入 admin ,密码处输入 1' or 1=1# ,于是SQL语句变成了:

SELECT * FROM user WHERE name = 'admin' AND password = '1' or 1=1#'

当该条SQL被执行时,后面密码字段的逻辑变成了永真,实现了登陆密码的绕过。

留言

版权所有 © 2020 - tianxi blog's · 无特别注明信息的文章均为博主原创文章,转载请注明来源!

界面:页面基于 Bootstrap 框架进行设计,使用 HUGO 实现全站静态化 !


友情链接: 【青鸟】 【卿枫】 【高能】 【cyzCc】