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注入的时候,不是所有页 ...
随机推荐
- Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)
任务:在CENT6.8系统中安装Apache(版本为:httpd-2.4.41) 前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc 理论步骤: 1.检测gcc软件包,如果不存在则进行安装 ...
- 设计模式(五)Singleton模式
Singleton模式就是确保只生成一个实例的模式.这里有两个意思,即想确保任何情况下都绝对只有一个实例和想在程序上表现出“只存在一个实例”. 下面通过一个实例来说明这种设计模式. package B ...
- Handler的postDelayed(Runnable, long)
handler.postDelayed(myRunnable,1000)是为了轮播图片,每隔1000ms后执行一次run方法,实现轮播实例如下: public void MesageColse(){ ...
- django-URL之include函数(五)
三种格式:(1)incude(module,namespace=None) from django.urls import path,include from book import urls url ...
- 设计模式C++描述----08.原型(Prototype)模式
一. 概述 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 换句话说,就是不用重新初始化对象,而是动态地获得对象运行时的状态. 再说明白点,就是要一个拷贝过构造函数类似功能的接 ...
- Python网络爬虫之cookie处理、验证码识别、代理ip、基于线程池的数据爬去
本文概要 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 引入 有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时, ...
- NPOI 导出 excel 性能测试
NPOI 导出 excel 性能测试 Intro 网上看到很多人说 NPOI 的性能不行,自己写了一个 NPOI 的扩展库,于是想尝试看看 NPOI 的性能究竟怎么样,道听途说始终不如自己动手一试. ...
- PyCharm的几个使用技巧
PyCharm是个十分强大的Python编辑器,笔者在日常的工作中学到了很多该IDE的使用技巧,有的是从别人那里学到的,有的是自己学习的.笔者深感自己的开发能力不足,因此希望能够将这些使用技巧记录 ...
- 关于 Java 中多线程的面试问题 详解
多线程细节: 1. 面试题: sleep 方法 和 wait 方法异同点是什么? 相同点: 可以让线程 处于 冻结状态. 不同点: 1. sleep 必须指定时间 wait 可以指定时间, 也可以不指 ...
- Go 程序的性能监控与分析 pprof
你有没有考虑过,你的goroutines是如何被go的runtime系统调度的?是否尝试理解过为什么在程序中增加了并发,但并没有给它带来更好的性能?go执行跟踪程序可以帮助回答这些疑问,还有其他和其有 ...