flag.php

2019-01-29  本文已影响9人  萍水间人

写在前面

好吧我承认我是看了别人的wp,目前还很菜


然而我看了wp也不会做。

初探

页面

进去之后是一个什么都点不动的页面。。

然后有提示 hint
联系到可能是SQL注入

于是在URL后面加一个hint参数
http://123.206.87.240:8002/flagphp/?hint=1

得到一串代码:

<?php 
error_reporting(0); 
include_once("flag.php"); 
$cookie = $_COOKIE['ISecer']; 
if(isset($_GET['hint'])){ 
    show_source(__FILE__); 
} 
elseif (unserialize($cookie) === "$KEY") 
{    
    echo "$flag"; 
} 
else { 
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Login</title> 
<link rel="stylesheet" href="admin.css" type="text/css"> 
</head> 
<body> 
<br> 
<div class="container" align="center"> 
  <form method="POST" action="#"> 
    <p><input name="user" type="text" placeholder="Username"></p> 
    <p><input name="password" type="password" placeholder="Password"></p> 
    <p><input value="Login" type="button"/></p> 
  </form> 
</div> 
</body> 
</html> 

<?php 
} 
$KEY='ISecer:www.isecer.com'; 
?>

分析代码

第一句话把报错信息都关掉了
然后包含了一个文件flag.php(这不正好是题目的名字?)
然后设置cookie
额。。
然后如果GET得到了hint, 就会把文件的代码都展示出来

否则如果$cookie反序列化后得到的结果等于字符串"$KEY",就会显示flag!

补充:

目前为止这个题目还没做出来。
主要是对cookie和serialize这两个不熟悉

cookie

目前看到一篇 cookie详解

到底什么是cookie,怎样才会产生cookie, cookie的作用自不必言。
产生cookie有几种方式:
server端 的response中包含cookie设置

脚本方式种植cookie, 主要就是用javascript里的document.cookie对象来实现

通过在URL栏输入 javascript:alert(document.cookie)
可以查看这个页面的cookie

当然cookie还有很多 属性, 比如为了安全而设置的http only属性, cookie的生存周期等。

serialize

serialize() 函数用于序列化对象或数组,并返回一个字符串。
serialize() 函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。

如果想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()

语法如下:
string serialize ( mixed $value )
将其看作一种变化或许可以

上一篇 下一篇

猜你喜欢

热点阅读