专栏首页网络攻防实战知识交流Web安全(三)所有人都能看得懂的sql注入教程

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

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

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

今天和大家分享的内容是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

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

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

本文分享自微信公众号 - 无级安全(wujisec),作者:fz只不过是从头再来

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Web渗透(二) 环境搭建

    今天收获很多,体检,逛街,吹牛,算是对自己的职业生涯有了一个新的认识,不管怎么样,技术是要做下去的,不管多晚,不管多累,希望刚入门的师傅们能够喜欢,与其说是教程...

    用户5878089
  • 用python连接冰蝎的代码实现

    时代在发展,大家用后门的姿势也在不断的变化,从菜刀,到蚁剑,再到如今的冰蝎,这也是攻防相互作用的结果,今天头发奇想,如何用python来实现流量的加密。然后就研...

    用户5878089
  • PostgreSQL 高权限命令执行漏洞(CVE-2019-9193)复现

    PostgreSQL,俗称Postgres,是世界上最受欢迎的数据库系统之一。它是Mac OSX系统的主力数据库,同时也有Linux和Windows版本。

    用户5878089
  • 2018-11-27 在CentOs 7上安装 nodejs

    参照 https://github.com/nodesource/distributions/blob/master/README.md

    Albert陈凯
  • MySQL锁表的快速定位和恢复

    查看db当前在执行的任务,可以发现已经堆积了很多update,引起死锁的query一般就在第一个update/insert之前,一般是一个read or cre...

    haowentang
  • Android注解框架butterknife基本用法

    现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率

    SmileNicky
  • 2020年1月Github上最热门的开源项目

    https://github.com/trimstray/the-book-of-secret-knowledge Star 29869

    程序员小强
  • 码农技术炒股之路——抓取日线数据、计算均线和除权数据

            日线数据是股票每日收盘后的信息。这块数据不用实时抓取,所以并不占用宝贵的交易时间的资源。于是我们抓取完数据后直接往切片后的数据库中保存。(转载请...

    方亮
  • php获取所有节点的父节点和子节点

    梦_之_旅
  • 在生产环境使用 Docker

    本文是对官方文档的总结与备注。 官方文档:https://docs.docker.com/engine/userguide/ 配置 Docker 手动启动 Do...

    康怀帅

扫码关注云+社区

领取腾讯云代金券