[极客大挑战 2019]EasySQL
打开环境看一下
有两个输入框
get传输,这题是一个注入,判断一下是什么类型的
都输1的话,报错如下
1”跟上述一样
但是换成单引号
就报这个错了
这里有一个sql语句的报错提醒
那么就可以比较确定这个是 ‘ ’ 包含的字符型注入了
因为 ‘1’ 是正常的
‘1“’这个是有单引号包含的话双引号就被当成字符串执行了
‘1’’ 这样的话就会在sql语句中产生报错因为多出来了一个单引号
想试一下注入点的,结果直接就出了
同时又试了一下可以不难猜出这句sql代码如下
SELECT*FROM table_name WHERE username=''and password='';
所以在SELECT*FROM table_name WHERE username='1‘ or 1=1%23'and password='';
用另一个’闭合后然后用%23给后面的注释掉执行 or 1=1 这一个恒对的,flag就出来了
这一题还是很基础的
[GDOUCTF 2023]反方向的钟
一个同样经典的php反序列化跟文件包含
源代码如下
<?php
error_reporting(0);
highlight_file(__FILE__);
// flag.php
class teacher{
public $name;
public $rank;
private $salary;
public function __construct($name,$rank,$salary = 10000){
$this->name = $name;
$this->rank = $rank;
$this->salary = $salary;
}
}
class classroom{
public $name;
public $leader;
public function __construct($name,$leader){
$this->name = $name;
$this->leader = $leader;
}
public function hahaha(){
if($this->name != 'one class' or $this->leader->name != 'ing' or $this->leader->rank !='department'){
return False;
}
else{
return True;
}
}
}
class school{
public $department;
public $headmaster;
public function __construct($department,$ceo){
$this->department = $department;
$this->headmaster = $ceo;
}
public function IPO(){
if($this->headmaster == 'ong'){
echo "Pretty Good ! Ctfer!\n";
echo new $_POST['a']($_POST['b']);
}
}
public function __wakeup(){
if($this->department->hahaha()) {
$this->IPO();
}
}
}
if(isset($_GET['d'])){
unserialize(base64_decode($_GET['d']));
}
?>
接下来进行代码审计就好了
用php内置读取文件的函数
SplFileObject 用这个读取文件
配上这个伪协议就好
php://filter/read=convert.base64-encode/resource=
这个在ipo函数上
需要通过_wakeup来触发
里面有个hahaha函数
在类classroom中就有
但是条件里面就会有在leader里的对象,那这不就是
在teacher中就有的
然后思路就清晰了
大概链子如下
school_wakeup.department->classroom_hahaha.leader->teacher->school_ipo
这里进行了base64编码所以如下:
出了
解码
这样的话就出了
Buu二维码
看一下附件
一个压缩包,没什么东西,直接解压看一下这个二维码
看属性是一个好习惯,扫一下看看吧
放010,果然
用binwalk分一下
有着两个文件,一个压缩包
直接破解
直接就出了