反序列化刷题

  金牌会员 | 2023-3-13 05:38:06 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 870|帖子 870|积分 2610

web259

 
  1. flag.php
  2. <?php
  3. $xff = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
  4. array_pop($xff);
  5. $ip = array_pop($xff);
  6. if($ip!=='127.0.0.1'){
  7.     die('error');
  8. }else{
  9.     $token = $_POST['token'];
  10.     if($token=='ctfshow'){
  11.         file_put_contents('flag.txt',$flag);
  12.     }
  13. }
复制代码
 

 
 
 
可以看到我们对于SOAPction进行了注入,但是仅仅依靠这一处,没有办法伪造整一个POST请求,因为Content-Type是xml形式的,并且后面的传输内容也都是xml形式的,一般情况下POST传递参数的格式都是表单形式的(application/x-www-form-urlencoded),因此我们还要想办法构造一个完整的POST请求。
所以我们可以试试可不可以控制user-agent:
  1. [/code]再进行监听:
  2.  
  3.  
  4. [img]https://img2023.cnblogs.com/blog/3023439/202303/3023439-20230308000059059-1198883906.png[/img]
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11. 可以看到我们成功注入到了user-agent。
  12. 这里我们注意:(1)因为我们设置了[b]Content-Length[/b]的值为[b]13[/b],所以超出13个字符以外的都会被服务器丢弃,因此token=ctfshow后面的内容都会被丢弃,我们不需要管。
  13. (2)设置[b]User-Agent[/b]时,应写成[b]user_agent, [/b]不然就会出错
  14. (3)因为$ua中用到了\r\n这两个换行符,因此要用双引号包裹
  15. (4)HTTP请求头之间的参数用一组\r\n分割即可
  16. (5)HTTP请求头与POSTDATA之间要用两个\r\n分割。
  17.  
  18. 所以我们构造如下:
  19. [code]
复制代码
 
 
 
最后在877.php中找flag就可以了。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表