合天网_web模块实验笔记2
burnsuite
放的链接https://www.cnblogs.com/intoxication/p/10853834.html
这个写的特别详细,我觉得可以好好阅读下。
平常也是使用了一些这个工具,现在进行一次更加详细的了解。对不同的板块进行一次总结
第一:compare模块
将你需要对比的两个包放在1,2模块进行比较,可以直观的看到不同的,和相同的模块
第二:repeater模块
也是最经常使用的模块,对包进行修改后进行下一次的重放,进行攻击测试
第三:intruder模块
暴力破解的主要使用的模块,也是我经常使用的模块,一些弱口令都是放里面处理
说一些我觉得我平常用的不是很多的模块:比如呢,你可以直接对你加载的字典进行一次base64加密,这个我用的不是特别多(毕竟老小白了)。在payload processing中添加
开始实验:
依旧是熟悉的告诉用户名,不知道密码型,想这种平常就直接开爆了,但是这个题目,先进行了个compare比较,比较两次不同密码时候的返回包,所以碰到这种情况,确实,我以后也可以学着,先比较下,看下包的返回变化,然后再去做下一步,好来到下一步,直接开爆
好,一样的操作,不多bb了,直接看到length,就知道了,我要的结果是69
you got it
还是burn实验,用到的也是经典的dvma,这里做过,那么就总结下实验内容,就是文件上传的时候,过滤掉了txt,php格式,把上传包截取,然后修改后缀名,这里我的选择是先用reapeater看看,修改后的页面反应,再去修改后缀,进行forward,上传一句话木马上去,使用的过程中呢extend新增了一些知识,之前都没注意
第一:就是action里面可以直接进行选项设置,比如我们可以直接修改请求方式
第二:在option里可以直观的看到你修改的所有设置,多看看自己规定的设置
Wscan (探测网站目录和文件)
首先拿到实验先平台,先随便点一个链接,看看是php,还是asp,好看到url里面的内容是asp
使用Wscan里面的asp.bat,这里不知道为什么,好像c盘找不到了,哎,就在自己电脑上随便搞下算了,emm,去搜索了下Wscan只是其中一个漏洞扫描的软件,还有wwwscan、御剑、dirbuster和cansina,我感觉区别就是在于字典目录的强大与否,说白了,就是对于高危文件名的收集的多少吧。
总结:我感觉可利用文件探知的原理其实很简单,就是使用url和一些敏感文件名进行一次组装,然后进行许多次访问,访问的过程我可以接受他们返回的状态码,200的就筛选出来,然后对这些敏感文件进行访问,看看这些高危的文件里面是否有后台呀,或者你可以利用漏洞信息
这个用python写就比较简单,就和前面的cms差不多吧,但是这个属于io集中型的可以加多线程提高下我们的扫描速度
这里挂个我觉得比较好的参考博客:https://www.cnblogs.com/cnsec/p/12032400.html
Appscan (不仅对网站有探测功能,还可以做一些基础漏洞的分析和扫描)
sql注入:
这里因为之前刷过sqli—labs了,所以很多概念都知道,大体的看下,对我之前没看到的内容做个总结:
1.and 1=1 ,1=2 来判断是否存在注入,是什么原理?
这里的话,其实就是通过语句的注入,判断网页是否将你的语句插入进行执行了,没有对你的语句进行过滤(其实我认为sql注入说白了,就是通过输入字符,判断语句,看是否该网页过滤掉了一些恶意语句或者闭合)
2.mssql注入(这里和mysql不一样,用的是这个表sysobjects)
其实总体的思路和普通的mysql差不多,就是一些语句的变化
1.查询数据的语句 db_name()
2.然后因为没有group_concat不能直接全爆
3.没有limit,想要弄其他字段必须使用name not in
4.遇到重复的表需要加【】,来代表不是系统表,类似进行一次转译吧
payloads: (说实话其实本质差不多,就是一些语句上的变化) 我感觉这个语句真的麻烦,没有limit语句,爆个其他字段真的麻烦,有毒,而且这东西没有group_concat吗,真的麻烦
from sysobjects where xtype='u'
and name not in (select top 1 name from sysobjects where xtype = 'u')
from syscolumns where id = (select id from sysobjects where name= 'user')
and name not in(select top 1 name from syscolumns where id =(select id from sysobjects where name='user'))
3.cookie注入,实际上就是在后端代码使用cookie的值进行调用的时候,忘记了弄filter
导致我们可以直接利用cookie完成语句的执行。
这里注意,因为cookie使用了base64的编码,所以你的payload也需要编码在注入。
4.http头注入
主要是利用http里面的信息头进行注入,可能后端对信息头进行了取值,那么我们就可以去利用它们。主要利用的就三个:UA、X-Forwarded-For和Referer
UA:包含操作系统版本,浏览器版本,用来判别是人还是机器访问
X-Forwarded-For:用来辨别访问者的ip
Referer:包含着来源信息
5.is_numeric过滤
这个说白了,就是通过一个函数,来过滤掉,非数字的值,这种情况我们可以直接使用将构造的payload进行16进制编码来绕过这个限制,所以说在sql注入的时候,最好是将所有的payload转换下,反正也不是很麻烦
6.伪静态
说实话这里有点蒙,之前做过这种,但是没有在意为什么没有加id=,直接在数字上操作,后来去查阅了资料,发现其实所谓的伪静态,就是没有问号的静态网址,其实就是在接受到你的url数字后,做一个映射,加个?id=,那么所谓的绕过伪静态,不就是直接把页面当作动态处理但是不加?id=嘛
7.页面进行了空格,union,select过滤
这个在sqli—labs里面也做过了,其实说简单点,就是空格被过滤了,拿其他的一些%a0这种去替代空格,然后把union,select尝试使用交叉型的大小写,双写的这种形式去绕开过滤
然后就是注释符号被过滤的问题,一般就是直接使用or '1'='1这种形式就可以让我们多余的符号很好的被使用。然后就是单独说下第三种类型,过滤掉了(union 空格 select),使用
union all select 这种形式去绕开
8.过滤or and
最简单的一种途径|| && 来代替 or and
我还记得有一种过滤机制就是通过双写去绕过,oorr,aanndd这样的
9.搜索注入
试了下,感觉其实说实话和普通的sql注入没有本质上的区别,这里的实验应该是为后续的漏洞挖掘给个引子吧,让我们知道搜索框也是可以进行注入的
11.sqlmap的使用
之前在做sql的题目的时候,都没有尝试过用sqlmap,前来学习下sqlmap的使用,毕竟工具的速度肯定比手工注入快的多
使用sqlmap进行post注入,实验用的居然是爆破模块来进行的post注入,我开始还很蒙,还在想为什么用这个来演示,然后是动手试了一下,发现原来真的是有post注入漏洞,这里实验中演示的方法是使用burn保存的文件,进行post注入,不得不说,脚本确实好用
基础命令总结:-r 指定文件读取,可以检测是否存在漏洞 -p 注入点 -D 指定数据库 -T 指定表 -c 指定字段
--dbs 爆破数据库
--tables 爆破表
--columns 爆破列
--dump 将结果导出
sqlmap cookie注入操作
cookie注入命令:sqlmap.py -u 注入点 --cookie=”获取的cookie”
我发现这个实验,你直接用上面的方法也是可以直接做出来的,指定下注入点为id就可以,是个get型的注入
利用sqlmap辅助手工注入
--sql-query + “sql语句 ” 进行sql语句执行爆破 我怎么感觉还是自动搞比较舒服
sqlmap 交互式写shell
第一步呢,通过脚本判断下自己是否是dba,然后通过--os-shell开始写
先选择语言php,然后呢,填写你要上传到的文件路径,传马,你肯定得想办法弄到网站的路径,写好了之后,就可以生成一个网页,进行传马或者执行liunx指令了。
BaseInjection
这里直接提示了,就是说万能密码尝试登录吧,那么我们现在来构造payload
我先使用admin‘#进行尝试,发现失败
使用其他的payload尝试,发现’ or 1=1 可以成功
总结:本题对payload长度进行了限制,所以解题的关键就是用万能密码尝试,
同时留个心眼,以后类似的题目的话,多用不同字段的万能密码尝试,避开payload长度限制
vote5忘记密码了
提示:存在sql注入
第一:先用工具扫扫,看看存不存在什么可利用的危险文件存在
扫面发现,存在备份文件swp,直接下载下来,查看网站的源码
发现存在is_num过滤,那么这里考虑将id转换为16进制绕开过滤,果然可以,然后使用老套路
套出所有的表名,发现flag,直接查就好了。
BaseReconstruction
这个题承接万能密码那个题目,使用之前的payload,发现这次对我的输入进行了检测
前端弹一个提示窗口,说明进行了前端input输入时候的校验,那么我直接抓个包,不就完了
抓完包,直接改成万能密码就好了
http头注入
xss漏洞
总结下分为三种:
反射型xss
存储型xss
DOM型xss
可以拿来干嘛: 1.盗取用户cookie;
2.盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号;
3.控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;
4.盗窃企业重要的具有商业价值的资料;
5.强制发送电子邮件;
6.网站挂马;
实验一的重点在于,教你怎么取出来别人的cookie,先了解基础语句doucument.cookie()取出cookie,然后可以思考下,那这是我拿自己的cookie,我该怎么拿到别人的cookie呢
刚学习xss时觉得啊这,不就是一个弹窗吗,有啥用,经过学习后发现xss的危害还是挺大的,弹窗的目的只是说明这里可以执行动态脚本,那就可以干很多事情了。
首先在这个站点我们有权限的地方,创建一个recv.php,通过这个网页,接受cookie,
然后我们构造一个image标签,这个标签中的src是会被网页直接解析的,所以利用它,我们可以直接的将xss植入进去,然后访问下我们的接受文件,果然cookie被接受到了
那么现在思考下,日常情况下,当我发现了一个xss漏洞的时候,
我又应该怎么样的去盗取cookie呢?
我想到的:
1.首先构造一个链接,然后将你的链接发在评论(典型的存储型xss),记得进行url编码,伪造一下,以免被别人看出来了,然后如果有人点击了你的链接,那么你的信息就会被直接盗走
2.评论里面传送一份image,修改这个image的传送链接,别人点击之后,就会自动的将cookie进行上传,或者简单点,直接发恶意链接给使用这个网站的人,他一点,那么就无了
解决下刚才理解不了的问题,为什么非要在网站的目录下去构造一个接收,我的理解是,cookie是需要传递的,你需要一个php可以通过?接受你的cookie,并且帮你写入一个文件中
实验二:存储型的xss
你输入的payload会被存到数据库中,所以这种情况危害最大,你只用插入一个image src到里面,那么每次加载页面的时候,都会直接解析的src,从而直接做出指定的payload操作
实验三:dom型xss
dom型最大的特点就是,没有和数据库形成直接的交互,只是通过一个事件,去直接的改变也页面上的值,
经过实验一,我理解的一点就是说,其实xss是不局限于<script>标签的,只是说,你插入的语句,它没有经过过滤,让它本身可以作为一个html语句进行执行,导致出现泄露问题。
实施一次跨站脚本攻击:
过程复现:
这个实验完整的复现了一次基础的xss脚本盗取其他用户的cookie的流程
首先这是个留言板系统,使用基本xss payload进行漏洞探知,发现存在存储型的xss
那么赶紧的建立一个自己的站点专门接受到来的cookie,也就是这个实验里面的 index.asp
建造完成之后,直接进行盗取cookie语句的插入,因为是直接存到数据库里的,所以贼恐怖,只要是别人加载了这个页面都会直接的执行你构造的payload,因为你的网站是需要向对端的服务器请求服务的,服务器回显你的评论的过程中,就会直接将你的语句执行了,所以别人的cookie,你就直接拿到了,且通过index.asp
直接的进行了存储,别人的信息你就完全盗取了。
总结:我之前的理解还是浅显了太多,其实简单的思考下,你的数据都已经存到数据库里面去了,那么每次要渲染页面的时候,都必须从数据库中取数据,那么只要有人加载了这个页面
他的页面就会直接执行你构造的payload,那么你的cookie,也就自然的被提取出来了,根本不需要别人点击你的链接
存储型跨站
emm,这个实验就开始将一些有filter的漏洞攻击了
stripslashes() 删除'\'
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。\x00 \n \r \ ' " \x1a
htmlspecialchars() 把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体
Trim() 函数是用来删除字符串的两端空白字符和其他预定义字符
addslashes() 函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签,但允许使用标签。
pre_replace() 替换特定字符串,可以加pcre参数,比如i大小写不敏感
pre_match() 执行正则匹配
htmlentities() 转换所有的html字符,本函数各方面都和 htmlspecialchars() 一样, 除了 htmlentities() 会转换所有具有 HTML 实体的字符
foreach() 简单遍历数组
substring()
low 没啥好说的,没有进行过滤
medium $message stripslashes() mysql_real_escape_string() Trim()
$name 字符替换 mysql_real_escape_string()
那么就从$name下手,将payload放在name里面,将<script>用大写字母穿插发现可以绕过
<script>alert("test")</script>
<img src="#" onerror=alert(/跨站/)></img> 构造src错误,执行onerror=
<iframe/onload=alert(/lzw/)> 构造iframe,建立内连页面,onload=,指定页面加载执行代码
<div style=”width:expression(alert('xsser'))″>xsser</div>
直接看xss进阶吧,刷题刷题
第一关:不需要绕过
第二关:pre_replace 直接用大写
第三关:大小写不敏感,那么script标签用不了呗,那就换标签不就行了
比如这里我直接使用iframe(就是在原来的页面上再加一层页面),通过onload,直接执行alert4
至此进阶一的三道题搞定
第四关:换一个角度,阳光依旧;
匹配sciprt,哦,那我不用带script标签的payload不就可以了
第五关:限制了我的左手,我还有右手呢;
匹配alert,哦,那我不用alert了,我用promt来弹窗,<img src=x onerror=prompt(1);>
第六关:大胆去思考,小心的去求证;
没搞懂方法,但是我用两个<script></script>
这个题嘛,自己尝试了下,先拿最普通的payload试了下,发现自己的构造语句直接就进入src了,好家伙什么都没过滤,那我直接用onerror,构造一个错误src,然后onerror直接执行
这里搞懂了一个问题,就是我之前的理解,那个src都会直接被网页进行加载,实际如果你输入一个 <img src="javascript:alert(/xss/)"> ,在目前的浏览器中是不会弹出的,也就是说现在的
浏览器没那么傻了,反正这个如果用添加的就是个没有图的错误显示,并没弹窗,所以用img,就安安心心用onerror吧
第七关:
本质上就是使用了个htmlentities(),对字符进行转译,但是这个函数如果不加特定参数,是不会对‘ “ 进行直接转译的,所以利用这一点,通过‘,去闭合语句
第八关:
我的方法是直接用>闭合掉前面的语句,然后直接的插入一个<iframe onload>进行执行
老师的方法是使用onsubmit=javascript:alert(1),插入form语句中
第九关:
主要考察location.hash这个用法,#被看作锚点加载位置,也看作一个字符进行传递,所以需要substring 进行截取,所以本题的解法就比较好写了,直接写入一段payload语句就行

浙公网安备 33010602011771号