web259
- flag.php
- <?php
- $xff = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
- array_pop($xff);
- $ip = array_pop($xff);
- if($ip!=='127.0.0.1'){
- die('error');
- }else{
- $token = $_POST['token'];
- if($token=='ctfshow'){
- file_put_contents('flag.txt',$flag);
- }
- }
复制代码

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