05.二次注入
本文最后更新于522 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

二次注入,可以概括为以下两步:
第一步:插入恶意数据 进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。
第二步:引用恶意数据 开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。

Pasted image 20241101192637.png

1.先注册
盲猜有admin账号
注册admin’ # 密码123(插入恶意语句)

Pasted image 20241101192813.png

Pasted image 20241101193013.png

登录账号admin’ #

Pasted image 20241101193044.png
Pasted image 20241101193105.png
此时数据库中admin的密码为admin
Pasted image 20241101193431.png

登录后可以修改账号密码为111(代码会误以为修改的是admin的密码)
Pasted image 20241101193210.png

此时数据库中admin的密码改为111
Pasted image 20241101193733.png

Pasted image 20241101193222.png

登录admin密码111
Pasted image 20241101193241.png

成功登录admin
Pasted image 20241101193256.png

解析

比如前面所注册的admin ‘#账号,在注册时,后端对其进行了转义( addslashes() 或者mysql_real_escape_string和mysql_escape_string 等),’#被转义成了其他的东西,所以一次注入无效。
但是在保存进数据库的时候,还是admin ‘#。

那么修改密码时的语句如下:
update users set password=’123′ where username=’admin ‘#’

所以你以为修改的是admin '#的账号,但是数据库理解成要修改密码的账号是admin

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇