前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web安全(三)所有人都能看得懂的sql注入教程

Web安全(三)所有人都能看得懂的sql注入教程

作者头像
用户5878089
发布2019-07-25 15:51:06
8660
发布2019-07-25 15:51:06
举报
文章被收录于专栏:网络攻防实战知识交流

公号已经连续更好几天了,猛然发现了打赏的功能,今天特地来试试,最难的就是坚持,目前人气不足,无极君也不会做运营,开办公众号的初心就是交流技术,不是为了赚取多少粉丝,获得多少个赞,哪怕只剩下一个人,交流继续。

写稿子占据了大部分的时间,但我还是想说,本公号的定位是技术,欢迎喜欢技术的师傅交流批评。大家应该也发现了,吐槽占据了大部分的内容,在圈里和大家一起吹吹牛挺好的,也希望把这件事能做好。让信息安全爱好者的入门人员能够少一点迷茫,抛砖引玉,早日向大牛的位置靠近。

今天和大家分享的内容是SQL注入,那我们先来进入一个情况,假设你不懂SQL注入(废话,我当然不懂了,不然过来听你瞎bb啥),假设你不懂web开发,假设你不懂数据库(卧槽,我特么是傻X么)。

首先,了解一点简单的数据库表的操作语句,这里,还是以MySQL为例。

mysql表内容操作表内容操作无非就是增删改查,主要是查

1、增

insert into 表 (列名,列名...) values (值,值,...)

insert into 表 (列名,列名...) values (值,值,...),(值,值,值...)

insert into 表 (列名,列名...) select (列名,列名...) from 表

例:insert into tab1(name,email) values('fz','fz@163.com')

2、删

delete from 表 # 删除表里全部数据

delete from 表 where id=1 and name='fz' # 删除ID =1 和name='fz' 那一行数据

3、改

update 表 set name = 'fz' where id>1

4、查

select * from 表

select * from 表 where id > 1

select nid,name,gender as xb from 表 where id >1

查这部分有如下的条件

a、条件判断where

b、通配符like

c、限制limit

d、排序asc,desc

e、分组group by

然后,了解一下PHP的简单开发。

PHP的基本语法

https://m.runoob.com/php/

PHP链接数据库的三种方式

1.常用普通方法

$mysql_server="localhost"; $mysql_username="数据库用户名”;

$mysql_password="数据库密码"; $mysql_database="数据库名"; //建立数据库链接 $conn = mysql_connect($mysql_server,$mysql_username,$mysql_password) or die("数据库链接错误"); //选择某个数据库 mysql_select_db($mysql_database,$conn); mysql_query("set names 'utf8'"); //执行MySQL语句

$result=mysql_query("SELECT id,name FROM 数据库表"); //提取数据 $row=mysql_fetch_row($result);

在提取数据的时候,我们使用mysql_fetch_row,还可以使用mysql_fetch_assoc和mysql_fetch_array,可以参考手册。

2.面向对象方法

$db=new mysqli($dbhost,$username,$userpass,$dbdatabase);

if(mysqli_connect_error())

{ echo 'Could not connect to database.'; exit; }

$result=$db->query("SELECT id,name FROM user");

$row=$result->fetch_row();

3.PDO方法

$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';'

$dbh=new PDO($dsn,$username,$userpass); $stmt=$dbh->query('SELECT id,name FROM user where id =$id');

$row=$stmt->fetch();

以上是常用的3种PHP连接MYSQL数据库的方法,大家要看好数据库查询的方式,后面有用。

把网站运行起来之后,我们就开始学SQL注入了

那啥是SQL注入,还是借大佬们的话来说,一切的输入都是有害的,顾名思义,SQL注入漏洞就是在输入到SQL语句的参数没有经过过滤导致攻击者可以通过构造非正常的输入,得到预期的输出,说的有点绕,简单来说,就是网站被攻击者执行了不正常的SQL语句,这就是原理。

既然输入不正常,我们来看看怎么个不正常法,一般网站url是这么写的

www.fz.com/index.php?id=1

那数据库执行的就是这么个命令了

SELECT name,pass FROM user where id = 1

结果就把pass和name 给打印出来了。

可是如果网站的URL是这么个玩意儿,

www.fz.com/index.php?id=-1 union select 1,user()

那数据库查询的就是这

SELECT name,pass FROM user where id = -1 union select 1,user()

就把1和user()打印出来了。

union是啥自己百度去

user()是啥自己百度去

这就是一次简单的SQL注入攻击。

关于SQL注入的其他姿势,我们会慢慢的讲,这里介绍两本书

SQL注入攻击实战

https://pan.baidu.com/s/1xv8Joyh4rFcO4R03B0j5Hw 密码:3kzp

习科SQL注入攻击

https://pan.baidu.com/s/1U2pqCTm4ACKZyUTI54xFlg 密码:ps36

关于SQL注入靶场,有一个比较经典的,可以了解一下,后期出教程。

https://github.com/Audi-1/sqli-labs

关于SQL注入,无人不知,无人补晓的神器,明小子,阿D呃呃 不对 拿错了

SQLmap 这是地址

https://github.com/sqlmapproject/sqlmap

这是使用简介

http://www.freebuf.com/articles/web/29942.html

一下做个说明,这篇文章是针对啥也不会的初学者设计的,几个简单的命令和语法,就想打遍全场,不存在的。

想学MySQL 看文档

https://dev.mysql.com/doc/

想学PHP 看文档

http://php.net/

想学SQLmap 看文档

https://github.com/sqlmapproject/sqlmap/wiki/Usage

基础打的牢,渗透起来才会得心应手,以上抛砖引玉工作结束,无极君开始拔草了,哦,对了,朋友圈里看到一位大佬说过一句话,共勉。

如果你怕麻烦,那每天就多学点,多会点,今天累了,明天就轻松了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无级安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档