2019-9-10:渗透测试,基础学习,sql注入笔记
sql注入
1,万能密码,自己写的网站,找到登录窗口,必须和数据库交互,往里插入构造的恶意代码,最后可以直接登录进去,不需要账号和密码,输入的恶意代码成为万能密码,后端拼接的sql语句,SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';
用户登录的地方没有处理,可以输入用户名 admin' or 1=1#,使用’单引号闭合
注释符号:# -- %25 %2d%2d --+
在输入:admin' and1=1#
admin' or 1=1 limit 0,1#
加单引号需要根据后端数据类型,如果是字符串类型就需要加,整型就不需要
构成语句 select * from 'users' where user = '$user' or '1'='1' and password = '$pass';
万能密码出现原因
前端传递的参数可以随意控制,后端,后端代码执行过程中将用户输入的数据也当做代码执行了,违背了代码和数据分离原则
利用的思路是由于后端对前端传递的数据没有过滤,或者过滤不严谨,导致万能密码sql注入
危害,会造成数据泄漏,被拖库,篡改网站,破坏数据库,植入后门getshell
sql注入分类
请求方式,get post cookie
参数形式,整型,字符型,搜索
反馈类型,报错,union,延时,布尔(时间、页面显示状态)
数据库类型,access ,mssql,mysql,oracle,nosql等
利用技术,布尔,报错,内敛,堆叠,时间,联合
手工注入
常用数据库函数以及常量
ascii()
user()
version()
database()
concat()
group_concat()
concat_ws()
substr(s,start,leng),字符串截取函数都有三个参数,截取字符串,开始索引位置,截取长度
substring(s,start,leng) mysql,mssql常用
mid() mysql常用
left(s,n),从左边开始截取,s是截取字符串,n是要截取的长度
right(s,n),从右边开始截取,s是截取的字符串,n是要截取的长度
if(条件,条件为真返回值,不为真的返回)函数有三个参数,第一个是条件,第二个是条件为真的返回值或语句,第三个是条件不为真的返回值或语句,例如 if(1=1,"true","false")
CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
lenght()计算字符串长度
@@tmpdir
@@datader
@@basedir
@@version
@@hostname
联合查询,可以用做信息收集
selece * from users where id=1 union select 1,2,3
查询语句是前边语句没有的值,就会显示联合查询后的语句的值
mysql数据库中的,一库一表三字段
mysql大于5.0,information_schema库,系统库汇总,其他数据库的库名,表名,字段名
columns表,储存数据库名表名字段名
关注columns表下的字段
table_schema ,其他数据库的库名
table_name,其他数据库的表名
column_name,其他数据库的字段名
手工注入
1,检测注入点(可能存在sql注入的地方),找到类似id(id/uid/typeid/sid/key)的参数,后面需要插入一些检测的恶意代码
’单引号
“双引号
' and 1=1--
0' or '1'='1
需不需要引号,是由后台拼接的sql语句决定的,输入的恶意pyload被成功执行(根据页面和报错信息来确定),说明此处有sql注入点,
接下来需要判断注入方式,报错,布尔,堆叠等,主要根据页面回显结果,来确定使用哪种注入方式,比如 sleep()基于时间,判断从后台数据库中选择的列数以及哪几列显示
2,收集后台数据库信息,使用union等确定注入之后结果返回的位置,将会显示到前端的所在列的位置修改成先要看的信息,比如database() ,user(),colume
3,获取当前数据库的表名,如 , SELECT DISTINCT GROUP_CONCAT(DISTINCT table_name) FROM information_schema.COLUMNS where table_schema='jdycms'
4,获取当前数据库下的指定表下的字段名, 如 SELECT DISTINCT GROUP_CONCAT(DISTINCT column_name) FROM information_schema.COLUMNS where table_schema=database() and table_name='jdy_admin'
5,获取值,select concat(username,0x7e,password) from jdy_admin
6,解密,pmd5,cmd5,chamd5,somd5
7,找后台登录,猜目录,信息收集,目录扫描
cms内容管理系统
cms名词,版本,漏洞,漏洞利用
社工密码字典生成工具
pydictor,强大的密码生成器
cupper,针对国人的社工密码生成器
wordhound,基于推特搜索,pdf文档,reddit子网站创建密码字典
brutescrape,读取站点页面内容,分析页面,分析结果导出密码字典
易优密码生成器
在线生成
2019-9-10:渗透测试,基础学习,sql注入笔记的更多相关文章
- Web渗透测试入门之SQL注入(上篇)
题记: 本来今天想把白天刷的攻防世界Web进阶的做个总结,结果估计服务器抽疯环境老报错,然后想了下今天用到了SQL注入,文件上传等等,写写心得.相信很多朋友都一直想学好渗透,然后看到各种入门视频,入门 ...
- 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级
[web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...
- web安全学习(sql注入1)
web安全学习(sql注入1) 一.简介 sql语句就是数据库语句,而sql注入就是用户将自己构造的恶意sql语句提交,然后服务器执行提交的危险语句.sql注入可能造成信息泄露以及服务器被控制等危害. ...
- 零基础到精通Web渗透测试的学习路线
小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...
- 通过sqli-labs学习sql注入——基础挑战之less1
环境准备: Phpstudy (PHP+Apache+Mysql) Sql-lab 首先了解下基础知识: URL编码: 因为在浏览器中,当我们访问一个网址的时候,浏览器会自动将用户输入的网址进行UR ...
- 通过sqli-labs学习sql注入——基础挑战之less1-3
首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!! url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加 ...
- WEB渗透测试基础工具
代理查询网站:hidemyass(隐藏我的屁股) HTTrack:HTTrack是一个免费和易用的离线浏览工具(浏览器),它可以允许你下载整个WWW网站至本地目录,并且通过遍历网站目录获取HTML,图 ...
- WebGoat学习——SQL注入(SQL Injection)
SQL注入(SQL Injection) 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.攻击者通过web请求提交带有影响正 ...
- 学习SQL注入---1
开始接触SQL注入了,最开始根据网上的思路做了两道注入的题,但对于SQL注入如何实现,怎么一个流程还是不理解.后来,在网上查找了很多资料,现在一点点去理解. 1.利用sqlmap注入的时候,不是所有页 ...
随机推荐
- CasperJS 前端功能测试
CasperJS 是一个开源的导航脚本和测试组件.它提供实用的高级函数.方法和语法糖,可完成以下任务: 对浏览导航步骤的定义和排序 填写和提交表单 点击和跟踪链接 获取页面快照(或者页面中的某部分) ...
- PHP限制上传文件大小
在php.ini中修改如下变量,如要限制为100M upload_max_filesize = 100M post_max_size = 100M 重启Apache
- Docker安装ElasticSearch 以及使用LogStash实现索引库和数据库同步
1:下载 ElasticSearch 镜像 docker pull docker.io/elasticsearch:5.6.8 2:创建 ElasticSearch 容器: 注意:5.0默认分配jvm ...
- 学习笔记31_ORM框架ModelFirst设计数据库
ModelFirst就是先设计实体数据类型,然后根据设计的数据类型,生成数据库表 1.新建项--ADO.NET实体数据模型--空数据模型--进入模型设计器(点击xxx.edmx文件也能进入设计器). ...
- CSPS_108
二逼出题人写错T1题面&&写伪T3std祭
- JavaScript中继承的实现方法--详解
最近看<JavaScript王者归来>中关于实现继承的方法,做了一些小总结: JavaScript中要实现继承,其实就是实现三层含义:1.子类的实例可以共享父类的方法:2.子类可以覆盖父类 ...
- Spring MVC-------文件上传,单文件,多文件,文件下载
Spring MVC 框架的文件上传是基于 commons-fileupload 组件的文件上传,只不过 Spring MVC 框架在原有文件上传组件上做了进一步封装,简化了文件上传的代码实现,取消了 ...
- 1、第一个TensorFlow程序
import tensorflow as tf import os os.environ[' #去掉警告,将警告级别提升 a = tf.constant(2) #定义一个常量 b = tf.const ...
- 最新JetBrainsPyCharm自动部署Python(Django,tornado等)项目至远程服务器
每次开发Python项目时,对于所有Python开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP ...
- Linux 常用命令 | top 详解
top 命令实时显示进程的状态.(自己也会占用资源,类似window的任务管理器),由以下几部分组成 默认状态显示的是cpu密集型的进程,并且每5秒钟更新一次. (1) 系统状态 当前时间.系统已运行 ...