0X01

0X01

Burp抓包找到hint 访问地址看源码

<?php$info = "";
$req = [];
$flag="xxxxxxxxxx";ini_set("display_error", false);
error_reporting(0); if(!isset($_POST['number'])){header("hint:6c525af4059b4fe7d8c33a.txt");die("have a fun!!");
}foreach([$_POST] as $global_var) { foreach($global_var as $key => $value) { $value = trim($value); is_string($value) && $req[$key] = addslashes($value); }
} function is_palindrome_number($number) { $number = strval($number); $i = 0; $j = strlen($number) - 1; while($i < $j) { if($number[$i] !== $number[$j]) { return false; } $i++; $j--; } return true;
} if(is_numeric($_REQUEST['number'])){$info="sorry, you cann't input a number!";}elseif($req['number']!=strval(intval($req['number']))){$info = "number must be equal to it's integer!! ";  }else{$value1 = intval($req["number"]);$value2 = intval(strrev($req["number"]));  if($value1!=$value2){$info="no, this is not a palindrome number!";}else{if(is_palindrome_number($req["number"])){$info = "nice! {$value1} is a palindrome number!"; }else{$info=$flag;}}}echo $info;

0X02详细的函数解释

ini_set

PHP ini_set() 函数

PHP ini_set用来设置php.ini的值,在函数执行的时候生效,对于虚拟空间来说,很方便,下面为大家介绍下此方法的使用

PHP ini_set用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置,对于虚拟空间来说,很方便。

函数格式:string ini_set(string $varname, string $newvalue)

不是所有的参数都可以配置,可以查看手册中的列表。

常见的设置:

@ ini_set('memory_limit', '64M');

'menory_limit':设定一个脚本所能够申请到的最大内存字节数,这有利于写的不好的脚本消耗服务器上的可用内存。@符号代表不输出错误。

@ini_set('display_errors', 1);

‘display_errors':设置错误信息的类别。

@ini_set('session.auto_start', 0);

‘session.auto_start':是否自动开session处理,设置为1时,程序中不用session_start()来手动开启session也可使用session,

如果参数为0,又没手动开启session,则会报错。

@ini_set('session.cache_expire', 180);

‘session.cache_expire':指定会话页面在客户端cache中的有限期(分钟)缺省下为180分钟。如果设置了session.cache_limiter=nocache时,此处设置无 效。

@ini_set('session.use_cookies', 1);

‘session.use_cookies':是否使用cookie在客户端保存会话ID;

@ini_set('session.use_trans_sid', 0);

‘session.use_trans_sid':是否使用明码在URL中显示SID(会话ID),

默认是禁止的,因为它会给你用户带来安全危险: 
1.用户可能将包含有效的sid的URL通过email/irc/QQ/MSN等途径告诉其他人。 
2.包含有效sid的URL可能会保存在公用电脑上。 
3.用户可能保存带有固定不变的SID的URL在他们的收藏夹或者浏览历史记录里。 基于URL的会话管理总是比基于Cookie的会话管理有更多的风险,所以应当禁用。

上面讲了一大堆 这里主要就是这个意思

这两句是什么意思,谁能详细解释一下,ini_set()函数里面的俩个参数分别代表什么意思
ini_set('display_error',!IS_ENV_PRODUCTION);
ini_set('error_log','log/phperror.txt');
请高手指点

第一个参数是配置文件中的变量名,第二个参数是要赋的值。
比如配置文件中有这么一行:path=‘’
那么ini_set('path', 'c:\windows')的作用就是把这行改成
path='c:\windows'

error_reporting(0)
<?php// 关闭错误报告error_reporting(0);// 报告 runtime 错误error_reporting(E_ERROR | E_WARNING | E_PARSE);// 报告所有错误error_reporting(E_ALL);// 等同 error_reporting(E_ALL);ini_set("error_reporting", E_ALL);// 报告 E_NOTICE 之外的所有错误error_reporting(E_ALL & ~E_NOTICE);
?> 

!isset
isset是判断一个变量是否定义过
即使它没有值,返回值也是true
比如$name="";或var $name;
那么if(isset($name))echo 1;
它也会输出1,因为$name被定义了
但if($name!="")echo 1;或if(!empty($name))echo 1;
它就不会输出1,因为$name虽然被定义了,但它是空的 

header
header(string,replace,http_response_code)
参数     描述
string     必需。规定要发送的报头字符串。
replace
可选。指示该报头是否替换之前的报头,或添加第二个报头。
默认是 true(替换)。false(允许相同类型的多个报头)。
http_response_code     可选。把 HTTP 响应代码强制为指定的值。(PHP 4 以及更高版本可用)

die
die() 函数输出一条消息,并退出当前脚本。
该函数是 exit() 函数的别名。
die(status)
参数     描述
status     必需。规定在退出脚本之前写入的消息或状态号。状态号不会被写入输出。

foreach
foreach (array_expression as $value) 输出 val1 val2 val3

foreach (array_expression as $key => $value)  输出1=>val1;2=>val2;3=>val3;

trim 实例
<?php
$str = "Hello World!";
echo $str . "<br>";
echo trim($str,"Hed!");
?>
llo Worl

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。预定义字符是:单引号(')双引号(")
    反斜杠(\)NULL

转载于:https://www.cnblogs.com/-zhong/p/10950749.html

记一次CTF实验吧的代码审计相关推荐

  1. ctf实验-rot13-加密解密(附flag)

    ctf实验-rot13-加密解密 57R9S980RNOS49973S757PQO9S80Q36P(md5不解密),flag格式为flag{解密内容} 方法一:使用python解码 # author ...

  2. PHP ctf addslashes,[红日安全]代码审计Day13 - 特定场合下addslashes函数的绕过

    本文由红日安全成员: l1nk3r 编写,如有不当,还望斧正. 前言 大家好,我们是红日安全-代码审计小组.最近我们小组正在做一个PHP代码审计的项目,供大家学习交流,我们给这个项目起了一个名字叫 P ...

  3. 记第一次举办CTF比赛

    本次CTF竞赛所使用的平台是Facebook发布的开源CTF平台FBCTF.用户通过浏览器访问FBCTF平台,FBCTF平台支持用户注册.题目装载.积分统计.发布公告等基本功能,配置了优秀的UI和易用 ...

  4. 记ICS的lab2--bomb实验

    (我真的是瞎tm投机取巧解开的bomb,我并不能保证帮上你什么忙,兄弟!) 实验总结: 首先这个实验真的是花了很多很多的时间了,逻辑硬伤,解得很慢.如果不是等到全部解完已经过去一周之后才写报告,我想我 ...

  5. 记一次CTF过程(Writeup)

    前言 在i春秋平台看到几个ctf练习题,就点进去看看吧,能做就做不能做说明水平有限,还要继续加油(革命尚未成功,同志仍需努力)O(∩_∩)O哈哈~ 第一题:Robot 题目名称:Robot 有没有觉得 ...

  6. CTF实验吧-who are you?【基于sleep盲注脚本】

    原题链接: http://ctf5.shiyanbar.com/web/wonderkun/index.php 首先打开链接看到显示your ip is : xxx 首先想到这个题目与ip有关系,即与 ...

  7. CTF实验吧-密码学-疑惑的汉字

    CTF-疑惑的汉字 疑惑的汉字链接:http://www.shiyanbar.com/ctf/1876 题目如下: 现有一段经过加密的密文,内容如下:王夫 井工 夫口 由中人 井中 夫夫 由中大.请找 ...

  8. 【CTF】记一次ctf的RE题《pyre》的writeup

    一开始拿到一个pyc文件,尝试打开却老是闪退. 于是上网搜索pyc,查到要转化成py文件才能打开 http://tools.bugscaner.com/decompyle/ 在上面这个网站反编译后,得 ...

  9. ctf实验平台-成绩单

    题目链接:http://120.24.86.145:8002/chengjidan/ 平台地址:http://123.206.31.85/ 第一步:暴库 id=-1' union select 1,2 ...

最新文章

  1. Git单人本地仓库操作
  2. mysql首次安装后原始密码存放位置
  3. Spark 机器学习中的线性代数库
  4. kindeditor图片批量上传失败问题
  5. 160805、oracle查询:取出每组中的第一条记录
  6. xutil3网络框架
  7. java数据成员_Java基础教程之对象的方法与数据成员
  8. OpenJDK 源码阅读之 Java 字节流输入类的实现
  9. 手游联运系统包括什么功能?
  10. 03 学生免费注册Pycharm专业版
  11. P1719 最大加权矩形(最大连续子段和+矩形二维降一维+前缀和)
  12. Delphi线程同步
  13. 使用SquirrelMail配置Webmail系统,并实现通Macallan Mail Solution邮件服务器的连接
  14. html网页中两侧浮动广告怎么做,JavaScript 网页两侧对联浮动广告
  15. CleanMyMac2022Mac电脑免费好用的清理软件
  16. 物联网感知层数据通信综合创新技术
  17. WebRTC中AECM算法简介
  18. moc_xxxx.cpp 和 xxxx.moc
  19. 2023年2月浙江省中小企业协会与各专委会大事记
  20. nb信号和4g信号_【和你一起聊聊NB-IoT】NB信号强度的那些事

热门文章

  1. shel脚本mysql锁表_centos下shell脚本kill掉mysql锁表进程【笔记】
  2. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式
  3. python【力扣LeetCode算法题库】460- LFU缓存
  4. 【深度学习】基于Pytorch的softmax回归问题辨析和应用(一)
  5. 【Java Web开发指南】redis笔记
  6. 【深度学习笔记】python图像特征提取
  7. 网站推广下吉利关联公司公开“车辆故障预测方法”将在事故发生前预警
  8. 网站推广专员浅析高指数关键词优化网站推广如何推至首页?
  9. 移动端网站页面优化的关键点
  10. 企业网站关键字要学会注重重点优化!