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注入笔记的更多相关文章

  1. Web渗透测试入门之SQL注入(上篇)

    题记: 本来今天想把白天刷的攻防世界Web进阶的做个总结,结果估计服务器抽疯环境老报错,然后想了下今天用到了SQL注入,文件上传等等,写写心得.相信很多朋友都一直想学好渗透,然后看到各种入门视频,入门 ...

  2. 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级

    [web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...

  3. web安全学习(sql注入1)

    web安全学习(sql注入1) 一.简介 sql语句就是数据库语句,而sql注入就是用户将自己构造的恶意sql语句提交,然后服务器执行提交的危险语句.sql注入可能造成信息泄露以及服务器被控制等危害. ...

  4. 零基础到精通Web渗透测试的学习路线

    小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...

  5. 通过sqli-labs学习sql注入——基础挑战之less1

    环境准备: Phpstudy  (PHP+Apache+Mysql) Sql-lab 首先了解下基础知识: URL编码: 因为在浏览器中,当我们访问一个网址的时候,浏览器会自动将用户输入的网址进行UR ...

  6. 通过sqli-labs学习sql注入——基础挑战之less1-3

    首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!! url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加 ...

  7. WEB渗透测试基础工具

    代理查询网站:hidemyass(隐藏我的屁股) HTTrack:HTTrack是一个免费和易用的离线浏览工具(浏览器),它可以允许你下载整个WWW网站至本地目录,并且通过遍历网站目录获取HTML,图 ...

  8. WebGoat学习——SQL注入(SQL Injection)

    SQL注入(SQL Injection) 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.攻击者通过web请求提交带有影响正 ...

  9. 学习SQL注入---1

    开始接触SQL注入了,最开始根据网上的思路做了两道注入的题,但对于SQL注入如何实现,怎么一个流程还是不理解.后来,在网上查找了很多资料,现在一点点去理解. 1.利用sqlmap注入的时候,不是所有页 ...

随机推荐

  1. OptimalSolution(1)--递归和动态规划(4)其他问题

    一.汉诺塔问题(包括chapter 1中的汉诺塔问题) 二. 三. 四. 五. 六. 七. 八.

  2. LeetCode刷题笔记(3)Java位运算符与使用按位异或(进制之间的转换)

    1.问题描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 算法应该具有线性时间复杂度并且不使用额外空间. 输入: [4,1,2,1,2] 输 ...

  3. Unity常用协程功能封装

    # 1.前言unity开发过程中,经常用到一些特定的协程功能,比如延时触发.等待触发.重复操作等.unity自带Invoke以及InvokeRepeating方法,但这些方法均采用反射机制,性能消耗, ...

  4. Python3爬虫(2)_利用urllib.urlopen发送数据获得反馈信息

    一.urlopen的url参数 Agent url不仅可以是一个字符串,例如:https://baike.baidu.com/.url也可以是一个Request对象,这就需要我们先定义一个Reques ...

  5. Java 导出数据库表信息生成Word文档

    一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...

  6. 洛谷P2858 【[USACO06FEB]奶牛零食Treats for the Cows】

    我们可以记录头和尾再加一个卖了的零食数目,如果头超过尾就return 0. 如果遇到需要重复使用的数,(也就是不为零的d数组)就直接return d[tuo][wei]. 如果没有,就取卖头一个与最后 ...

  7. LNMP下zabbix_server安装部署二

    上一篇中搭建完成了zabbix的web端,但是虚拟机有点问题,所以转到笔记本上来写笔记本环境 server:192.168.112.9 agent:192.168.112.8 ​ 上一篇中完成了web ...

  8. 最新JetBrains PyCharm 使用教程--常用快捷键和设置PyCharm为Eclipse快捷键(四)

    PyCharm常用快捷键使用 Ctrl + D:复制当前行 Ctrl + Y:删除当前行 Ctrl + Z 撤销 Shift + Enter:快速换行 Ctrl + /:快速注释 Ctrl + F: ...

  9. PHP关于access_token失效问题

    PHP关于access_token失效问题 有时候PHP设置了缓存 明明就是没有过期 但却提示失效这情况一般就是1 多个appid和secrete 生成的access_token互相覆盖了 所以 这种 ...

  10. python while指令

    while指令 1.它后面可以带一个 Ture 表示一直是真的,这样程序会在while循环里无限进行下去 eg: while Ture: print("打印这个...") 2.它后 ...