弱口令爆破
【Ea_login】解题思路:
- 根据提示,发现登录用户名为admin
- 查看网页源代码,发现该题是弱口令爆破
- 使用BurpSuite爆破,得到用户密码为administrator
随便试用户名,报错后会提示用户名为admin,接着随便试密码,报错无提示,用bp抓包
发现password,尝试后发现是错误的
发送到爆破
指定参数访问
【canyouaccess】解题思路:
1.要求从本地访问,就在header部分添加:X-Forwarded-For:127.0.0.12.网页回显“你以为我不知道X-Forwarded-For?',说明服务器存在过滤;
3.将修改原始来源IP的字段都添加进去,绕过过滤,进入下一步;
4.根据响应包修改Referer和User-Agent的内容,就可以获取flag。
打开题,看到请从本地访问问的字眼,抓包-发送到重放器
说明X-Forwarded-For:127.0.0.1不可行,尝试其他语句
send
一句话木马
【chopper】解题思路
1.根据提示,发现网页存在一句话木马2.使用蚁剑连接webshell,获取服务器权限
3.在服务器根目录下存在fag文件。
发现根目录下有flag文件
cookie
打开页面-检查-存储,发现有cookie,再抓包,发现cookie里有f14g,直接访问得到flag
双写绕过
【employeeswork】解题思路
1. 点击“Precoce de Malingre 链接,可以看到后端源代码。
2.后端验证模式是:通过work传参,会将传递进来的字符串中“y1ng_pretty_handsome子串替换为空,再验证替换后的字符串是否为“y1ng pretty handsome3.根据后端验证模式,可以使用双写的方法绕过。
查看源代码,点击里面链接,ctrl+f,搜索到flag
直接访问flag.php,什么也没有,回到题目点击链接
多重验证和data,filter协议
【ezinclude】解题思路
- 可以直接看到后端代码,发现本题是用post方法传参,同时对参数值存在多重验证
- 使用data协议可以绕过验证:abc=data://text/plain;base64,aGVsbG8xMiM=
- 使用filter协议査看flag.php的源代码:file=php://filter/convert,base64-encode/resource=flag.php.
加上&filter协议即可 得到flag
robots协议
网址后加robots.txt
vim隐藏
vim文件特点:当文件打开时,可查找到该文件,关闭时,查找不到。
打开题目,发现是用vim写的
vim文件异常保存会出现swp后缀
访问后得到一个文件,010打开即可得到flag
wtfbutton
flag点不动,检查网页源代码,未发现有用信息
打开检查,定位到flag框,发现disabled,删去,flag可点击,得到flag。
弱类型
=== 在进行比较的时候,会先判断两种字符串的类型是否相等
== 在进行比较的时候,会先将字符串类型转化成相同,再比较
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行,如
<?php
//从不是数字的开始,连同后面的一起舍去
var_dump("admin"==0);//true
var_dump("1admin"==1);//true
var_dump("admin1"=-1);//false
var dump("admin1"==0);//true
var dump("0e123456"=="0e4456789");//true
题目代码如下:
$key为一个字符串,key==$key为若等号,不妨大胆猜测******开头不是数字,若key为数字,则$key要转化为数字0和key相等,即可得出flag
升级版题目,传0错误,说明******是以数字开头的
抓包,暴力破解即可。
哈希MD5绕过
$a != $b
Md5($a)== Md5($b)
变量覆盖问题
用传参的值替掉原有变量的值
PHP extract() 函数
将键值 "Cat"、"Dog" 和 "Horse" 赋值给变量 $a、$b 和 $c:
<?php $a = "Original";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
?>
extract() 函数从数组中将变量导入到当前的符号表。
该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
parse_str()函数
函数用于将字符串解析成多个变量。
void parse_str ( string $str [, array &$arr ] )
它用于将字符串解析为变量,如果 str 是 URL 传递入的查询字符串,则将它解析为变量并设置到当前作用域(如果提供了 arr 则会设置到该数组里 )。
命令执行漏洞
命合执行是一种攻击,其目标是通过易受攻击的应用程序在主机操作系统上执行任意命分。当应用需要调用一些外部程序去处理内容的情况下就会用到一些执行系统命令的函数。如PHP中的system,exec,shellexec等,当用户可以控制命分执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。
命分注入是一种常见的漏洞形态。一旦存在命令注入漏洞,攻击者就可以在目标系统执行任意命令
命令注入攻击常用在向程序传入不安全参数(命令行参数、http头、cookie)
命令执行继承Web Server用户的权限,一般都有权限写文件,写马、查看隐私信息、窃取源码,甚至可以反弹shell,危害十分大。
漏洞位点
程序过滤不严谨,导致用户可以将代码注入并执行。
高危数:eval()、assert()、preg_replace()、call_user_func()等等
对于执行命令的函数,参数过滤不严谨,导致直接命合执行。
高危数:system()、exec()、shell_exec()、passthru()、pctnl_exec()、popen()、proc_open()
注:反引号是shell_exec()的别名